1a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin/* 2a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 3a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 5a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * This code is free software; you can redistribute it and/or modify it 6a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * under the terms of the GNU General Public License version 2 only, as 7a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * published by the Free Software Foundation. 8a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 9a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * This code is distributed in the hope that it will be useful, but WITHOUT 10a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * version 2 for more details (a copy is included in the LICENSE file that 13a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * accompanied this code). 14a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 15a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * You should have received a copy of the GNU General Public License version 16a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 2 along with this work; if not, write to the Free Software Foundation, 17a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * 19a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * or visit www.oracle.com if you need additional information or have any 21a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * questions. 22a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin */ 23a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinpackage org.openjdk.tests.java.util.stream; 24a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 25289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.LambdaTestHelpers; 26289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.OpTestCase; 27289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.StreamTestDataProvider; 28289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.TestData; 29289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin 30a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.annotations.DataProvider; 31a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.annotations.Test; 32a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 33a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.Arrays; 34a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.Collections; 35a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.List; 36a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.function.Function; 37a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.DoubleStream; 38a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.IntStream; 39a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.LongStream; 40a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.Stream; 41a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 42a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport static java.util.stream.Collectors.toList; 43a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 44a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin@Test 45a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinpublic class StreamBuilderTest extends OpTestCase { 46a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 47a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin List<Integer> sizes = Arrays.asList(0, 1, 4, 16, 256, 48a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 1023, 1024, 1025, 49a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 2047, 2048, 2049, 50a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 1024 * 32 - 1, 1024 * 32, 1024 * 32 + 1); 51a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 52a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @DataProvider(name = "sizes") 53a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public Object[][] createStreamBuilders() { 54a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sizes.stream().map(i -> new Object[] { i }).toArray(Object[][]::new); 55a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 56a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 57a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin private void checkException(Class<? extends Exception> ce, Runnable r) { 58a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin Exception caught = null; 59a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin try { 60a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin r.run(); 61a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } catch (Exception e) { 62a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin caught = e; 63a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 64a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 65a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin assertNotNull(caught); 66a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin assertTrue(ce.isInstance(caught)); 67a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 68a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 69a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin private void checkISE(Runnable r) { 70a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkException(IllegalStateException.class, r); 71a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 72a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 73a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin // 74a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 75a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test 76a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testSingleton() { 77a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfRef<Integer> data = TestData.Factory.ofSupplier("[0, 1)", 78a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin () -> Stream.of(1)); 79a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 80a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 81a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 82a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1)). 83a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 84a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 85a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 86a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(LambdaTestHelpers.identity())). 87a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1)). 88a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 89a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 90a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 91a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes") 92a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testAfterBuilding(int size) { 93a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin Stream.Builder<Integer> sb = Stream.builder(); 94a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, size).boxed().forEach(sb); 95a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin sb.build(); 96a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 97a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.accept(1)); 98a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.add(1)); 99a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.build()); 100a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 101a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 102a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes", groups = { "serialization-hostile" }) 103a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testStreamBuilder(int size) { 104a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testStreamBuilder(size, (s) -> { 105a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin Stream.Builder<Integer> sb = Stream.builder(); 106a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, s).boxed().forEach(sb); 107a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 108a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 109a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 110a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testStreamBuilder(size, (s) -> { 111a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin Stream.Builder<Integer> sb = Stream.builder(); 112a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, s).boxed().forEach(i -> { 113a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin Stream.Builder<Integer> _sb = sb.add(i); 114a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin assertTrue(sb == _sb); 115a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 116a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 117a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 118a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 119a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 120a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin private void testStreamBuilder(int size, Function<Integer, Stream<Integer>> supplier) { 121a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfRef<Integer> data = TestData.Factory.ofSupplier(String.format("[0, %d)", size), 122a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin () -> supplier.apply(size)); 123a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 124a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 125a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 126a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(IntStream.range(0, size).boxed().collect(toList())). 127a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 128a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 129a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 130a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(LambdaTestHelpers.identity())). 131a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(IntStream.range(0, size).boxed().collect(toList())). 132a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 133a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 134a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 135a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin // 136a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 137a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test 138a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testIntSingleton() { 139a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfInt data = TestData.Factory.ofIntSupplier("[0, 1)", 140a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin () -> IntStream.of(1)); 141a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 142a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 143a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 144a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1)). 145a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 146a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 147a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 148a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(i -> i)). 149a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1)). 150a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 151a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 152a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 153a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes") 154a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testIntAfterBuilding(int size) { 155a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.Builder sb = IntStream.builder(); 156a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, size).forEach(sb); 157a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin sb.build(); 158a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 159a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.accept(1)); 160a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.add(1)); 161a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.build()); 162a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 163a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 164a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes", groups = { "serialization-hostile" }) 165a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testIntStreamBuilder(int size) { 166a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testIntStreamBuilder(size, (s) -> { 167a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.Builder sb = IntStream.builder(); 168a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, s).forEach(sb); 169a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 170a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 171a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 172a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testIntStreamBuilder(size, (s) -> { 173a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.Builder sb = IntStream.builder(); 174a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, s).forEach(i -> { 175a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.Builder _sb = sb.add(i); 176a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin assertTrue(sb == _sb); 177a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 178a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 179a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 180a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 181a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 182a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin private void testIntStreamBuilder(int size, Function<Integer, IntStream> supplier) { 183a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfInt data = TestData.Factory.ofIntSupplier(String.format("[0, %d)", size), 184a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin () -> supplier.apply(size)); 185a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 186a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 187a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 188a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(IntStream.range(0, size).toArray()). 189a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 190a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 191a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 192a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(i -> i)). 193a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(IntStream.range(0, size).toArray()). 194a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 195a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 196a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 197a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin // 198a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 199a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test 200a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testLongSingleton() { 201a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfLong data = TestData.Factory.ofLongSupplier("[0, 1)", 202a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin () -> LongStream.of(1)); 203a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 204a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 205a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 206a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1L)). 207a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 208a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 209a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 210a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(i -> i)). 211a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1L)). 212a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 213a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 214a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 215a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes") 216a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testLongAfterBuilding(int size) { 217a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin LongStream.Builder sb = LongStream.builder(); 218a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin LongStream.range(0, size).forEach(sb); 219a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin sb.build(); 220a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 221a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.accept(1)); 222a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.add(1)); 223a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.build()); 224a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 225a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 226a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes", groups = { "serialization-hostile" }) 227a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testLongStreamBuilder(int size) { 228a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testLongStreamBuilder(size, (s) -> { 229a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin LongStream.Builder sb = LongStream.builder(); 230a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin LongStream.range(0, s).forEach(sb); 231a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 232a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 233a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 234a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testLongStreamBuilder(size, (s) -> { 235a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin LongStream.Builder sb = LongStream.builder(); 236a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin LongStream.range(0, s).forEach(i -> { 237a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin LongStream.Builder _sb = sb.add(i); 238a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin assertTrue(sb == _sb); 239a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 240a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 241a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 242a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 243a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 244a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin private void testLongStreamBuilder(int size, Function<Integer, LongStream> supplier) { 245a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfLong data = TestData.Factory.ofLongSupplier(String.format("[0, %d)", size), 246a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin () -> supplier.apply(size)); 247a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 248a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 249a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 250a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(LongStream.range(0, size).toArray()). 251a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 252a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 253a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 254a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(i -> i)). 255a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(LongStream.range(0, size).toArray()). 256a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 257a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 258a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 259a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin // 260a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 261a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test 262a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testDoubleSingleton() { 263a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfDouble data = TestData.Factory.ofDoubleSupplier("[0, 1)", () -> DoubleStream.of(1)); 264a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 265a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 266a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 267a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1.0)). 268a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 269a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 270a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 271a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(i -> i)). 272a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(Collections.singletonList(1.0)). 273a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 274a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 275a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 276a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes") 277a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testDoubleAfterBuilding(int size) { 278a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin DoubleStream.Builder sb = DoubleStream.builder(); 279a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, size).asDoubleStream().forEach(sb); 280a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin sb.build(); 281a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 282a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.accept(1)); 283a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.add(1)); 284a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin checkISE(() -> sb.build()); 285a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 286a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 287a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "sizes", groups = { "serialization-hostile" }) 288a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testDoubleStreamBuilder(int size) { 289a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testDoubleStreamBuilder(size, (s) -> { 290a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin DoubleStream.Builder sb = DoubleStream.builder(); 291a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, s).asDoubleStream().forEach(sb); 292a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 293a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 294a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 295a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin testDoubleStreamBuilder(size, (s) -> { 296a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin DoubleStream.Builder sb = DoubleStream.builder(); 297a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin IntStream.range(0, s).asDoubleStream().forEach(i -> { 298a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin DoubleStream.Builder _sb = sb.add(i); 299a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin assertTrue(sb == _sb); 300a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 301a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin return sb.build(); 302a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin }); 303a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 304a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 305a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin private void testDoubleStreamBuilder(int size, Function<Integer, DoubleStream> supplier) { 306a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin TestData.OfDouble data = TestData.Factory.ofDoubleSupplier(String.format("[0, %d)", size), 307a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin () -> supplier.apply(size)); 308a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 309a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 310a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s). 311a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(IntStream.range(0, size).asDoubleStream().toArray()). 312a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 313a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 314a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 315a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin stream(s -> s.map(i -> i)). 316a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(IntStream.range(0, size).asDoubleStream().toArray()). 317a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 318a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 319a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 320a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin} 321