Home | History | Annotate | Download | only in stream
      1 /*
      2  * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
      3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      4  *
      5  * This code is free software; you can redistribute it and/or modify it
      6  * under the terms of the GNU General Public License version 2 only, as
      7  * published by the Free Software Foundation.
      8  *
      9  * This code is distributed in the hope that it will be useful, but WITHOUT
     10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     12  * version 2 for more details (a copy is included in the LICENSE file that
     13  * accompanied this code).
     14  *
     15  * You should have received a copy of the GNU General Public License version
     16  * 2 along with this work; if not, write to the Free Software Foundation,
     17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     18  *
     19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
     20  * or visit www.oracle.com if you need additional information or have any
     21  * questions.
     22  */
     23 package org.openjdk.tests.java.util.stream;
     24 
     25 import org.openjdk.testlib.java.util.stream.DoubleStreamTestDataProvider;
     26 import org.openjdk.testlib.java.util.stream.IntStreamTestDataProvider;
     27 import org.openjdk.testlib.java.util.stream.LambdaTestHelpers;
     28 import org.openjdk.testlib.java.util.stream.LongStreamTestDataProvider;
     29 import org.openjdk.testlib.java.util.stream.OpTestCase;
     30 import org.openjdk.testlib.java.util.stream.StreamTestDataProvider;
     31 import org.openjdk.testlib.java.util.stream.TestData;
     32 
     33 import java.util.stream.BaseStream;
     34 import java.util.stream.Stream;
     35 import java.util.stream.IntStream;
     36 import java.util.stream.LongStream;
     37 import java.util.stream.DoubleStream;
     38 
     39 import org.testng.annotations.Test;
     40 
     41 public class PrimitiveSumTest extends OpTestCase {
     42 
     43     @Test(dataProvider = "IntStreamTestData", dataProviderClass = IntStreamTestDataProvider.class)
     44     public void testOps(String name, TestData.OfInt data) {
     45         exerciseTerminalOps(data, s -> s.sum());
     46 
     47         withData(data).
     48                 terminal(s -> (long) s.sum()).
     49                 expectedResult(data.stream().asLongStream().reduce(0, LambdaTestHelpers.lrPlus)).
     50                 exercise();
     51     }
     52 
     53     @Test(dataProvider = "LongStreamTestData", dataProviderClass = LongStreamTestDataProvider.class)
     54     public void testOps(String name, TestData.OfLong data) {
     55         exerciseTerminalOps(data, s -> s.sum());
     56 
     57         withData(data).
     58                 terminal(s -> s.sum()).
     59                 expectedResult(data.stream().reduce(0, LambdaTestHelpers.lrPlus)).
     60                 exercise();
     61     }
     62 
     63     // @@@ For Double depending on the input data the average algorithm may produce slightly
     64     //     different results for the sequential and parallel evaluation.results are within
     65     //     While the following works at the moment, it could change when double data, not cast from long
     66     //     values is introduced, or if the sum algorithm is modified.
     67     @Test(dataProvider = "DoubleStreamTestData", dataProviderClass = DoubleStreamTestDataProvider.class)
     68     public void testOps(String name, TestData.OfDouble data) {
     69         exerciseTerminalOps(data, s -> s.sum());
     70 
     71         withData(data).
     72                 terminal(s -> s.sum()).
     73                 expectedResult(data.stream().reduce(0, LambdaTestHelpers.drPlus)).
     74                 exercise();
     75     }
     76 }
     77 
     78