|
|
@@ -7,6 +7,7 @@ import org.junit.Test;
|
|
|
import net.ranides.assira.collection.IntComparator;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
import java.util.function.Function;
|
|
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
@@ -22,8 +23,41 @@ public class CQueryFunctionTest {
|
|
|
.sort(IntComparator.DESC);
|
|
|
|
|
|
CQuery<String> input = CQuery.from().values("1,2,8", "o,t,h,er", "6 9 4", "q", "7;3");
|
|
|
+ List<Integer> list1 = input.apply(filter).list();
|
|
|
+ assertEquals(Arrays.asList(9,8,7,6,4,3,2,1), list1);
|
|
|
+
|
|
|
+ List<Integer> list2 = CQuery.from()
|
|
|
+ .values("hello", "world", "end", "here", "!")
|
|
|
+ .map(String::length)
|
|
|
+ .map(String::valueOf)
|
|
|
+ .apply(filter)
|
|
|
+ .list();
|
|
|
+ assertEquals(Arrays.asList(5, 5, 4, 3, 1), list2);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void generic() {
|
|
|
+ CQueryFunction<CharSequence, Integer> f1 = CQueryFunction.<CharSequence>prepare().map(s -> Integer.valueOf(s.toString()));
|
|
|
+ CQueryFunction<Text, Integer> f2 = CQueryFunction.<Text>prepare().map(s -> Integer.valueOf(s.toString()));
|
|
|
+ CQueryFunction<TextValue, Integer> f3 = CQueryFunction.<TextValue>prepare().map(s -> Integer.valueOf(s.text.toString()));
|
|
|
+
|
|
|
+ CQuery<CharSequence> s1 = CQuery.from().values("1", "2", "5", "8");
|
|
|
+ CQuery<Text> s2 = CQuery.from().values("1", "2", "5", "8").map(TextValue::new);
|
|
|
+ CQuery<TextValue> s3 = CQuery.from().values("1", "2", "5", "8").map(TextValue::new);
|
|
|
+
|
|
|
+ List<Integer> expect = Arrays.asList(5, 5, 4, 3, 1);
|
|
|
+
|
|
|
+ assertEquals(expect, s1.apply(f1));
|
|
|
+// assertEquals(expect, s1.apply(f2)); // compilation error expected
|
|
|
+// assertEquals(expect, s1.apply(f3)); // compilation error expected
|
|
|
+
|
|
|
+ assertEquals(expect, s2.apply(f1));
|
|
|
+ assertEquals(expect, s2.apply(f2));
|
|
|
+// assertEquals(expect, s2.apply(f3)); // compilation error expected
|
|
|
|
|
|
- assertEquals(Arrays.asList(9,8,7,6,4,3,2,1), input.apply(filter).list() );
|
|
|
+ assertEquals(expect, s3.apply(f1));
|
|
|
+ assertEquals(expect, s3.apply(f2));
|
|
|
+ assertEquals(expect, s3.apply(f3));
|
|
|
}
|
|
|
|
|
|
private interface Text extends CharSequence {
|