Skip to content

Commit d64ced9

Browse files
committed
Updated unit tests.
1 parent 6506e01 commit d64ced9

File tree

4 files changed

+95
-45
lines changed

4 files changed

+95
-45
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@
8484
<version>${junit.junit.version}</version>
8585
<scope>test</scope>
8686
</dependency>
87+
<dependency>
88+
<groupId>org.mockito</groupId>
89+
<artifactId>mockito-core</artifactId>
90+
<version>2.2.0</version>
91+
<scope>test</scope>
92+
</dependency>
8793
</dependencies>
8894
<build>
8995
<pluginManagement>
Lines changed: 51 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
package de.westemeyer.plugins.multiselect;
22

3-
import org.junit.jupiter.api.Assertions;
43
import org.junit.jupiter.api.Test;
54

5+
import java.util.ArrayDeque;
6+
import java.util.Collections;
7+
import java.util.Queue;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
import static org.mockito.ArgumentMatchers.any;
11+
import static org.mockito.Mockito.*;
12+
613
class MultiselectDecisionItemTest {
714
/** Input to be used in tests. */
815
private static final MultiselectDecisionTree INPUT = MultiselectDecisionTree.parse("H,Type,Sport,Country,Team\nV,SELECTED_TYPE,SELECTED_SPORT,SELECTED_COUNTRY,SELECTED_TEAM\nC,Water,Wakeboarding,Germany,WSC Duisburg Rheinhausen\nC,Water,Wakeboarding,Germany,WSC Paderborn\nC,Water,Wakeboarding,Austria,WSC Wien\nT,,,,Alternative team name\nC,Water,Waterball,Germany,Waterball Team\nC,Water,Surfing,England,Bristol Surf Team\nC,Ball,Football,France,Paris St. Germain\nT,,,,Alternative team name\nC,Ball,Handball,Germany,THW Kiel\n");
@@ -17,71 +24,90 @@ class MultiselectDecisionItemTest {
1724
private static final String NEW_VALUE = "New value";
1825

1926
@Test
20-
void getDisplayLabel() throws Exception {
27+
void getDisplayLabel() {
2128
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 1, 0, 0);
22-
Assertions.assertEquals(ALTERNATIVE_TEAM_NAME, item.getDisplayLabel());
29+
assertEquals(ALTERNATIVE_TEAM_NAME, item.getDisplayLabel());
2330
item = INPUT.getItemByCoordinates(0, 0, 0, 0);
24-
Assertions.assertEquals(WSC_DUISBURG_RHEINHAUSEN, item.getDisplayLabel());
31+
assertEquals(WSC_DUISBURG_RHEINHAUSEN, item.getDisplayLabel());
32+
item = new MultiselectDecisionItem(null, null, null);
33+
assertNull(item.getDisplayLabel());
2534
}
2635

2736
@Test
28-
void getParent() throws Exception {
37+
void getParent() {
2938
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 0);
3039
item = item.getParent();
31-
Assertions.assertNotNull(item);
32-
Assertions.assertNull(item.getParent());
40+
assertNotNull(item);
41+
assertNull(item.getParent());
42+
}
43+
44+
@Test
45+
void nvl() {
46+
assertEquals("MultiselectDecisionItem{label='', value='null', children=[]}", new MultiselectDecisionItem(null, null, null).toString());
47+
assertEquals("MultiselectDecisionItem{label='label', value='null', children=[]}", new MultiselectDecisionItem(null, "label", null).toString());
3348
}
3449

3550
@Test
36-
void isRoot() throws Exception {
51+
void isRoot() {
3752
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 0);
38-
Assertions.assertFalse(item.isRoot());
53+
assertFalse(item.isRoot());
3954
item = item.getParent();
40-
Assertions.assertTrue(item.isRoot());
55+
assertTrue(item.isRoot());
4156
}
4257

4358
@Test
44-
void getChildren() throws Exception {
59+
void getChildren() {
4560
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 0, 0);
4661
item = item.getChildren().get(0);
47-
Assertions.assertEquals(0, item.getChildren().size());
62+
assertEquals(0, item.getChildren().size());
4863
}
4964

5065
@Test
51-
void isLeaf() throws Exception {
66+
void isLeaf() {
5267
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 0, 0);
53-
Assertions.assertFalse(item.isLeaf());
68+
assertFalse(item.isLeaf());
5469
item = item.getChildren().get(0);
55-
Assertions.assertTrue(item.isLeaf());
70+
assertTrue(item.isLeaf());
5671
}
5772

5873
@Test
59-
void getLabel() throws Exception {
74+
void getLabel() {
6075
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 0, 0, 0);
61-
Assertions.assertEquals("", item.getLabel());
76+
assertEquals("", item.getLabel());
6277
item = INPUT.getItemByCoordinates(0, 1, 0, 0);
63-
Assertions.assertEquals(ALTERNATIVE_TEAM_NAME, item.getLabel());
78+
assertEquals(ALTERNATIVE_TEAM_NAME, item.getLabel());
6479
}
6580

6681
@Test
67-
void value() throws Exception {
82+
void value() {
6883
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 0, 0, 0);
69-
Assertions.assertEquals(WSC_DUISBURG_RHEINHAUSEN, item.getValue());
84+
assertEquals(WSC_DUISBURG_RHEINHAUSEN, item.getValue());
7085
item.setValue(NEW_VALUE);
71-
Assertions.assertEquals(NEW_VALUE, item.getValue());
86+
assertEquals(NEW_VALUE, item.getValue());
7287
}
7388

7489
@Test
75-
void testToString() throws Exception {
90+
void testToString() {
7691
MultiselectDecisionItem item = INPUT.getItemByCoordinates(0, 0, 0, 0);
77-
Assertions.assertEquals("MultiselectDecisionItem{label='', value='WSC Duisburg Rheinhausen', children=[]}", item.toString());
92+
assertEquals("MultiselectDecisionItem{label='', value='WSC Duisburg Rheinhausen', children=[]}", item.toString());
7893
}
7994

8095
@Test
8196
void testSetter() {
8297
MultiselectDecisionItem item = new MultiselectDecisionItem(null, "Hello", "Value");
83-
Assertions.assertEquals("Hello", item.getLabel());
98+
assertEquals("Hello", item.getLabel());
8499
item.setLabel("Hullo");
85-
Assertions.assertEquals("Hullo", item.getLabel());
100+
assertEquals("Hullo", item.getLabel());
101+
}
102+
103+
@Test
104+
void visitSubTree() throws Exception {
105+
MultiselectDecisionItemVisitor visitor = (item, column) -> false;
106+
MultiselectVariableDescriptor descriptor = new MultiselectVariableDescriptor("", "", 0);
107+
Queue<MultiselectVariableDescriptor> descriptors = new ArrayDeque<>();
108+
descriptors.add(descriptor);
109+
MultiselectDecisionItem item = mock(MultiselectDecisionItem.class);
110+
MultiselectDecisionItem.visitSubTree(visitor, Collections.singletonList(item), descriptors);
111+
verify(item, times(0)).visitSubTree(any(), any());
86112
}
87113
}

src/test/java/de/westemeyer/plugins/multiselect/MultiselectDecisionTreeTest.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import de.westemeyer.plugins.multiselect.parser.ConfigSerialization;
44
import de.westemeyer.plugins.multiselect.parser.CsvWriter;
55
import edu.umd.cs.findbugs.annotations.NonNull;
6-
import org.junit.jupiter.api.Assertions;
76
import org.junit.jupiter.api.Test;
87
import org.junit.jupiter.params.ParameterizedTest;
98
import org.junit.jupiter.params.provider.CsvSource;
@@ -17,6 +16,9 @@
1716
import java.util.Map;
1817
import java.util.stream.Collectors;
1918

19+
import static org.junit.jupiter.api.Assertions.assertEquals;
20+
import static org.junit.jupiter.api.Assertions.assertThrows;
21+
2022
class MultiselectDecisionTreeTest {
2123
/** Csv input content for tests. */
2224
private static final String INPUT_CSV = "H,Type,Sport,Country,Team\nV,SELECTED_TYPE,SELECTED_SPORT,SELECTED_COUNTRY,SELECTED_TEAM\nC,Water,Wakeboarding,Germany,WSC Duisburg Rheinhausen\nC,Water,Wakeboarding,Germany,WSC Paderborn\nC,Water,Wakeboarding,Austria,WSC Wien\nT,,,,Alternative team name\nC,Water,Waterball,Germany,Waterball Team\nC,Water,Surfing,England,Bristol Surf Team\nC,Ball,Football,France,Paris St. Germain\nT,,,,Alternative team name\nC,Ball,Handball,Germany,THW Kiel\n";
@@ -39,27 +41,27 @@ void resolveValues() {
3941
Map<String, Integer> selection = new HashMap<>();
4042

4143
Map<String, String> properties = tree.resolveValues(selection);
42-
Assertions.assertEquals(0, properties.size());
44+
assertEquals(0, properties.size());
4345

4446
selection.put("SELECTED_REPOSITORY", 0);
4547
properties = tree.resolveValues(selection);
46-
Assertions.assertEquals(0, properties.size());
48+
assertEquals(0, properties.size());
4749

4850
selection.put(SELECTED_TYPE, 0);
4951
selection.put(SELECTED_SPORT, 0);
5052
selection.put(SELECTED_COUNTRY, 1);
5153
selection.put(SELECTED_TEAM, 1);
52-
Assertions.assertThrows(IndexOutOfBoundsException.class, () -> tree.resolveValues(selection));
54+
assertThrows(IndexOutOfBoundsException.class, () -> tree.resolveValues(selection));
5355

5456
selection.put(SELECTED_TEAM, 0);
5557
properties = tree.resolveValues(selection);
56-
Assertions.assertEquals(4, properties.size());
57-
Assertions.assertEquals("Water", properties.get(SELECTED_TYPE));
58-
Assertions.assertEquals("Wakeboarding", properties.get(SELECTED_SPORT));
59-
Assertions.assertEquals("Austria", properties.get(SELECTED_COUNTRY));
60-
Assertions.assertEquals("WSC Wien", properties.get(SELECTED_TEAM));
58+
assertEquals(4, properties.size());
59+
assertEquals("Water", properties.get(SELECTED_TYPE));
60+
assertEquals("Wakeboarding", properties.get(SELECTED_SPORT));
61+
assertEquals("Austria", properties.get(SELECTED_COUNTRY));
62+
assertEquals("WSC Wien", properties.get(SELECTED_TEAM));
6163

62-
Assertions.assertEquals(4, tree.getVariableDescriptions().size());
64+
assertEquals(4, tree.getVariableDescriptions().size());
6365
}
6466

6567
@Test
@@ -73,15 +75,22 @@ public void serialize(ConfigSerialization serialization, OutputStream outputStre
7375
}
7476
};
7577

76-
Assertions.assertEquals("", decisionTree.toString());
78+
assertEquals("", decisionTree.toString());
7779
}
7880

7981
@ParameterizedTest
8082
@CsvSource({"0,Water;Ball", "1,Wakeboarding;Waterball;Surfing", "2,Germany;Austria", "3,WSC Duisburg Rheinhausen;WSC Paderborn"})
8183
void initialValuesForColumn(int column, String values) {
8284
MultiselectDecisionTree tree = MultiselectDecisionTree.parse(INPUT_CSV);
8385
List<String> initialValuesForColumn = tree.getInitialValuesForColumn(column).stream().map(MultiselectDecisionItem::getValue).collect(Collectors.toList());
84-
Assertions.assertEquals(Arrays.asList(values.split(";")), initialValuesForColumn);
86+
assertEquals(Arrays.asList(values.split(";")), initialValuesForColumn);
87+
}
88+
89+
@Test
90+
void getInitialValuesForColumn() {
91+
MultiselectDecisionTree tree = MultiselectDecisionTree.parse("");
92+
List<MultiselectDecisionItem> initialValuesForColumn = tree.getInitialValuesForColumn(1);
93+
assertEquals(0, initialValuesForColumn.size());
8594
}
8695

8796
@Test
@@ -96,7 +105,7 @@ public List<MultiselectDecisionItem> getItemList() {
96105
}
97106
};
98107

99-
Assertions.assertEquals(0, decisionTree.getInitialValuesForColumn(0).size());
108+
assertEquals(0, decisionTree.getInitialValuesForColumn(0).size());
100109
}
101110

102111
@Test
@@ -109,7 +118,7 @@ void serializationRoundTripTest() throws Exception {
109118
createItem("Very popular sport", "Wakeboard", createItem(null, "WSC Duisburg Rheinhausen"))));
110119
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
111120
decisionTree.serialize(new CsvWriter(), outputStream);
112-
Assertions.assertEquals("H,Sport,Team\n" +
121+
assertEquals("H,Sport,Team\n" +
113122
"V,SELECTED_SPORT,SELECTED_TEAM\n" +
114123
"C,Tennis,Tennisclub Rumeln-Kaldenhausen e.V.\n" +
115124
"T,,Alternative label\n" +

src/test/java/de/westemeyer/plugins/multiselect/parser/CsvParserTest.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.opencsv.CSVReader;
44
import de.westemeyer.plugins.multiselect.MultiselectDecisionTree;
5-
import org.junit.jupiter.api.Assertions;
65
import org.junit.jupiter.api.Test;
76
import org.junit.jupiter.params.ParameterizedTest;
87
import org.junit.jupiter.params.provider.ValueSource;
@@ -13,6 +12,8 @@
1312
import java.io.IOException;
1413
import java.io.InputStreamReader;
1514

15+
import static org.junit.jupiter.api.Assertions.*;
16+
1617
class CsvParserTest {
1718
/** First input csv for tests. */
1819
private static final String INPUT_CSV = "H,Type,Sport,Country,Team\nV,SELECTED_TYPE,SELECTED_SPORT,SELECTED_COUNTRY,SELECTED_TEAM\nC,Water,Wakeboarding,Germany,WSC Duisburg Rheinhausen\nC,Water,Wakeboarding,Germany,WSC Paderborn\nC,Water,Wakeboarding,Austria,WSC Wien\nT,,,,Alternative team name\nC,Water,Waterball,Germany,Waterball Team\nC,Water,Surfing,England,Bristol Surf Team\nC,Ball,Football,France,Paris St. Germain\nT,,,,Alternative team name\nC,Ball,Handball,Germany,THW Kiel\n";
@@ -32,7 +33,7 @@ class CsvParserTest {
3233
void testParser(String input) throws Exception {
3334
MultiselectDecisionTree decisionTree = getDecisionTree(input, true);
3435

35-
Assertions.assertEquals(input, decisionTree.toString());
36+
assertEquals(input, decisionTree.toString());
3637
}
3738

3839
@Test
@@ -48,7 +49,7 @@ void unknownRowType() throws Exception {
4849
@Test
4950
void invalidColumnCount() throws Exception {
5051
MultiselectDecisionTree decisionTree = getDecisionTree("H\nT\n", false);
51-
Assertions.assertTrue(decisionTree.getVariableLabels().isEmpty());
52+
assertTrue(decisionTree.getVariableLabels().isEmpty());
5253
}
5354

5455
@Test
@@ -65,7 +66,15 @@ public void close() throws IOException {
6566
};
6667
}
6768
};
68-
Assertions.assertDoesNotThrow(() -> csvParser.analyzeConfiguration(inputStream));
69+
assertDoesNotThrow(() -> csvParser.analyzeConfiguration(inputStream));
70+
}
71+
}
72+
73+
@Test
74+
void analyzeConfiguration() throws IOException {
75+
try (ByteArrayInputStream inputStream = new ByteArrayInputStream("H,One\nV,VAR1,VAR2\n".getBytes())) {
76+
MultiselectDecisionTree tree = new CsvParser().analyzeConfiguration(inputStream);
77+
assertNull(tree.getVariableDescriptions().get(1).getLabel());
6978
}
7079
}
7180

@@ -84,9 +93,9 @@ private MultiselectDecisionTree getDecisionTree(String input, boolean assertEqua
8493
// assert symmetrical parsing/serialising
8594
String csvOutput = byteArrayOutputStream.toString();
8695
if (assertEquality) {
87-
Assertions.assertEquals(input, csvOutput);
96+
assertEquals(input, csvOutput);
8897
} else {
89-
Assertions.assertNotEquals(input, csvOutput);
98+
assertNotEquals(input, csvOutput);
9099
}
91100
}
92101
return decisionTree;

0 commit comments

Comments
 (0)