-
-
Notifications
You must be signed in to change notification settings - Fork 2k
/
DataTableTest.java
132 lines (111 loc) · 4.81 KB
/
DataTableTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package cucumber.runtime.table;
import cucumber.api.DataTable;
import cucumber.runtime.CucumberException;
import cucumber.runtime.xstream.LocalizedXStreams;
import gherkin.formatter.model.Comment;
import gherkin.formatter.model.DataTableRow;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotSame;
public class DataTableTest {
@Test
public void rawShouldHaveThreeColumnsAndTwoRows() {
List<List<String>> raw = createSimpleTable().raw();
assertEquals("Rows size", 2, raw.size());
for (List<String> list : raw) {
assertEquals("Cols size: " + list, 3, list.size());
}
}
@Test
public void transposedRawShouldHaveTwoColumnsAndThreeRows() {
List<List<String>> raw = createSimpleTable().transpose().raw();
assertEquals("Rows size", 3, raw.size());
for (List<String> list : raw) {
assertEquals("Cols size: " + list, 2, list.size());
}
}
@Test(expected=CucumberException.class)
public void canNotSupportNonRectangularTablesMissingColumn() {
List<List<String>> raw = createNonRectangularTableMissingColumn().raw();
}
@Test(expected=CucumberException.class)
public void canNotSupportNonRectangularTablesExceedingColumn() {
List<List<String>> raw = createNonRectangularTableExceedingColumn().raw();
}
@Test
public void canCreateTableFromListOfListOfString() {
DataTable dataTable = createSimpleTable();
DataTable other = dataTable.toTable(dataTable.raw());
assertEquals("" +
" | one | four | seven |\n" +
" | 4444 | 55555 | 666666 |\n",
other.toString());
}
@Test
public void canCreateTableFromListOfListOfStringWithoutOtherTable() {
DataTable dataTable = createSimpleTable();
DataTable other = DataTable.create(dataTable.raw());
assertEquals("" +
" | one | four | seven |\n" +
" | 4444 | 55555 | 666666 |\n",
other.toString());
}
@Test(expected = UnsupportedOperationException.class)
public void raw_row_is_immutable() {
createSimpleTable().raw().remove(0);
}
@Test(expected = UnsupportedOperationException.class)
public void raw_col_is_immutable() {
createSimpleTable().raw().get(0).remove(0);
}
@Test(expected = UnsupportedOperationException.class)
public void asMaps_is_immutable() {
createSimpleTable().asMaps().remove(0);
}
@Test
public void two_identical_tables_are_considered_equal() {
assertEquals(createSimpleTable(), createSimpleTable());
assertEquals(createSimpleTable().hashCode(), createSimpleTable().hashCode());
}
@Test
public void two_identical_transposed_tables_are_considered_equal() {
assertEquals(createSimpleTable().transpose(), createSimpleTable().transpose());
assertEquals(createSimpleTable().transpose().hashCode(), createSimpleTable().transpose().hashCode());
}
@Test
public void two_different_tables_are_considered_non_equal() {
assertFalse(createSimpleTable().equals(createTable(asList("one"))));
assertNotSame(createSimpleTable().hashCode(), createTable(asList("one")).hashCode());
}
@Test
public void two_different_transposed_tables_are_considered_non_equal() {
assertFalse(createSimpleTable().transpose().equals(createTable(asList("one")).transpose()));
assertNotSame(createSimpleTable().transpose().hashCode(), createTable(asList("one")).transpose().hashCode());
}
public DataTable createSimpleTable() {
return createTable(asList("one", "four", "seven"), asList("4444", "55555", "666666"));
}
public DataTable createNonRectangularTableMissingColumn() {
return createTable(asList("one", "four", "seven"),
asList("a1", "a4444"),
asList("b1"));
}
public DataTable createNonRectangularTableExceedingColumn() {
return createTable(asList("one", "four", "seven"),
asList("a1", "a4444", "b7777777", "zero"));
}
private DataTable createTable(List<String>... rows) {
List<DataTableRow> simpleRows = new ArrayList<DataTableRow>();
for (int i = 0; i < rows.length; i++) {
simpleRows.add(new DataTableRow(new ArrayList<Comment>(), rows[i], i + 1));
}
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
LocalizedXStreams.LocalizedXStream xStream = new LocalizedXStreams(classLoader).get(Locale.US);
return new DataTable(simpleRows, new TableConverter(xStream, null));
}
}