14c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin/* 24c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 34c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 44c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * 54c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * This code is free software; you can redistribute it and/or modify it 64c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * under the terms of the GNU General Public License version 2 only, as 74c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * published by the Free Software Foundation. 84c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * 94c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * This code is distributed in the hope that it will be useful, but WITHOUT 104c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 114c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 124c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * version 2 for more details (a copy is included in the LICENSE file that 134c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * accompanied this code). 144c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * 154c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * You should have received a copy of the GNU General Public License version 164c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * 2 along with this work; if not, write to the Free Software Foundation, 174c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 184c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * 194c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 204c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * or visit www.oracle.com if you need additional information or have any 214c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * questions. 224c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin */ 234c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinpackage java.util.stream; 244c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 254c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport org.testng.annotations.Test; 264c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 274c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.ArrayList; 284c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.Arrays; 294c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.Comparator; 304c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.EnumSet; 314c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.List; 324c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.Spliterator; 334c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.function.Consumer; 344c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.function.Function; 354c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.function.ToDoubleFunction; 364c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.function.ToIntFunction; 374c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport java.util.function.ToLongFunction; 384c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 394c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport static java.util.stream.Collectors.toList; 404c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport static java.util.stream.StreamOpFlag.*; 414c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport static org.testng.Assert.*; 424c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinimport static org.testng.Assert.assertEquals; 434c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 444c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin@Test 454c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinpublic class StreamOpFlagsTest { 464c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 474c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testNullCombine() { 484c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int sourceFlags = StreamOpFlag.IS_SIZED; 494c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 504c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(sourceFlags, toStreamFlags(combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE))); 514c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 524c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 534c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testInitialOpFlagsFromSourceFlags() { 544c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin List<StreamOpFlag> flags = new ArrayList<>(StreamOpFlagTestHelper.allStreamFlags()); 554c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (int i = 0; i < (1 << flags.size()); i++) { 564c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int sourceFlags = 0; 574c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (int f = 0; f < flags.size(); f++) { 584c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin if ((i & (1 << f)) != 0) { 594c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin sourceFlags |= flags.get(f).set(); 604c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 614c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 624c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 634c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 644c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(opsFlags, (~(sourceFlags << 1)) & StreamOpFlag.INITIAL_OPS_VALUE); 654c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 664c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 674c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 684c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testSameCombine() { 694c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (StreamOpFlag f : StreamOpFlagTestHelper.allStreamFlags()) { 704c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int sourceFlags = f.set(); 714c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags; 724c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 734c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 744c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f.set(), opsFlags); 754c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(sourceFlags, toStreamFlags(opsFlags)); 764c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 774c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 784c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 794c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testOpClear() { 804c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (StreamOpFlag f : StreamOpFlagTestHelper.allStreamFlags()) { 814c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin // Clear when source not set 824c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int sourceFlags = 0; 834c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags; 844c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 854c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 864c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f.clear(), opsFlags); 874c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(sourceFlags, toStreamFlags(opsFlags)); 884c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 894c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin // Clear when source set 904c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin sourceFlags = f.set(); 914c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 924c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 934c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f.clear(), opsFlags); 944c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(0, toStreamFlags(opsFlags)); 954c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 964c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 974c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 984c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testOpInject() { 994c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (StreamOpFlag f : StreamOpFlagTestHelper.allStreamFlags()) { 1004c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin // Set when source not set 1014c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int sourceFlags = 0; 1024c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags; 1034c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1044c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 1054c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f.set(), opsFlags); 1064c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(f.set(), toStreamFlags(opsFlags)); 1074c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1084c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin // Set when source set 1094c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin sourceFlags = f.set(); 1104c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1114c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 1124c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f.set(), opsFlags); 1134c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(sourceFlags, toStreamFlags(opsFlags)); 1144c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1154c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1164c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1174c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testPairSet() { 1184c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin List<Integer> sourceFlagsList 1194c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin = StreamOpFlagTestHelper.allStreamFlags().stream().map(StreamOpFlag::set).collect(toList()); 1204c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin sourceFlagsList.add(0, 0); 1214c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1224c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (int sourceFlags : sourceFlagsList) { 1234c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (StreamOpFlag f1 : StreamOpFlagTestHelper.allStreamFlags()) { 1244c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (StreamOpFlag f2 : StreamOpFlagTestHelper.allStreamFlags()) { 1254c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags; 1264c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1274c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 1284c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f1.set(), opsFlags); 1294c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f2.set(), opsFlags); 1304c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(sourceFlags | f1.set() | f2.set(), toStreamFlags(opsFlags)); 1314c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1324c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1334c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1344c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1354c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1364c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testPairSetAndClear() { 1374c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin List<Integer> sourceFlagsList 1384c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin = StreamOpFlagTestHelper.allStreamFlags().stream().map(StreamOpFlag::set).collect(toList()); 1394c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin sourceFlagsList.add(0, 0); 1404c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1414c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (int sourceFlags : sourceFlagsList) { 1424c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (StreamOpFlag f1 : StreamOpFlagTestHelper.allStreamFlags()) { 1434c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (StreamOpFlag f2 : StreamOpFlagTestHelper.allStreamFlags()) { 1444c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags; 1454c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1464c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 1474c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f1.set(), opsFlags); 1484c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(f2.clear(), opsFlags); 1494c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin if (f1 == f2) 1504c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals((f2.set() == sourceFlags) ? 0 : sourceFlags, toStreamFlags(opsFlags)); 1514c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin else 1524c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals((f2.set() == sourceFlags) ? f1.set() : sourceFlags | f1.set(), toStreamFlags(opsFlags)); 1534c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1544c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1554c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1564c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1574c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1584c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testShortCircuit() { 1594c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags = combineOpFlags(0, StreamOpFlag.INITIAL_OPS_VALUE); 1604c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.SHORT_CIRCUIT.isKnown(opsFlags)); 1614c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1624c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(StreamOpFlag.IS_SHORT_CIRCUIT, opsFlags); 1634c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.SHORT_CIRCUIT.isKnown(opsFlags)); 1644c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1654c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(0, opsFlags); 1664c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.SHORT_CIRCUIT.isKnown(opsFlags)); 1674c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1684c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1694c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testApplySourceFlags() { 1704c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int sourceFlags = StreamOpFlag.IS_SIZED | StreamOpFlag.IS_DISTINCT; 1714c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1724c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin List<Integer> ops = Arrays.asList(StreamOpFlag.NOT_SIZED, StreamOpFlag.IS_ORDERED | StreamOpFlag.IS_SORTED); 1734c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1744c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int opsFlags = StreamOpFlag.combineOpFlags(sourceFlags, StreamOpFlag.INITIAL_OPS_VALUE); 1754c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (int opFlags : ops) { 1764c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin opsFlags = combineOpFlags(opFlags, opsFlags); 1774c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1784c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.SIZED.isKnown(opsFlags)); 1794c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.SIZED.isCleared(opsFlags)); 1804c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.SIZED.isPreserved(opsFlags)); 1814c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.DISTINCT.isKnown(opsFlags)); 1824c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.DISTINCT.isCleared(opsFlags)); 1834c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.DISTINCT.isPreserved(opsFlags)); 1844c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.SORTED.isKnown(opsFlags)); 1854c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.SORTED.isCleared(opsFlags)); 1864c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.SORTED.isPreserved(opsFlags)); 1874c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.ORDERED.isKnown(opsFlags)); 1884c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.ORDERED.isCleared(opsFlags)); 1894c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.ORDERED.isPreserved(opsFlags)); 1904c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1914c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int streamFlags = toStreamFlags(opsFlags); 1924c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertFalse(StreamOpFlag.SIZED.isKnown(streamFlags)); 1934c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.DISTINCT.isKnown(streamFlags)); 1944c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.SORTED.isKnown(streamFlags)); 1954c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTrue(StreamOpFlag.ORDERED.isKnown(streamFlags)); 1964c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 1974c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 1984c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testSpliteratorMask() { 1994c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.DISTINCT.set(), StreamOpFlag.IS_DISTINCT); 2004c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.DISTINCT.clear(), 0); 2014c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2024c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.SORTED.set(), StreamOpFlag.IS_SORTED); 2034c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.SORTED.clear(), 0); 2044c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2054c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.ORDERED.set(), StreamOpFlag.IS_ORDERED); 2064c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.ORDERED.clear(), 0); 2074c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2084c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.SIZED.set(), StreamOpFlag.IS_SIZED); 2094c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.SIZED.clear(), 0); 2104c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2114c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.SHORT_CIRCUIT.set(), 0); 2124c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorMask(StreamOpFlag.SHORT_CIRCUIT.clear(), 0); 2134c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2144c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2154c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin private void assertSpliteratorMask(int actual, int expected) { 2164c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(actual & StreamOpFlag.SPLITERATOR_CHARACTERISTICS_MASK, expected); 2174c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2184c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2194c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testStreamMask() { 2204c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.DISTINCT.set(), StreamOpFlag.IS_DISTINCT); 2214c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.DISTINCT.clear(), 0); 2224c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2234c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.SORTED.set(), StreamOpFlag.IS_SORTED); 2244c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.SORTED.clear(), 0); 2254c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2264c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.ORDERED.set(), StreamOpFlag.IS_ORDERED); 2274c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.ORDERED.clear(), 0); 2284c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2294c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.SIZED.set(), StreamOpFlag.IS_SIZED); 2304c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.SIZED.clear(), 0); 2314c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2324c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.SHORT_CIRCUIT.set(), 0); 2334c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertStreamMask(StreamOpFlag.SHORT_CIRCUIT.clear(), 0); 2344c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2354c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2364c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin private void assertStreamMask(int actual, int expected) { 2374c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(actual & StreamOpFlag.STREAM_MASK, expected); 2384c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2394c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2404c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testOpMask() { 2414c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.DISTINCT.set(), StreamOpFlag.IS_DISTINCT); 2424c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.DISTINCT.clear(), StreamOpFlag.NOT_DISTINCT); 2434c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2444c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.SORTED.set(), StreamOpFlag.IS_SORTED); 2454c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.SORTED.clear(), StreamOpFlag.NOT_SORTED); 2464c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2474c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.ORDERED.set(), StreamOpFlag.IS_ORDERED); 2484c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.ORDERED.clear(), StreamOpFlag.NOT_ORDERED); 2494c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2504c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.SIZED.set(), 0); 2514c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.SIZED.clear(), StreamOpFlag.NOT_SIZED); 2524c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2534c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.SHORT_CIRCUIT.set(), StreamOpFlag.IS_SHORT_CIRCUIT); 2544c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertOpMask(StreamOpFlag.SHORT_CIRCUIT.clear(), 0); 2554c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2564c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2574c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin private void assertOpMask(int actual, int expected) { 2584c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(actual & StreamOpFlag.OP_MASK, expected); 2594c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2604c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2614c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testTerminalOpMask() { 2624c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.DISTINCT.set(), 0); 2634c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.DISTINCT.clear(), 0); 2644c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2654c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.SORTED.set(), 0); 2664c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.SORTED.clear(), 0); 2674c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2684c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.ORDERED.set(), 0); 2694c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.ORDERED.clear(), StreamOpFlag.NOT_ORDERED); 2704c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2714c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.SIZED.set(), 0); 2724c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.SIZED.clear(), 0); 2734c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2744c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.SHORT_CIRCUIT.set(), StreamOpFlag.IS_SHORT_CIRCUIT); 2754c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertTerminalOpMask(StreamOpFlag.SHORT_CIRCUIT.clear(), 0); 2764c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2774c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2784c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin private void assertTerminalOpMask(int actual, int expected) { 2794c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(actual & StreamOpFlag.TERMINAL_OP_MASK, expected); 2804c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2814c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2824c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testUpstreamTerminalOpMask() { 2834c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.DISTINCT.set(), 0); 2844c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.DISTINCT.clear(), 0); 2854c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2864c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.SORTED.set(), 0); 2874c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.SORTED.clear(), 0); 2884c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2894c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.ORDERED.set(), 0); 2904c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.ORDERED.clear(), StreamOpFlag.NOT_ORDERED); 2914c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2924c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.SIZED.set(), 0); 2934c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.SIZED.clear(), 0); 2944c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2954c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.SHORT_CIRCUIT.set(), 0); 2964c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertUpstreamTerminalOpMask(StreamOpFlag.SHORT_CIRCUIT.clear(), 0); 2974c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 2984c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 2994c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin private void assertUpstreamTerminalOpMask(int actual, int expected) { 3004c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(actual & StreamOpFlag.UPSTREAM_TERMINAL_OP_MASK, expected); 3014c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3024c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3034c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testSpliteratorCharacteristics() { 3044c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(Spliterator.DISTINCT, StreamOpFlag.IS_DISTINCT); 3054c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(Spliterator.SORTED, StreamOpFlag.IS_SORTED); 3064c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(Spliterator.ORDERED, StreamOpFlag.IS_ORDERED); 3074c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(Spliterator.SIZED, StreamOpFlag.IS_SIZED); 3084c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3094c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin List<Integer> others = Arrays.asList(Spliterator.NONNULL, Spliterator.IMMUTABLE, 3104c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin Spliterator.CONCURRENT, Spliterator.SUBSIZED); 3114c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin for (int c : others) { 3124c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertNotEquals(c, StreamOpFlag.IS_SHORT_CIRCUIT); 3134c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3144c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3154c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3164c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testSpliteratorCharacteristicsMask() { 3174c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.DISTINCT.set(), StreamOpFlag.IS_DISTINCT); 3184c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.DISTINCT.clear(), 0); 3194c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3204c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.SORTED.set(), StreamOpFlag.IS_SORTED); 3214c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.SORTED.clear(), 0); 3224c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3234c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.ORDERED.set(), StreamOpFlag.IS_ORDERED); 3244c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.ORDERED.clear(), 0); 3254c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3264c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.SIZED.set(), StreamOpFlag.IS_SIZED); 3274c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.SIZED.clear(), 0); 3284c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3294c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.SHORT_CIRCUIT.set(), 0); 3304c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertSpliteratorCharacteristicsMask(StreamOpFlag.SHORT_CIRCUIT.clear(), 0); 3314c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3324c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3334c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin private void assertSpliteratorCharacteristicsMask(int actual, int expected) { 3344c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(StreamOpFlag.fromCharacteristics(actual), expected); 3354c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3364c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3374c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public void testSpliteratorSorted() { 3384c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin class SortedEmptySpliterator implements Spliterator<Object> { 3394c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin final Comparator<Object> c; 3404c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3414c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin SortedEmptySpliterator(Comparator<Object> c) { 3424c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin this.c = c; 3434c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3444c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3454c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin @Override 3464c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public Spliterator<Object> trySplit() { 3474c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin return null; 3484c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3494c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3504c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin @Override 3514c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public boolean tryAdvance(Consumer<? super Object> action) { 3524c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin return false; 3534c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3544c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3554c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin @Override 3564c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public long estimateSize() { 3574c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin return Long.MAX_VALUE; 3584c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3594c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3604c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin @Override 3614c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public int characteristics() { 3624c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin return Spliterator.SORTED; 3634c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3644c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3654c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin @Override 3664c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin public Comparator<? super Object> getComparator() { 3674c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin return c; 3684c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3694c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin }; 3704c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3714c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin { 3724c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int flags = StreamOpFlag.fromCharacteristics(new SortedEmptySpliterator(null)); 3734c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(flags, StreamOpFlag.IS_SORTED); 3744c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3754c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin 3764c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin { 3774c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin int flags = StreamOpFlag.fromCharacteristics(new SortedEmptySpliterator((a, b) -> 0)); 3784c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin assertEquals(flags, 0); 3794c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3804c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin } 3814c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin} 382