Ver código fonte

fix: CQuery#mapIf, flatIf, ...

Mariusz Czarnowski 4 anos atrás
pai
commit
ec86e254b6

+ 5 - 5
assira.core/src/main/java/net/ranides/assira/collection/query/CQueryAbstract.java

@@ -148,12 +148,12 @@ public abstract class CQueryAbstract<T> implements CQuery<T> {
 
     @Override
     public CQuery<T> mapIf(Predicate<? super T> p, Function<? super T, ? extends T> f) {
-        return map(v -> p.test(v) ? v : f.apply(v));
+        return map(v -> !p.test(v) ? v : f.apply(v));
     }
 
     @Override
     public CQuery<T> mapEachIf(EachPredicate<? super T> p, EachFunction<? super T, ? extends T> f) {
-        return mapEach((i, v) -> p.test(i, v) ? v : f.apply(i,v));
+        return mapEach((i, v) -> !p.test(i, v) ? v : f.apply(i,v));
     }
 
     @Override
@@ -163,7 +163,7 @@ public abstract class CQueryAbstract<T> implements CQuery<T> {
 
     @Override
     public CQuery<T> unfoldIf(Predicate<? super T> p, Function<? super T, CQuery<T>> f) {
-        return flat(v -> p.test(v) ? Collections.singleton(v) : f.apply(v));
+        return flat(v -> !p.test(v) ? Collections.singleton(v) : f.apply(v));
     }
 
     @Override
@@ -173,7 +173,7 @@ public abstract class CQueryAbstract<T> implements CQuery<T> {
 
     @Override
     public CQuery<T> flatIf(Predicate<? super T> p, Function<? super T, Iterable<T>> f) {
-        return flat(v -> p.test(v) ? Collections.singleton(v) : f.apply(v));
+        return flat(v -> !p.test(v) ? Collections.singleton(v) : f.apply(v));
     }
 
     @Override
@@ -183,7 +183,7 @@ public abstract class CQueryAbstract<T> implements CQuery<T> {
 
     @Override
     public CQuery<T> splitIf(Predicate<? super T> p, Function<? super T, T[]> f) {
-        return flat(v -> p.test(v) ? Collections.singleton(v) : Arrays.asList(f.apply(v)));
+        return flat(v -> !p.test(v) ? Collections.singleton(v) : Arrays.asList(f.apply(v)));
     }
 
     @Override

+ 16 - 0
assira.core/src/test/java/net/ranides/assira/collection/query/CQueryTest.java

@@ -108,4 +108,20 @@ public class CQueryTest {
 
 
     }
+
+    @Test
+    public void testFlat() {
+        List<Integer> value1 = CQuery.from()
+                .values(1, 2, 3, 4, 5, 6)
+                .flat(v -> Arrays.asList(v, 10 * v, 100 * v))
+                .list();
+        assertEquals(Arrays.asList(1,10,100,2,20,200,3,30,300,4,40,400,5,50,500,6,60,600), value1);
+
+        List<Integer> value2 = CQuery.from()
+                .values(1, 2, 3, 4, 5, 6)
+                .flatIf(v -> v%2==0, v -> Arrays.asList(v, 10 * v, 100 * v))
+                .list();
+
+        assertEquals(Arrays.asList(1,2,20,200,3,4,40,400,5,6,60,600), value2);
+    }
 }