jdk/test/java/util/stream/boottest/java/util/stream/FlagOpTest.java
changeset 33922 edbb9a685407
parent 33921 935f3f7e43b0
parent 33903 393dc9cd55b6
child 33923 25a2cab05cfb
--- a/jdk/test/java/util/stream/boottest/java/util/stream/FlagOpTest.java	Fri Nov 20 15:40:23 2015 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package java.util.stream;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.function.Supplier;
-
-import static java.util.stream.LambdaTestHelpers.countTo;
-
-@Test
-public class FlagOpTest extends OpTestCase {
-
-    @Test(dataProvider = "StreamTestData<Integer>", dataProviderClass = StreamTestDataProvider.class)
-    public void testFlagsPassThrough(String name, TestData<Integer, Stream<Integer>> data) {
-
-        @SuppressWarnings({"unchecked", "rawtypes"})
-        TestFlagPassThroughOp<Integer>[] ops = new TestFlagPassThroughOp[3];
-        ops[0] = new TestFlagPassThroughOp<>();
-        ops[1] = new TestFlagPassThroughOp<>();
-        ops[2] = new TestFlagPassThroughOp<>();
-
-        ops[0].set(null, ops[1]);
-        ops[1].set(ops[0], ops[2]);
-        ops[2].set(ops[1], null);
-
-        withData(data).ops(ops).exercise();
-    }
-
-    static class TestFlagPassThroughOp<T> extends FlagDeclaringOp<T> {
-        TestFlagPassThroughOp<T> upstream;
-        TestFlagPassThroughOp<T> downstream;
-
-        TestFlagPassThroughOp() {
-            super(0);
-        }
-
-        void set(TestFlagPassThroughOp<T> upstream, TestFlagPassThroughOp<T> downstream)  {
-            this.upstream = upstream;
-            this.downstream = downstream;
-        }
-
-        int wrapFlags;
-
-        @Override
-        @SuppressWarnings({"unchecked", "rawtypes"})
-        public Sink<T> opWrapSink(int flags, boolean parallel, Sink sink) {
-            this.wrapFlags = flags;
-
-            if (downstream != null) {
-                assertTrue(flags == downstream.wrapFlags);
-            }
-
-            return sink;
-        }
-    }
-
-    public void testFlagsClearAllSet() {
-        int clearAllFlags = 0;
-        for (StreamOpFlag f : EnumSet.allOf(StreamOpFlag.class)) {
-            if (f.isStreamFlag()) {
-                clearAllFlags |= f.clear();
-            }
-        }
-
-        EnumSet<StreamOpFlag> known = EnumSet.noneOf(StreamOpFlag.class);
-        EnumSet<StreamOpFlag> notKnown = StreamOpFlagTestHelper.allStreamFlags();
-
-        List<FlagDeclaringOp<Integer>> ops = new ArrayList<>();
-        ops.add(new FlagDeclaringOp<>(clearAllFlags));
-        for (StreamOpFlag f : StreamOpFlagTestHelper.allStreamFlags()) {
-            if (f.canSet(StreamOpFlag.Type.OP)) {
-                ops.add(new TestFlagExpectedOp<>(f.set(),
-                                             known.clone(),
-                                             EnumSet.noneOf(StreamOpFlag.class),
-                                             notKnown.clone()));
-                known.add(f);
-                notKnown.remove(f);
-            }
-        }
-        ops.add(new TestFlagExpectedOp<>(0,
-                                         known.clone(),
-                                         EnumSet.noneOf(StreamOpFlag.class),
-                                         notKnown.clone()));
-
-        TestData<Integer, Stream<Integer>> data = TestData.Factory.ofArray("Array", countTo(10).toArray(new Integer[0]));
-        @SuppressWarnings("rawtypes")
-        FlagDeclaringOp[] opsArray = ops.toArray(new FlagDeclaringOp[ops.size()]);
-
-        withData(data).ops(opsArray).
-                without(StreamTestScenario.CLEAR_SIZED_SCENARIOS).
-                exercise();
-    }
-
-    public void testFlagsSetAllClear() {
-        EnumSet<StreamOpFlag> known = StreamOpFlagTestHelper.allStreamFlags();
-        int setAllFlags = 0;
-        for (StreamOpFlag f : EnumSet.allOf(StreamOpFlag.class)) {
-            if (f.isStreamFlag()) {
-                if (f.canSet(StreamOpFlag.Type.OP)) {
-                    setAllFlags |= f.set();
-                } else {
-                    known.remove(f);
-                }
-            }
-        }
-
-        EnumSet<StreamOpFlag> notKnown = EnumSet.noneOf(StreamOpFlag.class);
-
-        List<FlagDeclaringOp<Integer>> ops = new ArrayList<>();
-        ops.add(new FlagDeclaringOp<>(setAllFlags));
-        for (StreamOpFlag f : StreamOpFlagTestHelper.allStreamFlags()) {
-            ops.add(new TestFlagExpectedOp<>(f.clear(),
-                                             known.clone(),
-                                             EnumSet.noneOf(StreamOpFlag.class),
-                                             notKnown.clone()));
-            known.remove(f);
-            notKnown.add(f);
-        }
-        ops.add(new TestFlagExpectedOp<>(0,
-                                         known.clone(),
-                                         EnumSet.noneOf(StreamOpFlag.class),
-                                         notKnown.clone()));
-
-        TestData<Integer, Stream<Integer>> data = TestData.Factory.ofArray("Array", countTo(10).toArray(new Integer[0]));
-        @SuppressWarnings("rawtypes")
-        FlagDeclaringOp[] opsArray = ops.toArray(new FlagDeclaringOp[ops.size()]);
-
-
-        withData(data).ops(opsArray).
-                without(StreamTestScenario.CLEAR_SIZED_SCENARIOS).
-                exercise();
-    }
-
-    public void testFlagsParallelCollect() {
-        testFlagsSetSequence(CollectorOps::collector);
-    }
-
-    private void testFlagsSetSequence(Supplier<StatefulTestOp<Integer>> cf) {
-        EnumSet<StreamOpFlag> known = EnumSet.of(StreamOpFlag.ORDERED, StreamOpFlag.SIZED);
-        EnumSet<StreamOpFlag> preserve = EnumSet.of(StreamOpFlag.DISTINCT, StreamOpFlag.SORTED);
-
-        List<IntermediateTestOp<Integer, Integer>> ops = new ArrayList<>();
-        for (StreamOpFlag f : EnumSet.of(StreamOpFlag.DISTINCT, StreamOpFlag.SORTED)) {
-            ops.add(cf.get());
-            ops.add(new TestFlagExpectedOp<>(f.set(),
-                                             known.clone(),
-                                             preserve.clone(),
-                                             EnumSet.noneOf(StreamOpFlag.class)));
-            known.add(f);
-            preserve.remove(f);
-        }
-        ops.add(cf.get());
-        ops.add(new TestFlagExpectedOp<>(0,
-                                         known.clone(),
-                                         preserve.clone(),
-                                         EnumSet.noneOf(StreamOpFlag.class)));
-
-        TestData<Integer, Stream<Integer>> data = TestData.Factory.ofArray("Array", countTo(10).toArray(new Integer[0]));
-        @SuppressWarnings("rawtypes")
-        IntermediateTestOp[] opsArray = ops.toArray(new IntermediateTestOp[ops.size()]);
-
-        withData(data).ops(opsArray).
-                without(StreamTestScenario.CLEAR_SIZED_SCENARIOS).
-                exercise();
-    }
-
-
-    public void testFlagsClearParallelCollect() {
-        testFlagsClearSequence(CollectorOps::collector);
-    }
-
-    protected void testFlagsClearSequence(Supplier<StatefulTestOp<Integer>> cf) {
-        EnumSet<StreamOpFlag> known = EnumSet.of(StreamOpFlag.ORDERED, StreamOpFlag.SIZED);
-        EnumSet<StreamOpFlag> preserve = EnumSet.of(StreamOpFlag.DISTINCT, StreamOpFlag.SORTED);
-        EnumSet<StreamOpFlag> notKnown = EnumSet.noneOf(StreamOpFlag.class);
-
-        List<IntermediateTestOp<Integer, Integer>> ops = new ArrayList<>();
-        for (StreamOpFlag f : EnumSet.of(StreamOpFlag.ORDERED, StreamOpFlag.DISTINCT, StreamOpFlag.SORTED)) {
-            ops.add(cf.get());
-            ops.add(new TestFlagExpectedOp<>(f.clear(),
-                                             known.clone(),
-                                             preserve.clone(),
-                                             notKnown.clone()));
-            known.remove(f);
-            preserve.remove(f);
-            notKnown.add(f);
-        }
-        ops.add(cf.get());
-        ops.add(new TestFlagExpectedOp<>(0,
-                                         known.clone(),
-                                         preserve.clone(),
-                                         notKnown.clone()));
-
-        TestData<Integer, Stream<Integer>> data = TestData.Factory.ofArray("Array", countTo(10).toArray(new Integer[0]));
-        @SuppressWarnings("rawtypes")
-        IntermediateTestOp[] opsArray = ops.toArray(new IntermediateTestOp[ops.size()]);
-
-        withData(data).ops(opsArray).
-                without(StreamTestScenario.CLEAR_SIZED_SCENARIOS).
-                exercise();
-    }
-
-    public void testFlagsSizedOrderedParallelCollect() {
-        EnumSet<StreamOpFlag> parKnown = EnumSet.of(StreamOpFlag.SIZED);
-        EnumSet<StreamOpFlag> serKnown = parKnown.clone();
-
-        List<IntermediateTestOp<Integer, Integer>> ops = new ArrayList<>();
-        for (StreamOpFlag f : parKnown) {
-            ops.add(CollectorOps.collector());
-            ops.add(new ParSerTestFlagExpectedOp<>(f.clear(),
-                                             parKnown,
-                                             serKnown));
-            serKnown.remove(f);
-        }
-        ops.add(CollectorOps.collector());
-        ops.add(new ParSerTestFlagExpectedOp<>(0,
-                                         parKnown,
-                                         EnumSet.noneOf(StreamOpFlag.class)));
-
-        TestData<Integer, Stream<Integer>> data = TestData.Factory.ofArray("Array", countTo(10).toArray(new Integer[0]));
-        @SuppressWarnings("rawtypes")
-        IntermediateTestOp[] opsArray = ops.toArray(new IntermediateTestOp[ops.size()]);
-
-        withData(data).ops(opsArray).exercise();
-    }
-
-    static class ParSerTestFlagExpectedOp<T> extends FlagDeclaringOp<T> {
-        final EnumSet<StreamOpFlag> parKnown;
-        final EnumSet<StreamOpFlag> serKnown;
-
-        ParSerTestFlagExpectedOp(int flags, EnumSet<StreamOpFlag> known, EnumSet<StreamOpFlag> serKnown) {
-            super(flags);
-            this.parKnown = known;
-            this.serKnown = serKnown;
-        }
-
-        @Override
-        @SuppressWarnings({"unchecked", "rawtypes"})
-        public Sink<T> opWrapSink(int flags, boolean parallel, Sink upstream) {
-            assertFlags(flags, parallel);
-            return upstream;
-        }
-
-        protected void assertFlags(int flags, boolean parallel) {
-            if (parallel) {
-                for (StreamOpFlag f : parKnown) {
-                    Assert.assertTrue(f.isKnown(flags), String.format("Flag %s is not known, but should be known.", f.toString()));
-                }
-
-            } else {
-                for (StreamOpFlag f : serKnown) {
-                    Assert.assertTrue(f.isKnown(flags), String.format("Flag %s is not known, but should be known.", f.toString()));
-                }
-
-            }
-        }
-    }
-}