1a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin/* 2a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * Copyright (c) 2014, 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 Murashkin 24a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin/** 25a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * @test 26a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * @summary Tests counting of streams 27a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin * @bug 8031187 28a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin */ 29a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 30a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinpackage org.openjdk.tests.java.util.stream; 31a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 32289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.DoubleStreamTestDataProvider; 33289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.IntStreamTestDataProvider; 34289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.LambdaTestHelpers; 35289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.LongStreamTestDataProvider; 36289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.OpTestCase; 37289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.StreamTestDataProvider; 38289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport org.openjdk.testlib.java.util.stream.TestData; 39289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin 40a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.concurrent.atomic.AtomicLong; 41a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.DoubleStream; 42a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.IntStream; 43a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.LongStream; 44a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport java.util.stream.Stream; 45a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 46a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinimport org.testng.annotations.Test; 47a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 48a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkinpublic class CountTest extends OpTestCase { 49a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 50a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "StreamTestData<Integer>", dataProviderClass = StreamTestDataProvider.class) 51a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testOps(String name, TestData.OfRef<Integer> data) { 52a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin AtomicLong expectedCount = new AtomicLong(); 53a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin data.stream().forEach(e -> expectedCount.incrementAndGet()); 54a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 55a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 56a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin terminal(Stream::count). 57a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(expectedCount.get()). 58a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 59a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 60a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 61a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "IntStreamTestData", dataProviderClass = IntStreamTestDataProvider.class) 62a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testOps(String name, TestData.OfInt data) { 63a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin AtomicLong expectedCount = new AtomicLong(); 64a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin data.stream().forEach(e -> expectedCount.incrementAndGet()); 65a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 66a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 67a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin terminal(IntStream::count). 68a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(expectedCount.get()). 69a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 70a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 71a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 72a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "LongStreamTestData", dataProviderClass = LongStreamTestDataProvider.class) 73a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testOps(String name, TestData.OfLong data) { 74a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin AtomicLong expectedCount = new AtomicLong(); 75a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin data.stream().forEach(e -> expectedCount.incrementAndGet()); 76a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 77a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 78a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin terminal(LongStream::count). 79a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(expectedCount.get()). 80a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 81a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 82a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 83a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin @Test(dataProvider = "DoubleStreamTestData", dataProviderClass = DoubleStreamTestDataProvider.class) 84a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin public void testOps(String name, TestData.OfDouble data) { 85a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin AtomicLong expectedCount = new AtomicLong(); 86a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin data.stream().forEach(e -> expectedCount.incrementAndGet()); 87a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin 88a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin withData(data). 89a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin terminal(DoubleStream::count). 90a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin expectedResult(expectedCount.get()). 91a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin exercise(); 92a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin } 93a405b7ea164e472bcf6b75d9890021bd82e4d60dIgor Murashkin} 94