From a74f4ec8f54bd8827e7afcecad2db86ea3c614f0 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Thu, 11 May 2023 03:29:50 +0200 Subject: [PATCH] [scanner-to-array] Saving Java Scanner Input to an Array (#13969) --- .../scanner/ScannerToArrayUnitTest.java | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScannerToArrayUnitTest.java diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScannerToArrayUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScannerToArrayUnitTest.java new file mode 100644 index 0000000000..f64bd7b1fc --- /dev/null +++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScannerToArrayUnitTest.java @@ -0,0 +1,107 @@ +package com.baeldung.scanner; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import org.junit.jupiter.api.Test; + +import com.google.common.collect.Lists; +import com.google.common.collect.ObjectArrays; + +public class ScannerToArrayUnitTest { + + @Test + void whenMultipleElementsInOneLine_thenGetExpectedArray() { + String input = "Java Kotlin Ruby Python Go\n"; + String[] expected = new String[] { "Java", "Kotlin", "Ruby", "Python", "Go" }; + + // scanner.next() + Scanner scanner1 = new Scanner(input); + String[] result1 = new String[5]; + int i = 0; + while (i < result1.length) { + result1[i] = scanner1.next(); + i++; + } + assertArrayEquals(expected, result1); + + //split() + Scanner scanner2 = new Scanner(input); + String[] result2 = scanner2.nextLine() + .split("\\s+"); + assertArrayEquals(expected, result2); + } + + @Test + void whenOneElementPerLine_thenGetExpectedArray() { + String input = new StringBuilder().append("Baeldung Java\n") + .append("Baeldung Kotlin\n") + .append("Baeldung Linux\n") + .toString(); + + String[] expected = new String[] { "Baeldung Java", "Baeldung Kotlin", "Baeldung Linux" }; + + String[] result = new String[3]; + Scanner scanner = new Scanner(input); + int i = 0; + while (i < result.length) { + result[i] = scanner.nextLine(); + i++; + } + assertArrayEquals(expected, result); + } + + @Test + void whenOneElementPerLine_thenGetExpectedList() { + String input = new StringBuilder().append("Baeldung Java\n") + .append("Baeldung Kotlin\n") + .append("Baeldung Linux\n") + .toString(); + + List expected = Lists.newArrayList("Baeldung Java", "Baeldung Kotlin", "Baeldung Linux"); + + List result = new ArrayList<>(); + Scanner scanner = new Scanner(input); + while (scanner.hasNextLine()) { + result.add(scanner.nextLine()); + } + assertEquals(expected, result); + } + + @Test + void whenEveryTokenIsAnElement_thenGetExpectedList() { + String input = new StringBuilder().append("Linux Windows MacOS\n") + .append("Java Kotlin Python Go\n") + .toString(); + + List expected = Lists.newArrayList("Linux", "Windows", "MacOS", "Java", "Kotlin", "Python", "Go"); + List result = new ArrayList<>(); + Scanner scanner = new Scanner(input); + while (scanner.hasNext()) { + result.add(scanner.next()); + } + assertEquals(expected, result); + } + + @Test + void whenEveryTokenIsAnElement_thenGetExpectedArray() { + String input = new StringBuilder().append("Linux Windows MacOS\n") + .append("Java Kotlin Python Go\n") + .toString(); + + String[] expected = new String[] { "Linux", "Windows", "MacOS", "Java", "Kotlin", "Python", "Go" }; + String[] result = new String[] {}; + + Scanner scanner = new Scanner(input); + while (scanner.hasNextLine()) { + String[] lineInArray = scanner.nextLine() + .split("\\s+"); + result = ObjectArrays.concat(result, lineInArray, String.class); + } + assertArrayEquals(expected, result); + } +} \ No newline at end of file