Skip to content

Commit 0565df5

Browse files
authored
listOfLists article (eugenp#12078)
1 parent 03e4ed2 commit 0565df5

2 files changed

Lines changed: 77 additions & 0 deletions

File tree

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.baeldung.list.listoflists;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.io.IOException;
6+
import java.net.URISyntaxException;
7+
import java.nio.file.Files;
8+
import java.nio.file.Paths;
9+
import java.util.ArrayList;
10+
import java.util.Arrays;
11+
import java.util.List;
12+
import java.util.stream.Collectors;
13+
14+
import org.junit.jupiter.api.Test;
15+
16+
public class ListOfListsUnitTest {
17+
18+
private List<List<String>> getListOfListsFromCsv() throws URISyntaxException, IOException {
19+
20+
List<String> lines = Files.readAllLines(Paths.get(getClass().getResource("/listoflists/example.csv")
21+
.toURI()));
22+
List<List<String>> listOfLists = new ArrayList<>();
23+
24+
lines.forEach(line -> {
25+
List<String> innerList = new ArrayList<>(Arrays.asList(line.split(", ")));
26+
listOfLists.add(innerList);
27+
});
28+
return listOfLists;
29+
}
30+
31+
private void printListOfLists(List<List<String>> listOfLists) {
32+
System.out.println("\n List of Lists ");
33+
System.out.println("-------------------------------------");
34+
listOfLists.forEach(innerList -> {
35+
String line = String.join(", ", innerList);
36+
System.out.println(line);
37+
});
38+
}
39+
40+
@Test
41+
void givenCsv_whenInitListOfLists_thenGetExpectedResults() throws URISyntaxException, IOException {
42+
List<List<String>> listOfLists = getListOfListsFromCsv();
43+
assertThat(listOfLists).hasSize(3);
44+
assertThat(listOfLists.stream()
45+
.map(List::size)
46+
.collect(Collectors.toSet())).hasSize(1)
47+
.containsExactly(4);
48+
printListOfLists(listOfLists);
49+
}
50+
51+
@Test
52+
void givenListOfLists_whenRemoveElementFromInnerLists_thenGetExpectedResults() throws URISyntaxException, IOException {
53+
List<List<String>> listOfLists = getListOfListsFromCsv();
54+
55+
listOfLists.forEach(innerList -> innerList.remove("Delete Me"));
56+
assertThat(listOfLists.stream()
57+
.map(List::size)
58+
.collect(Collectors.toSet())).hasSize(1)
59+
.containsExactly(3);
60+
61+
printListOfLists(listOfLists);
62+
}
63+
64+
@Test
65+
void givenListOfLists_whenAddNewInnerList_thenGetExpectedResults() throws URISyntaxException, IOException {
66+
List<List<String>> listOfLists = getListOfListsFromCsv();
67+
List<String> newList = new ArrayList<>(Arrays.asList("Slack", "Zoom", "Microsoft Teams", "Telegram"));
68+
listOfLists.add(2, newList);
69+
70+
assertThat(listOfLists).hasSize(4);
71+
assertThat(listOfLists.get(2)).containsExactly("Slack", "Zoom", "Microsoft Teams", "Telegram");
72+
printListOfLists(listOfLists);
73+
}
74+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Linux, Microsoft Windows, Mac OS, Delete Me
2+
Kotlin, Delete Me, Java, Python
3+
Delete Me, Mercurial, Git, Subversion

0 commit comments

Comments
 (0)