1 package org.djutils.data;
2
3 import static org.junit.Assert.assertArrayEquals;
4 import static org.junit.Assert.assertEquals;
5 import static org.junit.Assert.assertFalse;
6 import static org.junit.Assert.assertTrue;
7
8 import java.io.File;
9 import java.io.IOException;
10 import java.util.ArrayList;
11 import java.util.Iterator;
12 import java.util.List;
13
14 import org.djutils.data.csv.TSVData;
15 import org.djutils.data.serialization.TextSerializationException;
16 import org.junit.Test;
17
18
19
20
21
22
23
24
25
26
27
28
29 public class TestTSVData
30 {
31
32
33
34
35
36 @Test
37 public void testreadWriteTSV() throws IOException, TextSerializationException
38 {
39 File tempDataFile = File.createTempFile("testdata", ".tsv");
40 File tempMetaDataFile = File.createTempFile("testmetadata", ".tsv");
41 tempDataFile.deleteOnExit();
42 tempMetaDataFile.deleteOnExit();
43
44 DataColumn<Integer> column1 = new SimpleDataColumn<>("time", "time, rounded to second [s]", int.class);
45 DataColumn<Double> column2 = new SimpleDataColumn<>("value", "measured value [m]", double.class);
46 DataColumn<String> column3 = new SimpleDataColumn<>("remark", "remark about the measurement", String.class);
47 List<DataColumn<?>> columns = new ArrayList<>();
48 columns.add(column1);
49 columns.add(column2);
50 columns.add(column3);
51 ListDataTable table1 = new ListDataTable("tableId", "tableDescription", columns);
52 table1.addRecord(new Object[] {1, 5.0, "normal"});
53 table1.addRecord(new Object[] {2, 10.0, "normal"});
54 table1.addRecord(new Object[] {3, 15.0, "normal"});
55 table1.addRecord(new Object[] {4, 20.0, "abnormal"});
56 TSVData.writeData(tempDataFile.getAbsolutePath(), tempMetaDataFile.getAbsolutePath(), table1);
57
58 DataTable table2 = TSVData.readData(tempDataFile.getAbsolutePath(), tempMetaDataFile.getAbsolutePath());
59 assertTrue(table2 instanceof ListDataTable);
60 assertEquals(table1.getId(), table2.getId());
61 assertEquals(table1.getDescription(), table2.getDescription());
62 assertEquals(table1.getNumberOfColumns(), table2.getNumberOfColumns());
63 assertArrayEquals(table1.getColumnIds(), table2.getColumnIds());
64 assertArrayEquals(table1.getColumnDescriptions(), table2.getColumnDescriptions());
65 assertArrayEquals(table1.getColumnDataTypes(), table2.getColumnDataTypes());
66 assertArrayEquals(table1.getColumnDataTypeStrings(), table2.getColumnDataTypeStrings());
67
68 Iterator<DataRecord> it1 = table1.iterator();
69 Iterator<DataRecord> it2 = table2.iterator();
70 while (it1.hasNext() && it2.hasNext())
71 {
72 DataRecord r1 = it1.next();
73 DataRecord r2 = it2.next();
74 assertArrayEquals(r1.getValues(), r2.getValues());
75 }
76 assertFalse(it1.hasNext());
77 assertFalse(it2.hasNext());
78 }
79 }