diff options
Diffstat (limited to 'vespajlib/src/test/java/com/yahoo/collections/AbstractFilteringListTest.java')
-rw-r--r-- | vespajlib/src/test/java/com/yahoo/collections/AbstractFilteringListTest.java | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vespajlib/src/test/java/com/yahoo/collections/AbstractFilteringListTest.java b/vespajlib/src/test/java/com/yahoo/collections/AbstractFilteringListTest.java new file mode 100644 index 00000000000..3f9342c5f45 --- /dev/null +++ b/vespajlib/src/test/java/com/yahoo/collections/AbstractFilteringListTest.java @@ -0,0 +1,69 @@ +package com.yahoo.collections; + +import org.junit.Test; + +import java.util.Comparator; +import java.util.List; +import java.util.Locale; + +import static org.junit.Assert.assertEquals; + +/** + * @author jonmv + */ +public class AbstractFilteringListTest { + + @Test + public void testOperations() { + MyList list = MyList.of("ABC", "abc", "cba", "bbb", "ABC"); + + assertEquals(List.of("ABC", "abc", "cba", "bbb", "ABC"), + list.first(100).asList()); + + assertEquals(List.of("ABC", "abc"), + list.first(2).asList()); + + assertEquals(List.of("cba", "bbb", "ABC"), + list.not().first(2).asList()); + + assertEquals(List.of("ABC", "ABC", "abc", "bbb"), + list.sortedBy(Comparator.naturalOrder()).first(4).asList()); + + assertEquals(List.of("abc", "cba", "bbb"), + list.allLowercase().asList()); + + assertEquals(List.of("ABC", "ABC"), + list.not().allLowercase().asList()); + + assertEquals(List.of("abc", "cba", "bbb"), + list.not().not().allLowercase().asList()); + + assertEquals(List.of(3, 3, 3, 3, 3), + list.mapToList(String::length)); + + assertEquals(List.of("ABC", "ABC"), + list.in(MyList.of("ABC", "CBA")).asList()); + + assertEquals(List.of("abc", "cba", "bbb"), + list.not().in(MyList.of("ABC", "CBA")).asList()); + + assertEquals(List.of("ABC", "abc", "cba", "bbb", "ABC", "aaa"), + list.and(MyList.of("aaa")).asList()); + } + + private static class MyList extends AbstractFilteringList<String, MyList> { + + private MyList(List<String> strings, boolean negate) { + super(strings, negate, MyList::new); + } + + private static MyList of(String... strings) { + return new MyList(List.of(strings), false); + } + + private MyList allLowercase() { + return matching(string -> string.toLowerCase(Locale.ROOT).equals(string)); + } + } + +} |