/* * Copyright 2009-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.orangesignal.csv; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import java.io.StringReader; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.sql.Types; import java.util.regex.Pattern; import org.junit.BeforeClass; import org.junit.Test; /** * {@link CsvResultSetMetaData} クラスの単体テストです。 * * @author Koji Sugisawa */ public class CsvResultSetMetaDataTest { private static CsvConfig cfg; @BeforeClass public static void setUpBeforeClass() throws Exception { cfg = new CsvConfig(',', '"', '\\'); cfg.setNullString("NULL"); cfg.setBreakString("\n"); cfg.setIgnoreTrailingWhitespaces(true); cfg.setIgnoreLeadingWhitespaces(true); cfg.setIgnoreEmptyLines(true); cfg.setIgnoreLinePatterns(Pattern.compile("^#.*$")); } @Test public void test() throws Exception { final CsvReader reader = new CsvReader(new StringReader("id\r\nNULL"), cfg); try { final CsvResultSetMetaData meta = new CsvResultSetMetaData(reader); assertThat(meta.getColumnCount(), is(1)); assertThat(meta.isAutoIncrement(1), is(false)); assertThat(meta.isCaseSensitive(1), is(true)); assertThat(meta.isSearchable(1), is(false)); assertThat(meta.isCurrency(1), is(false)); assertThat(meta.isNullable(1), is(ResultSetMetaData.columnNullableUnknown)); assertThat(meta.isSigned(1), is(false)); assertThat(meta.getColumnDisplaySize(1), is(Integer.MAX_VALUE)); assertThat(meta.getColumnLabel(1), is("id")); assertThat(meta.getColumnName(1), is("id")); assertThat(meta.getSchemaName(1), is("")); assertThat(meta.getPrecision(1), is(0)); assertThat(meta.getScale(1), is(0)); assertThat(meta.getTableName(1), is("")); assertThat(meta.getCatalogName(1), is("")); assertThat(meta.getColumnType(1), is(Types.VARCHAR)); assertThat(meta.getColumnTypeName(1), is(String.class.getName())); assertThat(meta.isReadOnly(1), is(true)); assertThat(meta.isWritable(1), is(false)); assertThat(meta.isDefinitelyWritable(1), is(false)); assertThat(meta.getColumnClassName(1), is(String.class.getName())); } finally { reader.close(); } } @Test(expected = SQLException.class) public void testGetColumnNameSQLException1() throws Exception { final CsvReader reader = new CsvReader(new StringReader("id\r\nNULL"), cfg); try { final CsvResultSetMetaData meta = new CsvResultSetMetaData(reader); meta.getColumnName(0); } finally { reader.close(); } } @Test(expected = SQLException.class) public void testGetColumnNameSQLException2() throws Exception { final CsvReader reader = new CsvReader(new StringReader("id\r\nNULL"), cfg); try { final CsvResultSetMetaData meta = new CsvResultSetMetaData(reader); meta.getColumnName(meta.getColumnCount() + 1); } finally { reader.close(); } } @Test(expected = SQLFeatureNotSupportedException.class) public void testUnwrap() throws Exception { final CsvReader reader = new CsvReader(new StringReader("id\r\nNULL"), cfg); try { final CsvResultSetMetaData meta = new CsvResultSetMetaData(reader); meta.unwrap(this.getClass()); } finally { reader.close(); } } @Test(expected = SQLFeatureNotSupportedException.class) public void testIsWrapperFor() throws Exception { final CsvReader reader = new CsvReader(new StringReader("id\r\nNULL"), cfg); try { final CsvResultSetMetaData meta = new CsvResultSetMetaData(reader); meta.isWrapperFor(this.getClass()); } finally { reader.close(); } } }