From e385c7409b5aefbfbc815922844a26a713af2491 Mon Sep 17 00:00:00 2001 From: Dotun Kola-Olaleye Date: Wed, 1 Feb 2017 00:16:55 +0100 Subject: [PATCH] String to char array and char array to String (#1002) * String to char array and char array to String. * Method change * Custom ThreadPool In Java 8 Parallel Streams * Implemented suggested edits from editor. * Broke long method signature * Changed primitive type int to long and formula. * Update wrapper type to Long --- .../baeldung/CharArrayToStringUnitTest.java | 62 +++++++++++++++++++ .../baeldung/StringToCharArrayUnitTest.java | 20 ++++++ .../streams/ThreadPoolInParallelStream.java | 45 ++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/CharArrayToStringUnitTest.java create mode 100644 core-java/src/test/java/com/baeldung/StringToCharArrayUnitTest.java create mode 100644 core-java/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStream.java diff --git a/core-java/src/test/java/com/baeldung/CharArrayToStringUnitTest.java b/core-java/src/test/java/com/baeldung/CharArrayToStringUnitTest.java new file mode 100644 index 0000000000..2f7830bbf4 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/CharArrayToStringUnitTest.java @@ -0,0 +1,62 @@ +package com.baeldung; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class CharArrayToStringUnitTest { + + @Test + public void givenCharArray_whenCallingStringConstructor_shouldConvertToString() { + char[] charArray = {'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r'}; + String result = new String(charArray); + String expectedValue = "character"; + + assertEquals(expectedValue, result); + } + + @Test + public void givenCharArray_whenCallingStringConstructorWithOffsetAndLength_shouldConvertToString(){ + char[] charArray = {'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r'}; + String result = new String(charArray, 4, 3); + String expectedValue = "act"; + + assertEquals(expectedValue, result); + } + + @Test + public void givenCharArray_whenCallingStringCopyValueOf_shouldConvertToString(){ + char[] charArray = {'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r'}; + String result = String.copyValueOf(charArray); + String expectedValue = "character"; + + assertEquals(expectedValue, result); + } + + @Test + public void givenCharArray_whenCallingStringCopyValueOfWithOffsetAndLength_shouldConvertToString(){ + char[] charArray = {'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r'}; + String result = String.copyValueOf(charArray, 0, 4); + String expectedValue = "char"; + + assertEquals(expectedValue, result); + } + + @Test + public void givenCharArray_whenCallingStringValueOf_shouldConvertToString(){ + char[] charArray = {'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r'}; + String result = String.valueOf(charArray); + String expectedValue = "character"; + + assertEquals(expectedValue, result); + } + + @Test + public void givenCharArray_whenCallingStringValueOfWithOffsetAndLength_shouldConvertToString(){ + char[] charArray = {'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r'}; + String result = String.valueOf(charArray, 3, 4); + String expectedValue = "ract"; + + assertEquals(expectedValue, result); + } +} diff --git a/core-java/src/test/java/com/baeldung/StringToCharArrayUnitTest.java b/core-java/src/test/java/com/baeldung/StringToCharArrayUnitTest.java new file mode 100644 index 0000000000..2e7dc24a17 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/StringToCharArrayUnitTest.java @@ -0,0 +1,20 @@ +package com.baeldung; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class StringToCharArrayUnitTest { + +@Test +public void givenString_whenCallingStringToCharArray_shouldConvertToCharArray() { + String givenString = "characters"; + + char[] result = givenString.toCharArray(); + + char[] expectedCharArray = { 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', 's' }; + + assertArrayEquals(expectedCharArray, result); +} + +} diff --git a/core-java/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStream.java b/core-java/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStream.java new file mode 100644 index 0000000000..d654f45626 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStream.java @@ -0,0 +1,45 @@ +package org.baeldung.java.streams; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ForkJoinPool; +import java.util.stream.Stream; + +import org.junit.Test; + +public class ThreadPoolInParallelStream { + + @Test + public void giveRangeOfLongs_whenSummedInParallel_shouldBeEqualToExpectedTotal() + throws InterruptedException, ExecutionException { + List aList = new ArrayList<>(); + long lastNum = 1_000_000; + long firstNum = 1; + + long expectedTotal = (lastNum + firstNum) * lastNum / 2; + + for(long i = firstNum; i <= lastNum; i++){ + aList.add(i); + } + + ForkJoinPool customThreadPool = new ForkJoinPool(4); + long actualTotal = customThreadPool.submit(() -> aList.parallelStream().reduce( + 0L, (x, y) -> { + return x + y; + })).get(); + + assertEquals(expectedTotal, actualTotal); + } + + @Test + public void givenList_whenCallingParallelStream_shouldBeParallelStream(){ + List aList = new ArrayList<>(); + Stream parallelStream = aList.parallelStream(); + + assertTrue(parallelStream.isParallel()); + } +}