/* * Copyright 2015, 2016 Tagir Valeev * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package one.util.streamex; import static one.util.streamex.TestHelpers.*; import static org.junit.Assert.*; import java.util.Collections; import java.util.Spliterator; import one.util.streamex.ConstSpliterator; import one.util.streamex.ConstSpliterator.OfRef; import org.junit.Test; /** * @author Tagir Valeev */ public class ConstSpliteratorTest { @Test public void testConstant() { checkSpliterator("ref", Collections.nCopies(100, "val"), () -> new ConstSpliterator.OfRef<>("val", 100, false)); checkSpliterator("ref", Collections.nCopies(100, Integer.MIN_VALUE), () -> new ConstSpliterator.OfInt( Integer.MIN_VALUE, 100, false)); checkSpliterator("ref", Collections.nCopies(100, Long.MIN_VALUE), () -> new ConstSpliterator.OfLong( Long.MIN_VALUE, 100, false)); checkSpliterator("ref", Collections.nCopies(100, Double.MIN_VALUE), () -> new ConstSpliterator.OfDouble( Double.MIN_VALUE, 100, false)); } @Test public void testCharacteristics() { OfRef<String> spltr = new ConstSpliterator.OfRef<>("val", 4, true); assertTrue(spltr.hasCharacteristics(Spliterator.ORDERED)); assertTrue(spltr.hasCharacteristics(Spliterator.SIZED)); assertTrue(spltr.hasCharacteristics(Spliterator.SUBSIZED)); assertTrue(spltr.hasCharacteristics(Spliterator.IMMUTABLE)); assertFalse(new ConstSpliterator.OfRef<>("val", 4, false).hasCharacteristics(Spliterator.ORDERED)); } @Test public void testSplit() { OfRef<String> spltr = new ConstSpliterator.OfRef<>("val", 4, true); assertEquals(4, spltr.getExactSizeIfKnown()); spltr = spltr.trySplit(); assertEquals(2, spltr.getExactSizeIfKnown()); spltr = spltr.trySplit(); assertEquals(1, spltr.getExactSizeIfKnown()); assertNull(spltr.trySplit()); assertTrue(spltr.tryAdvance(x -> assertEquals("val", x))); assertEquals(0, spltr.getExactSizeIfKnown()); assertNull(spltr.trySplit()); } }