package jp.terasoluna.fw.file.dao.standard; import static org.junit.Assert.assertEquals; import java.net.URL; import java.util.HashMap; import java.util.Map; import org.junit.Test; import jp.terasoluna.fw.file.dao.FileLineIterator; import org.springframework.test.util.ReflectionTestUtils; import static org.junit.Assert.assertSame; /** * {@link jp.terasoluna.fw.file.dao.standard.VariableFileQueryDAO} クラスのテスト。 * <p> * <h4>【クラスの概要】</h4> 可変長ファイル読取用のFileLineIterator生成クラス。 * <p> * @see jp.terasoluna.fw.file.dao.standard.VariableFileQueryDAO */ public class VariableFileQueryDAOTest { /** * testExcecute01() <br> * <br> * (正常系) <br> * 観点:E <br> * <br> * 入力値:(引数) fileName:VariableFileQueryDAO_execute01.txt<br> * データを持たないファイルのパス<br> * (引数) clazz:VariableFileQueryDAO_Stub01<br> * 空実装<br> * (状態) AbstractFileQueryDAO.columnParserMap:以下の要素を持つMap<String, ColumnParser>インスタンス<br> * ・"java.lang.String"=NullColumnParser.java<br> * <br> * 期待値:(戻り値) FileLineIterator:VariableFileLineIteratorのインスタンス<br> * (状態変化) VariableFileLineIterator:コンストラクタが1回呼ばれること。<br> * パラメータに引数が渡されること。<br> * <br> * 引数がnullではない場合、VariableFileLineIteratorのインスタンスが取得できること。<br> * このメソッドは、VariableFileLineWriterのコンストラクタを呼び出すだけなので、引数のバリエーションは一つしか行わない。 <br> * @throws Exception このメソッドで発生した例外 */ @Test public void testExcecute01() throws Exception { // テスト対象のインスタンス化 VariableFileQueryDAO fileQueryDAO = new VariableFileQueryDAO(); // 引数の設定 URL url = this.getClass().getResource("File_Empty.txt"); String fileName = url.getPath(); Class<VariableFileQueryDAO_Stub01> clazz = VariableFileQueryDAO_Stub01.class; // 前提条件の設定 Map<String, ColumnParser> columnParserMap = new HashMap<String, ColumnParser>(); columnParserMap.put("java.lang.String", new NullColumnParser()); ReflectionTestUtils.setField(fileQueryDAO, "columnParserMap", columnParserMap); // テスト実施 FileLineIterator<VariableFileQueryDAO_Stub01> fileLineIterator = fileQueryDAO .execute(fileName, VariableFileQueryDAO_Stub01.class); // 返却値の確認 assertEquals(VariableFileLineIterator.class, fileLineIterator .getClass()); // 状態変化の確認 assertEquals(fileName, ReflectionTestUtils.getField(fileLineIterator, "fileName")); assertSame(clazz, ReflectionTestUtils.getField(fileLineIterator, "clazz")); assertSame(columnParserMap, ReflectionTestUtils.getField( fileLineIterator, "columnParserMap")); } }