Skip to content

Commit

Permalink
Override TagList::spliterator to return Spliterator with exact size (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
kilink committed Sep 12, 2022
1 parent 710f5c3 commit 2b0b1eb
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
Expand Up @@ -20,6 +20,8 @@
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.BiConsumer;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
Expand Down Expand Up @@ -116,4 +118,9 @@ default void forEach(BiConsumer<String, String> consumer) {
return size() - other.size();
}
}

@Override
default Spliterator<Tag> spliterator() {
return Spliterators.spliterator(iterator(), size(), Spliterator.ORDERED);
}
}
Expand Up @@ -28,6 +28,7 @@
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.Spliterator;

public class DefaultIdTest {

Expand Down Expand Up @@ -384,4 +385,14 @@ public void unsafeCreateDuplicates() {
Id expected = Id.create("foo").withTags("k1", "_", "k1", "v1", "k2", "v2");
Assertions.assertEquals(expected, id);
}

@Test
public void spliteratorSizeAndCharacteristics() {
Id id = Id.create("foo").withTags("k1", "v1", "k2", "v2");
Spliterator<Tag> spliterator = id.spliterator();

Assertions.assertTrue(spliterator.hasCharacteristics(Spliterator.ORDERED));
Assertions.assertTrue(spliterator.hasCharacteristics(Spliterator.SIZED));
Assertions.assertEquals(3, spliterator.getExactSizeIfKnown());
}
}

0 comments on commit 2b0b1eb

Please sign in to comment.