Ranides Atterwim 4 лет назад
Родитель
Сommit
18289ec08c

+ 1 - 1
assira.commons/src/main/java/net/ranides/assira/collection/Grid.java

@@ -126,7 +126,7 @@ public class Grid<T> {
     }
 
     public CQuery<GridCursor> stream() {
-        return rows().unfold(r -> r);
+        return rows().flat(r -> r);
     }
 
     public List<Map<String, T>> records() {

+ 3 - 0
assira.core/src/main/java/net/ranides/assira/collection/maps/ArrayMap.java

@@ -116,6 +116,9 @@ public class ArrayMap<K,V> extends AMap<K, V> implements BlockMap<K,V> {
         if(n > capacity()) {
             return false;
         }
+        if(n<size) {
+            throw new IllegalArgumentException(String.format("n= %d is too small (size=%d)", n, size));
+        }
         this.keys = ArrayUtils.slice(keys, 0, n);
         this.vars = ArrayUtils.slice(vars, 0, n);
         return true;

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

@@ -8,9 +8,6 @@ package net.ranides.assira.collection.query;
 
 import net.ranides.assira.collection.HashFunction;
 import net.ranides.assira.collection.iterators.IterableUtils;
-import net.ranides.assira.collection.lists.ReversedList;
-import net.ranides.assira.collection.query.CQuery;
-import net.ranides.assira.collection.query.CQueryFeatures;
 import net.ranides.assira.collection.query.base.CQList;
 import net.ranides.assira.collection.query.derived.*;
 import net.ranides.assira.collection.query.support.BaseArray;
@@ -23,13 +20,10 @@ import net.ranides.assira.collection.query.support.BaseStream;
 import net.ranides.assira.collection.sets.CustomSet;
 import net.ranides.assira.collection.sets.OpenSet;
 import net.ranides.assira.functional.Consumers;
-import net.ranides.assira.functional.Consumers.EachConsumer;
 import net.ranides.assira.functional.FunctionUtils;
 import net.ranides.assira.functional.Functions;
-import net.ranides.assira.functional.Functions.EachFunction;
 import net.ranides.assira.functional.PredicateUtils;
 import net.ranides.assira.functional.Predicates;
-import net.ranides.assira.functional.Predicates.EachPredicate;
 import net.ranides.assira.generic.CompareUtils;
 import net.ranides.assira.generic.SerializationUtils;
 import net.ranides.assira.generic.TypeToken;

+ 2 - 1
assira.core/src/main/java/net/ranides/assira/collection/query/base/CQArraySupplier.java

@@ -2,6 +2,7 @@ package net.ranides.assira.collection.query.base;
 
 import net.ranides.assira.collection.query.CQuery;
 import net.ranides.assira.collection.query.CQueryAbstract;
+import net.ranides.assira.collection.query.support.BaseArray;
 import net.ranides.assira.collection.query.support.BaseList;
 import net.ranides.assira.functional.Predicates;
 
@@ -56,7 +57,7 @@ public abstract class CQArraySupplier<T> extends CQueryAbstract<T> {
 
     @Override
     public Stream<T> stream() {
-        return list().stream();
+        return BaseArray.stream(array());
     }
 
     @Override

+ 1 - 0
assira.core/src/main/java/net/ranides/assira/collection/query/derived/CQAppend.java

@@ -16,6 +16,7 @@ public class CQAppend<T> extends CQueryAbstract<T> {
 
     private final int flags;
 
+    @SuppressWarnings("unchecked")
     public CQAppend(CQuery<T> a, CQuery<T> b) {
         this.array = new CQuery[]{a, b};
         this.flags = BaseFeatures.and(a, b);

+ 1 - 1
assira.core/src/main/java/net/ranides/assira/collection/query/derived/CQReverse.java

@@ -25,7 +25,7 @@ public class CQReverse<T> extends CQListSupplier<T> {
 
     @Override
     public List<T> list() {
-        return new ReversedList<>(list());
+        return new ReversedList<>(that.list());
     }
 
     @Override

+ 1 - 8
assira.core/src/main/java/net/ranides/assira/collection/query/derived/CQSlice.java

@@ -6,7 +6,6 @@ import net.ranides.assira.collection.query.CQueryAbstract;
 import net.ranides.assira.functional.Predicates;
 
 import java.util.Iterator;
-import java.util.List;
 import java.util.stream.Stream;
 
 public class CQSlice<T> extends CQueryAbstract<T> {
@@ -45,7 +44,7 @@ public class CQSlice<T> extends CQueryAbstract<T> {
 
     @Override
     public boolean hasFastList() {
-        return source.hasFastList();
+        return false;
     }
 
     @Override
@@ -68,12 +67,6 @@ public class CQSlice<T> extends CQueryAbstract<T> {
         return Math.max(0, Math.min(source.size(), end) - begin);
     }
 
-    @Override
-    public List<T> list() {
-        List<T> out = source.list();
-        return out.subList(begin, Math.min(out.size(), end));
-    }
-
     @Override
     public boolean whileEach(Predicates.EachPredicate<? super T> consumer) {
         if(!hasFastEach()) {

+ 2 - 1
assira.core/src/main/java/net/ranides/assira/collection/query/derived/CQSort.java

@@ -3,6 +3,7 @@ package net.ranides.assira.collection.query.derived;
 import net.ranides.assira.collection.query.CQueryAbstract;
 import net.ranides.assira.collection.query.base.CQListSupplier;
 
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
@@ -31,7 +32,7 @@ public class CQSort<T> extends CQListSupplier<T> {
 
     @Override
     public List<T> list() {
-        List<T> list = source.list();
+        List<T> list = new ArrayList<>(source.list());
         list.sort(cmp);
         return list;
     }

+ 13 - 7
assira.core/src/main/java/net/ranides/assira/collection/query/support/BaseArray.java

@@ -35,16 +35,19 @@ public class BaseArray {
         return ArrayUtils.iterator(that, begin, end);
     }
 
-    public static <T> Stream<T> stream(T[] that) {
-        return Arrays.stream(that);
+    @SuppressWarnings("unchecked")
+    public static <T> Stream<T> stream(Object[] that) {
+        return (Stream<T>)Arrays.stream(that);
     }
 
-    public static <T> Stream<T> stream(T[] that, int begin, int end) {
-        return Arrays.stream(that, begin, end);
+    @SuppressWarnings("unchecked")
+    public static <T> Stream<T> stream(Object[] that, int begin, int end) {
+        return (Stream<T>)Arrays.stream(that, begin, end);
     }
 
+    @SuppressWarnings("unchecked")
     public static <T> List<T> list(CQueryAbstract<T> that) {
-        return (List)Arrays.asList(that.array());
+        return (List<T>)Arrays.asList(that.array());
     }
 
     public static <T> Set<T> set(CQueryAbstract<T> that) {
@@ -64,6 +67,7 @@ public class BaseArray {
         return at(array, array.length-1);
     }
 
+    @SuppressWarnings("unchecked")
     public static <T> Optional<T> at(Object[] a, int index) {
         return index < a.length ? Optional.of((T) a[index]) : Optional.empty();
     }
@@ -76,9 +80,10 @@ public class BaseArray {
         return at(a, a.length - 1);
     }
 
+    @SuppressWarnings("unchecked")
     public static <A, T> boolean whileEach(A[] array, Predicate<? super T> consumer) {
-        for(int index = 0, n = array.length; index<n; index++) {
-            if( !consumer.test((T)array[index])) {
+        for (A a : array) {
+            if (!consumer.test((T) a)) {
                 return false;
             }
         }
@@ -89,6 +94,7 @@ public class BaseArray {
         return whileEach(that.array(), consumer);
     }
 
+    @SuppressWarnings("unchecked")
     public static <A, T> boolean whileEach(CQueryAbstract<T> that, Predicates.EachPredicate<? super T> consumer) {
         Object[] array = that.array();
         for(int index = 0, n = array.length; index<n; index++) {

+ 3 - 2
assira.core/src/main/java/net/ranides/assira/collection/query/support/BaseEach.java

@@ -33,9 +33,9 @@ public class BaseEach {
     }
 
     public static <T> boolean isEmpty(CQuery<T> that) {
-        boolean[] out = {false};
+        boolean[] out = {true};
         that.whileEach(v -> {
-            out[0] = true;
+            out[0] = false;
             return false;
         });
         return out[0];
@@ -48,6 +48,7 @@ public class BaseEach {
         return collector.finisher().apply(out);
     }
 
+    @SuppressWarnings("unchecked")
     public static <T, A> A[] array(CQuery<T> that, IntFunction<A[]> generator) {
         if (that.features().hasFastLength()) {
             A[] out = generator.apply(that.size());

+ 1 - 0
assira.core/src/main/java/net/ranides/assira/collection/query/support/BaseIterable.java

@@ -60,6 +60,7 @@ public class BaseIterable {
         return collector.finisher().apply(out);
     }
 
+    @SuppressWarnings("unchecked")
     public static <T, A> A[] array(CQueryAbstract<T> that, IntFunction<A[]> generator) {
         if(that.hasFastLength()) {
             A[] out = generator.apply(that.size());

+ 2 - 3
assira.core/src/main/java/net/ranides/assira/collection/query/support/BaseList.java

@@ -35,9 +35,8 @@ public class BaseList {
     }
 
     public static <T> boolean whileEach(CQueryAbstract<T> that, Predicate<? super T> consumer) {
-        List<T> list = that.list();
-        for(int index = 0, n = list.size(); index<n; index++) {
-            if( !consumer.test(list.get(index))) {
+        for (T t : that.list()) {
+            if (!consumer.test(t)) {
                 return false;
             }
         }

+ 2 - 0
assira.core/src/test/java/net/ranides/assira/events/EventLockTest.java

@@ -9,6 +9,8 @@ package net.ranides.assira.events;
 import net.ranides.assira.junit.JCategories;
 import net.ranides.assira.junit.NewAssert;
 import net.ranides.assira.trace.ExceptionUtils;
+
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 

+ 7 - 5
assira.core/src/test/java/net/ranides/assira/reflection/IArgumentsTest.java

@@ -19,6 +19,8 @@ import static net.ranides.assira.reflection.IAttributes.*;
 
 import net.ranides.test.mockup.reflection.ForIArguments.AboutParam;
 import net.ranides.test.mockup.reflection.ForMethodUtils;
+
+import net.ranides.assira.junit.NewAssert;
 import net.ranides.assira.reflection.util.AnnotationBuilder;
 import net.ranides.assira.reflection.util.AnnotationUtils;
 
@@ -132,9 +134,9 @@ public class IArgumentsTest {
         IArguments cparams = IArguments.typeinfo(IClass.typeinfo(boolean.class), new TypeToken<List<String>>(){});
         
         assertThrows(IReflectiveException.class, ()->{
-            cparams.names();
+            cparams.names().toString();
         });
-        
+
         assertSymEquals(cparams.list(), params);
         assertSymEquals(cparams.list().get(0), params.get(0));
         assertSymEquals(cparams.list().get(1), params.get(1));
@@ -148,7 +150,7 @@ public class IArgumentsTest {
         );
         
         assertThrows(IReflectiveException.class, ()->{
-            cparams1.names();
+            cparams1.names().toString();
         });
         
         RandomAccessMap<String, IClass<?>> iparams2 = new RandomAccessMap<>();
@@ -168,10 +170,10 @@ public class IArgumentsTest {
         assertEquals(IContext.DEFAULT, cparams2.list().get(1).context());
 
         assertThrows(IReflectiveException.class, ()->{
-            cparams2.parent().list();
+            cparams2.parent().list().toString();
         });
         assertThrows(IReflectiveException.class, ()->{
-            cparams2.reflective().list();
+            cparams2.reflective().list().toString();
         });
         
     }

+ 1 - 0
assira.core/src/test/java/net/ranides/assira/reflection/util/ServiceScannerTest.java

@@ -37,6 +37,7 @@ public class ServiceScannerTest {
 
     @Test
     public void lazy() {
+        // to jest ważny błąd w semantyce CQuery! Coś leniwie obliczanego nie jest leniwe
         List<String> names = new ArrayList<>();
 
         CQuery<URIHandler> query = ServiceScanner.scanner(URIHandler.class)