Skip to content

Commit 9b2cd0e

Browse files
authored
[impr-listVSarrayList] add util methods (#18964)
1 parent c2cdc9d commit 9b2cd0e

File tree

1 file changed

+101
-1
lines changed
  • core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/listvsarraylist

1 file changed

+101
-1
lines changed

core-java-modules/core-java-collections-list-3/src/test/java/com/baeldung/list/listvsarraylist/ListDemoUnitTest.java

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.junit.Assert.assertNotNull;
5+
import static org.junit.jupiter.api.Assertions.assertThrows;
56

67
import java.util.ArrayList;
8+
import java.util.Arrays;
9+
import java.util.Collections;
710
import java.util.List;
811
import java.util.Locale;
912

@@ -17,12 +20,19 @@ class ListDemoUnitTest {
1720
Passenger passenger1;
1821
Passenger passenger2;
1922
Passenger passenger3;
23+
Passenger passenger4;
24+
Passenger passenger5;
25+
Passenger passenger6;
2026

2127
@BeforeEach
2228
protected void setUp() {
2329
passenger1 = new Passenger("Anna", 25, "London", "New York");
2430
passenger2 = new Passenger("Binny", 35, "New York", "London");
2531
passenger3 = new Passenger("Chandra", 8, "Paris", "New Delhi");
32+
passenger4 = new Passenger("Amanda", 32, "Paris", "Hamburg");
33+
passenger5 = new Passenger("Dora", 8, "Paris", "Hamburg");
34+
passenger6 = new Passenger("Kent", 48, "Paris", "Munich");
35+
2636
application.addPassenger(passenger1);
2737
application.addPassenger(passenger2);
2838
application.addPassenger(passenger3);
@@ -89,4 +99,94 @@ public void givenCurrentLocale_whenUsingStreams_thenReturnsListType() {
8999
assertThat(servicedCountries).hasSize(Locale.getISOCountries().length);
90100
}
91101

92-
}
102+
@Test
103+
void whenUsingSingletonListUtilMethod_thenGetExpectedResult() {
104+
List<Passenger> singletonList = Collections.singletonList(passenger1);
105+
106+
assertThat(singletonList).hasSize(1);
107+
assertThat(singletonList.get(0)).isEqualTo(passenger1);
108+
assertThrows(UnsupportedOperationException.class, () -> singletonList.add(passenger2));
109+
}
110+
111+
@Test
112+
void whenUsingUnmodifiableListUtilMethod_thenGetExpectedResult() {
113+
List<Passenger> originalList = new ArrayList<>();
114+
originalList.add(passenger1);
115+
originalList.add(passenger2);
116+
117+
List<Passenger> unmodifiableList = Collections.unmodifiableList(originalList);
118+
assertThat(unmodifiableList).isEqualTo(originalList);
119+
120+
assertThrows(UnsupportedOperationException.class, () -> unmodifiableList.add(passenger3));
121+
assertThrows(UnsupportedOperationException.class, () -> unmodifiableList.remove(passenger2));
122+
123+
originalList.add(passenger3);
124+
assertThat(unmodifiableList).hasSize(3);
125+
}
126+
127+
@Test
128+
void whenUsingArraysAsList_thenGetExpectedResult() {
129+
Passenger[] array = { passenger1, passenger2 };
130+
List<Passenger> list = Arrays.asList(array);
131+
132+
assertThat(list).hasSize(2);
133+
assertThat(list.get(0)).isEqualTo(passenger1);
134+
assertThat(list.get(1)).isEqualTo(passenger2);
135+
136+
// We can update elements (reflected in the array too)
137+
list.set(1, passenger3);
138+
assertThat(array[1]).isEqualTo(passenger3);
139+
140+
// Verify immutability of size: adding/removing throws UnsupportedOperationException
141+
assertThrows(UnsupportedOperationException.class, () -> list.add(passenger2));
142+
assertThrows(UnsupportedOperationException.class, () -> list.remove(passenger1));
143+
}
144+
145+
@Test
146+
void whenUsingArraysSubList_thenGetExpectedResult() {
147+
List<Passenger> originalList = Arrays.asList(passenger1, passenger2, passenger3, passenger4, passenger5);
148+
149+
List<Passenger> subList = originalList.subList(1, 3);
150+
151+
assertThat(subList).isEqualTo(Arrays.asList(passenger2, passenger3));
152+
153+
// Changes in sublist reflect in the original list
154+
subList.set(1, passenger6);
155+
assertThat(originalList.get(2)).isEqualTo(passenger6);
156+
157+
// immutability of size: adding/removing throws UnsupportedOperationException
158+
assertThrows(UnsupportedOperationException.class, () -> subList.add(passenger4));
159+
assertThrows(UnsupportedOperationException.class, () -> subList.remove(passenger2));
160+
}
161+
162+
@Test
163+
void whenUsingListOf_thenGetExpectedResult() {
164+
List<Passenger> list = List.of(passenger1, passenger2, passenger3);
165+
166+
assertThat(list).isEqualTo(Arrays.asList(passenger1, passenger2, passenger3));
167+
168+
assertThrows(UnsupportedOperationException.class, () -> list.add(passenger4));
169+
assertThrows(UnsupportedOperationException.class, () -> list.set(0, passenger4));
170+
assertThrows(UnsupportedOperationException.class, () -> list.remove(passenger2));
171+
}
172+
173+
@Test
174+
void whenUsingListCopyOf_thenGetExpectedResult() {
175+
List<Passenger> originalList = new ArrayList<>();
176+
originalList.add(passenger1);
177+
originalList.add(passenger2);
178+
originalList.add(passenger3);
179+
180+
List<Passenger> copy = List.copyOf(originalList);
181+
182+
assertThat(copy).isEqualTo(originalList);
183+
184+
assertThrows(UnsupportedOperationException.class, () -> copy.add(passenger4));
185+
assertThrows(UnsupportedOperationException.class, () -> copy.set(0, passenger4));
186+
assertThrows(UnsupportedOperationException.class, () -> copy.remove(passenger2));
187+
188+
// Changes to the original list do NOT affect the copy
189+
originalList.add(passenger6);
190+
assertThat(copy).hasSize(3);
191+
}
192+
}

0 commit comments

Comments
 (0)