1289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin/*
2289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
3289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin *
5289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * This code is free software; you can redistribute it and/or modify it
6289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * under the terms of the GNU General Public License version 2 only, as
7289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * published by the Free Software Foundation.
8289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin *
9289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * This code is distributed in the hope that it will be useful, but WITHOUT
10289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * version 2 for more details (a copy is included in the LICENSE file that
13289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * accompanied this code).
14289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin *
15289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * You should have received a copy of the GNU General Public License version
16289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * 2 along with this work; if not, write to the Free Software Foundation,
17289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin *
19289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * or visit www.oracle.com if you need additional information or have any
21289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin * questions.
22289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin */
23289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinpackage org.openjdk.testlib.java.util.stream;
24289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin
25289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport java.util.EnumSet;
26289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport java.util.stream.BaseStream;
27289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport java.util.stream.StreamOpFlag;
28289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinimport java.util.stream.Stream;
29289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin
30289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkinpublic class StreamOpFlagTestHelper {
31289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin
32289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    /** EnumSet containing stream flags */
33289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    private static final EnumSet<StreamOpFlag> allStreamFlags;
34289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin
35289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    static {
36289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin        allStreamFlags = EnumSet.allOf(StreamOpFlag.class);
37289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin        for (StreamOpFlag f : EnumSet.allOf(StreamOpFlag.class))
38289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin            if (!f.isStreamFlag())
39289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin                allStreamFlags.remove(f);
40289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    }
41289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin
42289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin
43289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    static EnumSet<StreamOpFlag> allStreamFlags() {
44289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin        // EnumSet is mutable
45289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin        return allStreamFlags.clone();
46289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    }
47289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin
48289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    public static boolean isStreamOrdered(Stream<?> s) {
49289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin        return StreamOpFlag.ORDERED.isKnown(OpTestCase.getStreamFlags(s));
50289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin    }
51289e51c2258b001f2aa6d6e67b21be7bb65d5102Igor Murashkin}
52