/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package oms3.io; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.Iterator; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * * @author Olaf David */ public class TableTest { File r; @Before public void init() throws FileNotFoundException { r = new File(this.getClass().getResource("test.csv").getFile()); } @After public void done() throws IOException { } @Test // @Req(id=1003) public void testTableInfo() throws Exception { CSTable t = DataIO.table(r, "Olaf"); Assert.assertNotNull(t); Assert.assertEquals("Olaf", t.getName()); Assert.assertEquals("temp", t.getColumnName(1)); Assert.assertEquals("precip", t.getColumnName(2)); Assert.assertEquals("today", t.getInfo().get("created")); Assert.assertEquals("this smsmss.", t.getInfo().get("description")); Assert.assertEquals(2, t.getInfo().size()); Assert.assertEquals("F", t.getColumnInfo(1).get("unit")); Assert.assertEquals(1, t.getColumnInfo(1).size()); Assert.assertEquals("mm", t.getColumnInfo(2).get("unit")); Assert.assertEquals(1, t.getColumnInfo(2).size()); } @Test //@Req(id=1004) public void testTableLayout() throws Exception { CSTable t = DataIO.table(r, "Olaf"); Assert.assertNotNull(t); Assert.assertEquals(2, t.getColumnCount()); int rows = 0; for (String[] row : t.rows()) { rows++; Assert.assertEquals(3, row.length); } Assert.assertEquals(5, rows); } @Test // @Req(id=1004) public void testTableName() throws Exception { CSTable t = DataIO.table(r, "Olaf"); Assert.assertNotNull(t); Assert.assertEquals("Olaf", t.getName()); } @Test public void testFirstTable() throws Exception { CSTable t = DataIO.table(r, null); Assert.assertNotNull(t); Assert.assertEquals(t.getName(), "Olaf"); } @Test public void testTableData() throws Exception { CSTable t = DataIO.table(r, "Olaf"); Assert.assertNotNull(t); Iterator<String[]> rows = t.rows().iterator(); Assert.assertNotNull(rows); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"1", "2.4", "3.5"}, rows.next()); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"2", "2.4", "2.5"}, rows.next()); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"3", "4.7", "4.1"}, rows.next()); Assert.assertTrue(rows.hasNext()); } @Test public void testTableDataOffset() throws Exception { CSTable t = DataIO.table(r, "Olaf"); Assert.assertNotNull(t); Iterator<String[]> rows = t.rows(2).iterator(); Assert.assertNotNull(rows); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"3", "4.7", "4.1"}, rows.next()); Assert.assertTrue(rows.hasNext()); } @Test public void testtwoTables() throws Exception { CSTable t = DataIO.table(r, "Olaf"); Assert.assertNotNull(t); Iterator<String[]> rows = t.rows().iterator(); Assert.assertNotNull(rows); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"1", "2.4", "3.5"}, rows.next()); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"2", "2.4", "2.5"}, rows.next()); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"3", "4.7", "4.1"}, rows.next()); Assert.assertTrue(rows.hasNext()); } @Test public void testSkip() throws Exception { CSTable t = DataIO.table(r, "EFCarson"); Assert.assertNotNull(t); Iterator<String[]> rows = t.rows().iterator(); Assert.assertNotNull(rows); Assert.assertTrue(rows.hasNext()); Assert.assertEquals("84.0", rows.next()[2]); Assert.assertTrue(rows.hasNext()); ((TableIterator) rows).skip(5); Assert.assertEquals("78.0", rows.next()[2]); ((TableIterator) rows).skip(10); Assert.assertEquals("99.0", rows.next()[2]); ((TableIterator) rows).skip(1); Assert.assertEquals("96.0", rows.next()[2]); Assert.assertTrue(rows.hasNext()); } // @Test public void testTableCol() throws Exception { CSTable t = DataIO.table(r, "Olaf"); Assert.assertNotNull(t); Double[] vals = DataIO.getColumnDoubleValues(t, "precip"); Assert.assertEquals(5, vals.length); Assert.assertEquals(3.5, vals[0], 0); Assert.assertEquals(2.5, vals[1], 0); Assert.assertEquals(4.1, vals[2], 0); Assert.assertEquals(4.2, vals[3], 0); Assert.assertEquals(4.3, vals[4], 0); } @Test public void testCreateTable() { MemoryTable mt = new MemoryTable(); mt.setName("MyTable"); mt.getInfo().put("table_metadata", "here"); mt.getInfo().put("table_metadata1", "here_too"); mt.setColumns(new String[] { "c1", "c2", "c3", "c4"}); mt.getColumnInfo(1).put("unit", "C"); mt.getColumnInfo(2).put("unit", "F"); mt.getColumnInfo(3).put("unit", ""); mt.getColumnInfo(4).put("unit", ""); mt.addRow(new Object[] { "1", "2","3", "4"}); mt.addRow(new Object[] { "1", "2","3", "4"}); mt.addRow(new Object[] { "1", "2","3", "4"}); mt.addRow("1", "2","3", "4v"); // DataIO.print(mt, new PrintWriter(System.out)); } @Test public void testAddTable() throws IOException { MemoryTable mt = new MemoryTable(); mt.setName("MyTable"); mt.getInfo().put("table_metadata", "here"); mt.getInfo().put("created", "today"); mt.setColumns(new String[] { "c1", "c2", "c3", "c4"}); mt.getColumnInfo(1).put("unit", "C"); mt.getColumnInfo(2).put("unit", "F"); mt.getColumnInfo(3).put("unit", ""); mt.getColumnInfo(4).put("unit", ""); mt.addRow(new Object[] { "1", "2","3", "4"}); mt.addRow(new Object[] { "1", "2","3", "4"}); CSTable t = DataIO.extractColumns(mt, "c2", "c3"); Assert.assertEquals("MyTable", t.getName()); Assert.assertEquals("c2", t.getColumnName(1)); Assert.assertEquals("c3", t.getColumnName(2)); Assert.assertEquals("today", t.getInfo().get("created")); Iterator<String[]> rows = t.rows().iterator(); Assert.assertNotNull(rows); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"0", "2", "3"}, rows.next()); Assert.assertTrue(rows.hasNext()); Assert.assertArrayEquals(new String[]{"1", "2", "3"}, rows.next()); Assert.assertFalse(rows.hasNext()); } // // //// @Test public void testStations() throws Exception { File climateInput = new File("c:/tmp/clim_data_test.csv"); int staid; String staname; String state; double lng; double lat; int elev; CSTable table = DataIO.table(climateInput, "Data for met test"); Iterator<String[]> inp = table.rows().iterator(); while (inp.hasNext()) { String[] row = inp.next(); System.out.println(Arrays.toString(row)); staid = Integer.parseInt(row[0]); staname = row[1]; state = row[2]; lng = Double.parseDouble(row[3]); lat = Double.parseDouble(row[4]); elev = Integer.parseInt(row[5]); } } // public static void main(String[] args) throws Exception { // Reader r = new FileReader(TableTest.class.getResource("test.csv").getFile()); // Table t = DataIO.table(r, "Olaf"); // TableModel m = Utils.tableModel(t); // JFrame f = new JFrame(); // f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // f.getContentPane().setLayout(new BorderLayout()); // f.getContentPane().add(new JScrollPane(new JTable(m)), BorderLayout.CENTER); // f.pack(); // f.setSize(300, 200); // f.setVisible(true); // } }