/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * 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 org.seasar.extension.jdbc.gen.internal.data; import java.io.BufferedWriter; import java.io.File; import java.io.StringWriter; import org.junit.Before; import org.junit.Test; import org.seasar.extension.jdbc.gen.desc.ColumnDesc; import org.seasar.extension.jdbc.gen.desc.TableDesc; import org.seasar.extension.jdbc.gen.internal.dialect.StandardGenDialect; import org.seasar.extension.jdbc.gen.internal.sqltype.IntegerType; import org.seasar.extension.jdbc.gen.internal.sqltype.VarcharType; import org.seasar.framework.mock.sql.MockColumnMetaData; import org.seasar.framework.mock.sql.MockResultSet; import org.seasar.framework.mock.sql.MockResultSetMetaData; import org.seasar.framework.util.ArrayMap; import static org.junit.Assert.*; /** * @author taedium * */ public class DumpFileWriterTest { private String separator; private StringWriter stringWriter; private BufferedWriter bufferedWriter; private DumpFileWriter dumpFileWriter; /** * * @throws Exception */ @Before public void setUp() throws Exception { separator = System.getProperty("line.separator"); stringWriter = new StringWriter(); bufferedWriter = new BufferedWriter(stringWriter); ColumnDesc columnDesc1 = new ColumnDesc(); columnDesc1.setName("aaa"); columnDesc1.setSqlType(new VarcharType()); ColumnDesc columnDesc2 = new ColumnDesc(); columnDesc2.setName("bbb"); columnDesc2.setSqlType(new VarcharType()); ColumnDesc columnDesc3 = new ColumnDesc(); columnDesc3.setName("ccc"); columnDesc3.setSqlType(new IntegerType()); TableDesc tableDesc = new TableDesc(); tableDesc.addColumnDesc(columnDesc1); tableDesc.addColumnDesc(columnDesc2); tableDesc.addColumnDesc(columnDesc3); dumpFileWriter = new DumpFileWriter(new File("file"), tableDesc, new StandardGenDialect(), "UTF-8", ',') { @Override protected BufferedWriter createBufferdWriter() { return bufferedWriter; } }; } /** * * @throws Exception */ @Test public void testWriteHeaderOnly() throws Exception { dumpFileWriter.writeHeaderOnly(); bufferedWriter.flush(); assertEquals(1, dumpFileWriter.getLineNumber()); assertEquals("\"aaa\",\"bbb\",\"ccc\"" + separator, stringWriter .toString()); } /** * * @throws Exception */ @Test public void testWrite_javaColumn_gt_dbColumn() throws Exception { MockColumnMetaData columnMetaData1 = new MockColumnMetaData(); columnMetaData1.setColumnLabel("aaa"); MockColumnMetaData columnMetaData2 = new MockColumnMetaData(); columnMetaData2.setColumnLabel("ccc"); MockResultSetMetaData metaData = new MockResultSetMetaData(); metaData.addColumnMetaData(columnMetaData1); metaData.addColumnMetaData(columnMetaData2); MockResultSet rs = new MockResultSet(); rs.setMockMetaData(metaData); ArrayMap row = new ArrayMap(); row.put("aaa", "hoge"); row.put("ccc", 100); rs.addRowData(row); row = new ArrayMap(); row.put("aaa", "f\"oo"); row.put("ccc", 200); rs.addRowData(row); dumpFileWriter.writeRows(rs); bufferedWriter.flush(); assertEquals(3, dumpFileWriter.getLineNumber()); assertEquals("\"aaa\",\"bbb\",\"ccc\"" + separator + "\"hoge\",,\"100\"" + separator + "\"f\"\"oo\",,\"200\"" + separator, stringWriter.toString()); } /** * * @throws Exception */ @Test public void testWriteHeader_javaColumn_lt_dbColumn() throws Exception { MockColumnMetaData columnMetaData1 = new MockColumnMetaData(); columnMetaData1.setColumnLabel("aaa"); MockColumnMetaData columnMetaData2 = new MockColumnMetaData(); columnMetaData2.setColumnLabel("bbb"); MockColumnMetaData columnMetaData3 = new MockColumnMetaData(); columnMetaData3.setColumnLabel("ccc"); MockColumnMetaData columnMetaData4 = new MockColumnMetaData(); columnMetaData4.setColumnLabel("ddd"); MockResultSetMetaData metaData = new MockResultSetMetaData(); metaData.addColumnMetaData(columnMetaData1); metaData.addColumnMetaData(columnMetaData2); metaData.addColumnMetaData(columnMetaData3); metaData.addColumnMetaData(columnMetaData4); MockResultSet rs = new MockResultSet(); rs.setMockMetaData(metaData); ArrayMap row = new ArrayMap(); row.put("aaa", "hoge"); row.put("bbb", "bar"); row.put("ccc", 100); row.put("ddd", 200); rs.addRowData(row); row = new ArrayMap(); row.put("aaa", "f\"oo"); row.put("bbb", "baz"); row.put("ccc", 200); row.put("ddd", 300); rs.addRowData(row); dumpFileWriter.writeRows(rs); bufferedWriter.flush(); assertEquals(3, dumpFileWriter.getLineNumber()); assertEquals("\"aaa\",\"bbb\",\"ccc\"" + separator + "\"hoge\",\"bar\",\"100\"" + separator + "\"f\"\"oo\",\"baz\",\"200\"" + separator, stringWriter .toString()); } }