package marubinotto.util.rdb; import static org.junit.Assert.*; import marubinotto.util.RdbUtils; import org.apache.commons.lang.ArrayUtils; import org.junit.Test; /** * @see RdbUtils#merge(String[][], String[][]) */ public class MergeDataSetTest { @Test public void mergeEmptyDataSet() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name"}, {"1", "Daisuke"} }, new String[0][0]), new Object[][]{ {"id", "name"}, {"1", "Daisuke"} } ); } @Test public void addField() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name"}, {"1", "Daisuke"} }, new Object[][]{ {"message"}, {"Hello!"} }), new Object[][]{ {"id", "name", "message"}, {"1", "Daisuke", "Hello!"} } ); } @Test public void mergeToEmpty() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[0][0], new Object[][]{ {"id", "name"}, {"1", "Daisuke"} }), new Object[][]{ {"id", "name"}, {"1", "Daisuke"} } ); } @Test public void modifyField() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name"}, {"1", "Daisuke"} }, new Object[][]{ {"name"}, {"Akane"} }), new Object[][]{ {"id", "name"}, {"1", "Akane"} } ); } @Test public void addAndModifyField() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name"}, {"1", "Daisuke"} }, new Object[][]{ {"name", "message"}, {"Akane", "I'm not a pig!"} }), new Object[][]{ {"id", "name", "message"}, {"1", "Akane", "I'm not a pig!"} } ); } @Test public void addRow() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name"}, {"1", "Daisuke"} }, new Object[][]{ {"id", "name"}, {}, // placeholder for the first record {"2", "Akane"} }), new Object[][]{ {"id", "name"}, {"1", "Daisuke"}, {"2", "Akane"} } ); } @Test public void addRowMissingField() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name", "message"}, {"1", "Daisuke", "Hello!"} }, new Object[][]{ {"id", "name"}, {}, // placeholder for the first record {"2", "Akane"} }), new Object[][]{ {"id", "name", "message"}, {"1", "Daisuke", "Hello!"}, {"2", "Akane", null} } ); } @Test public void addRowWithAdditionalField() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name"}, {"1", "Daisuke"} }, new Object[][]{ {"id", "name", "message"}, {}, // placeholder for the first record {"2", "Akane", "I'm not a pig!"} }), new Object[][]{ {"id", "name", "message"}, {"1", "Daisuke", null}, {"2", "Akane", "I'm not a pig!"} } ); } @Test public void modifyFieldOfTwoRows() throws Exception { ensureMergedDataSetIsAsExpected( RdbUtils.merge( new Object[][]{ {"id", "name"}, {"1", "Daisuke"}, {"2", "Akane"} }, new Object[][]{ {"name"}, {"Amy"}, {"Doug"} }), new Object[][]{ {"id", "name"}, {"1", "Amy"}, {"2", "Doug"} } ); } // Private private void ensureMergedDataSetIsAsExpected( Object[][] actual, Object[][] expected) throws Exception { assertEquals( ArrayUtils.toString(expected), ArrayUtils.toString(actual)); } }