From ee4923a29d8701075084702b78531a5c9b0ca5ca Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Mon, 29 May 2023 16:50:55 +0200 Subject: [PATCH] [list-with-default] Set Default Value for Elements in List (#14125) * [list-with-default] Set Default Value for Elements in List * [list-with-default] remove the ncopies and stream methods. * [list-with-default] remove irrelevant codes --- .../ListWithDefaultValuesUnitTest.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/listwithdefault/ListWithDefaultValuesUnitTest.java diff --git a/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/listwithdefault/ListWithDefaultValuesUnitTest.java b/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/listwithdefault/ListWithDefaultValuesUnitTest.java new file mode 100644 index 0000000000..e23fa838be --- /dev/null +++ b/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/listwithdefault/ListWithDefaultValuesUnitTest.java @@ -0,0 +1,92 @@ +package com.baeldung.java.listwithdefault; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.function.Supplier; + +import org.junit.jupiter.api.Test; + +import com.google.common.collect.Lists; + +public class ListWithDefaultValuesUnitTest { + private static final List EXPECTED_LIST = Lists.newArrayList("new", "new", "new", "new", "new"); + private static final Date DATE_EPOCH = Date.from(Instant.EPOCH); + private static final Date DATE_NOW = new Date(); + + static List newListWithDefault(T value, int size) { + List list = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + list.add(value); + } + return list; + } + + static List newListWithDefault2(Supplier supplier, int size) { + List list = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + list.add(supplier.get()); + } + return list; + } + + @Test + void whenUsingArraysFill_thenGetExpectedList() { + String[] strings = new String[5]; + Arrays.fill(strings, "new"); + List result = Arrays.asList(strings); + assertEquals(EXPECTED_LIST, result); + + //result is a fixed size list + assertThrows(UnsupportedOperationException.class, () -> result.add("a new string")); + assertThrows(UnsupportedOperationException.class, () -> result.remove(0)); + + //result's element can be "set" + result.set(2, "a new value"); + assertEquals("a new value", result.get(2)); + + Date[] dates = new Date[2]; + Arrays.fill(dates, Date.from(Instant.EPOCH)); + List dateList = Arrays.asList(dates); + assertEquals(Lists.newArrayList(DATE_EPOCH, DATE_EPOCH), dateList); + dateList.get(0) + .setTime(DATE_NOW.getTime()); + assertEquals(Lists.newArrayList(DATE_NOW, DATE_NOW), dateList); + + } + + @Test + void whenUsingNewListWithDefault_thenGetExpectedList() { + List result = newListWithDefault("new", 5); + assertEquals(EXPECTED_LIST, result); + + List intList = newListWithDefault(42, 3); + assertEquals(Lists.newArrayList(42, 42, 42), intList); + + List dateList = newListWithDefault(Date.from(Instant.EPOCH), 2); + assertEquals(Lists.newArrayList(DATE_EPOCH, DATE_EPOCH), dateList); + dateList.get(0) + .setTime(DATE_NOW.getTime()); + assertEquals(Lists.newArrayList(DATE_NOW, DATE_NOW), dateList); + } + + @Test + void whenUsingNewListWithDefault2_thenGetExpectedList() { + List result = newListWithDefault2(() -> "new", 5); + assertEquals(EXPECTED_LIST, result); + + List intList = newListWithDefault2(() -> 42, 3); + assertEquals(Lists.newArrayList(42, 42, 42), intList); + + List dateList = newListWithDefault2(() -> Date.from(Instant.EPOCH), 2); + assertEquals(Lists.newArrayList(DATE_EPOCH, DATE_EPOCH), dateList); + dateList.get(0) + .setTime(DATE_NOW.getTime()); + assertEquals(Lists.newArrayList(DATE_NOW, DATE_EPOCH), dateList); + } +} \ No newline at end of file