Explorar o código

new: IntArrays

Ranides Atterwim %!s(int64=10) %!d(string=hai) anos
pai
achega
371ba01fe4

+ 53 - 0
assira/src/main/java/net/ranides/assira/collection/arrays/IntArrays.java

@@ -0,0 +1,53 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.collection.arrays;
+
+import static net.ranides.assira.collection.arrays.NativeArrayUtils.iterator;
+import net.ranides.assira.collection.iterators.IntIterator;
+import net.ranides.assira.collection.iterators.IntListIterator;
+import net.ranides.assira.collection.iterators.RandomAccessIntIterator;
+import net.ranides.assira.collection.iterators.RandomAccessIterator;
+import net.ranides.assira.collection.lists.IntList;
+import net.ranides.assira.collection.lists.NativeArrayList;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public final class IntArrays {
+    
+    private IntArrays() {
+        /* utility class */
+    }
+    
+    public static IntList asList(int... array) {
+		return NativeArrayList.wrap(array);
+	}
+    
+    public static IntListIterator iterator(int[] array) {
+        return iterator(array, 0, array.length);
+    }
+    
+    public static IntListIterator iterator(int[] array, int begin, int end) {
+        return new RandomAccessIntIterator() {
+            @Override
+            protected int size() {
+                return end-begin;
+            }
+
+            @Override
+            protected int get(int index) {
+                return array[begin+index];
+            }
+
+            @Override
+            protected void set(int index, int value) {
+                array[begin+index] = value;
+            }
+        };
+    }
+}

+ 4 - 0
assira/src/main/java/net/ranides/assira/collection/iterators/RandomAccessIntIterator.java

@@ -29,6 +29,10 @@ public abstract class RandomAccessIntIterator implements IntListIterator {
     protected void set(int index, int value) {
         throw new UnsupportedOperationException();
     }
+    
+    public RandomAccessIntIterator() {
+        this(0);
+    }
 
     public RandomAccessIntIterator(int index) {
         this.index = index;

+ 0 - 4
assira/src/main/java/net/ranides/assira/collection/lists/IntList.java

@@ -16,10 +16,6 @@ import net.ranides.assira.collection.iterators.IntListIterator;
  */
 public interface IntList extends IntCollection, List<Integer> {
 	
-	static IntList asList(int... array) {
-		return NativeArrayList.wrap(array);
-	}
-    
     void add(int index, int k);
 
     boolean addAll(IntList list);

+ 13 - 13
assira/src/test/java/net/ranides/assira/collection/IntCollectionUtilsTest.java

@@ -6,8 +6,8 @@
  */
 package net.ranides.assira.collection;
 
-import java.lang.invoke.MethodHandles;
 import java.util.NoSuchElementException;
+import net.ranides.assira.collection.arrays.IntArrays;
 import net.ranides.assira.collection.lists.IntList;
 import net.ranides.assira.collection.sets.IntHashSet;
 import net.ranides.assira.collection.sets.IntSet;
@@ -23,9 +23,9 @@ public class IntCollectionUtilsTest {
 	
 	@Test
     public void testFirst() {
-		IntList list8 = IntList.asList(1, 2, 13, 4, 15, 6, 17, 8);
-		IntList list1 = IntList.asList(1);
-		IntList list0 = IntList.asList();
+		IntList list8 = IntArrays.asList(1, 2, 13, 4, 15, 6, 17, 8);
+		IntList list1 = IntArrays.asList(1);
+		IntList list0 = IntArrays.asList();
 		
         assertEquals(1, IntCollectionUtils.first(list8));
         assertEquals(1, IntCollectionUtils.first(list1));
@@ -43,9 +43,9 @@ public class IntCollectionUtilsTest {
 	
 	@Test
     public void testLast() {
-		IntList list8 = IntList.asList(1, 2, 13, 4, 15, 6, 17, 8);
-		IntList list1 = IntList.asList(1);
-		IntList list0 = IntList.asList();
+		IntList list8 = IntArrays.asList(1, 2, 13, 4, 15, 6, 17, 8);
+		IntList list1 = IntArrays.asList(1);
+		IntList list0 = IntArrays.asList();
 		
         assertEquals(8, IntCollectionUtils.last(list8));
         assertEquals(1, IntCollectionUtils.last(list1));
@@ -63,8 +63,8 @@ public class IntCollectionUtilsTest {
 	
 	@Test
 	public void testFilter() {
-		IntCollection c = IntCollectionUtils.filter(IntList.asList(1,2,3,4,5,6), v -> 0==v%2);
-		assertTrue("not expected: "+c, IntCollectionUtils.equivalent(IntList.asList(2,4,6), c));
+		IntCollection c = IntCollectionUtils.filter(IntArrays.asList(1,2,3,4,5,6), v -> 0==v%2);
+		assertTrue("not expected: "+c, IntCollectionUtils.equivalent(IntArrays.asList(2,4,6), c));
 		assertTrue(c.contains(2));
 		assertFalse(c.contains(8));
 		assertFalse(c.contains(3));
@@ -72,10 +72,10 @@ public class IntCollectionUtilsTest {
 	
 	@Test
 	public void testEquivalent() {
-		IntList a = IntList.asList(1,2,3,4,5);
-		IntList b = IntList.asList(1,5,4,3,2);
-		IntList c = IntList.asList(1,5,4,3,8);
-		IntList d = IntList.asList(1,5,4,3);
+		IntList a = IntArrays.asList(1,2,3,4,5);
+		IntList b = IntArrays.asList(1,5,4,3,2);
+		IntList c = IntArrays.asList(1,5,4,3,8);
+		IntList d = IntArrays.asList(1,5,4,3);
 		
 		IntSet e = new IntHashSet(a);
 		

+ 3 - 2
assira/src/test/java/net/ranides/assira/collection/SwapperTest.java

@@ -8,6 +8,7 @@ package net.ranides.assira.collection;
 
 import java.util.Arrays;
 import java.util.List;
+import net.ranides.assira.collection.arrays.IntArrays;
 import net.ranides.assira.collection.lists.IntList;
 import org.junit.Test;
 import static org.junit.Assert.*;
@@ -23,9 +24,9 @@ public class SwapperTest {
 
 	@Test
 	public void testSwapper() {
-		IntList list1 = IntList.asList(1,2,3,4);
+		IntList list1 = IntArrays.asList(1,2,3,4);
 		Swapper.swapper(list1).swap(0, 2);
-		assertEquals(IntList.asList(3,2,1,4), list1);
+		assertEquals(IntArrays.asList(3,2,1,4), list1);
 		
 		List<String> list2 = Arrays.asList("1","2","3","4");
 		Swapper.swapper(list2).swap(0, 2);

+ 30 - 0
assira/src/test/java/net/ranides/assira/collection/arrays/IntArraysTest.java

@@ -0,0 +1,30 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.collection.arrays;
+
+import net.ranides.assira.collection.suite.IteratorTester;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public class IntArraysTest {
+    
+    public IntArraysTest() {
+    }
+
+    @Test
+    public void testIterator() {
+        int[] v1 = new int[]{1,2,3,4,5,6,7,8};
+        IteratorTester.listIterator(IntArrays.iterator(v1), 0, new Integer[]{1,2,3,4,5,6,7,8});
+        
+        IteratorTester.listIterator(ArrayUtils.iterator(v1, 2, 7), 0, new Integer[]{3,4,5,6,7});
+    }
+    
+}

+ 23 - 25
assira/src/test/java/net/ranides/assira/collection/iterators/IntIteratorUtilsTest.java

@@ -11,13 +11,11 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
+import net.ranides.assira.collection.arrays.IntArrays;
 import net.ranides.assira.collection.lists.IntArrayList;
 import net.ranides.assira.collection.lists.IntList;
 import net.ranides.assira.collection.suite.IteratorTester;
-import static net.ranides.assira.junit.NewAssert.assertThrows;
-import org.junit.Assert;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static net.ranides.assira.junit.NewAssert.*;
 import org.junit.Test;
 
 /**
@@ -28,9 +26,9 @@ public class IntIteratorUtilsTest {
     
     @Test
 	public void testFirst() {
-		assertEquals(1, IntIteratorUtils.first(IntList.asList(1,2,3,4).iterator()));
-		assertEquals(1, IntIteratorUtils.first(IntList.asList(1,2).iterator()));
-		assertEquals(1, IntIteratorUtils.first(IntList.asList(1).iterator()));
+		assertEquals(1, IntIteratorUtils.first(IntArrays.asList(1,2,3,4).iterator()));
+		assertEquals(1, IntIteratorUtils.first(IntArrays.asList(1,2).iterator()));
+		assertEquals(1, IntIteratorUtils.first(IntArrays.asList(1).iterator()));
 		
 		assertThrows(NoSuchElementException.class, () -> {
 			IteratorUtils.first(Arrays.asList().iterator());
@@ -39,9 +37,9 @@ public class IntIteratorUtilsTest {
 	
 	@Test
 	public void testLast() {
-		assertEquals(4, IntIteratorUtils.last(IntList.asList(1,2,3,4).iterator()));
-		assertEquals(4, IntIteratorUtils.last(IntList.asList(3,4).iterator()));
-		assertEquals(4, IntIteratorUtils.last(IntList.asList(4).iterator()));
+		assertEquals(4, IntIteratorUtils.last(IntArrays.asList(1,2,3,4).iterator()));
+		assertEquals(4, IntIteratorUtils.last(IntArrays.asList(3,4).iterator()));
+		assertEquals(4, IntIteratorUtils.last(IntArrays.asList(4).iterator()));
 		
 		assertThrows(NoSuchElementException.class, () -> {
 			IteratorUtils.last(Arrays.asList().iterator());
@@ -50,38 +48,38 @@ public class IntIteratorUtilsTest {
     
     @Test
 	public void testFirst_Filter() {
-		assertEquals(7, IntIteratorUtils.first(IntList.asList(1,2,7,0,8,0,3).iterator(), a -> a>5));
+		assertEquals(7, IntIteratorUtils.first(IntArrays.asList(1,2,7,0,8,0,3).iterator(), a -> a>5));
 		
 		assertThrows(NoSuchElementException.class, () -> {
-			IntIteratorUtils.first(IntList.asList(1,2,3).iterator(), a -> a>5);
+			IntIteratorUtils.first(IntArrays.asList(1,2,3).iterator(), a -> a>5);
 		});
 		assertThrows(NoSuchElementException.class, () -> {
-			IntIteratorUtils.first(IntList.asList().iterator(), a -> a>5);
+			IntIteratorUtils.first(IntArrays.asList().iterator(), a -> a>5);
 		});
 	}
 	
 	@Test
 	public void testLast_Filter() {
-		assertEquals(8, IntIteratorUtils.last(IntList.asList(1,2,7,0,8,0,3).iterator(), a -> a>5));
-		assertEquals(8, IntIteratorUtils.last(IntList.asList(1,2,7,0,8).iterator(), a -> a>5));
-		assertEquals(8, IntIteratorUtils.last(IntList.asList(1,8).iterator(), a -> a>5));
-		assertEquals(8, IntIteratorUtils.last(IntList.asList(8,1).iterator(), a -> a>5));
+		assertEquals(8, IntIteratorUtils.last(IntArrays.asList(1,2,7,0,8,0,3).iterator(), a -> a>5));
+		assertEquals(8, IntIteratorUtils.last(IntArrays.asList(1,2,7,0,8).iterator(), a -> a>5));
+		assertEquals(8, IntIteratorUtils.last(IntArrays.asList(1,8).iterator(), a -> a>5));
+		assertEquals(8, IntIteratorUtils.last(IntArrays.asList(8,1).iterator(), a -> a>5));
 		
 		assertThrows(NoSuchElementException.class, () -> {
-			IntIteratorUtils.last(IntList.asList(1,2,3).iterator(), a -> a>5);
+			IntIteratorUtils.last(IntArrays.asList(1,2,3).iterator(), a -> a>5);
 		});
 		assertThrows(NoSuchElementException.class, () -> {
-			IntIteratorUtils.last(IntList.asList().iterator(), a -> a>5);
+			IntIteratorUtils.last(IntArrays.asList().iterator(), a -> a>5);
 		});
 	}
 	
     
     @Test
 	public void testSize() {
-		assertEquals(4, IntIteratorUtils.size(IntList.asList(1,2,7,8).iterator()));
-		assertEquals(2, IntIteratorUtils.size(IntList.asList(1,2).iterator()));
-		assertEquals(1, IntIteratorUtils.size(IntList.asList(1).iterator()));
-		assertEquals(0, IntIteratorUtils.size(IntList.asList().iterator()));
+		assertEquals(4, IntIteratorUtils.size(IntArrays.asList(1,2,7,8).iterator()));
+		assertEquals(2, IntIteratorUtils.size(IntArrays.asList(1,2).iterator()));
+		assertEquals(1, IntIteratorUtils.size(IntArrays.asList(1).iterator()));
+		assertEquals(0, IntIteratorUtils.size(IntArrays.asList().iterator()));
 		assertEquals(0, IntIteratorUtils.size(null));
 	}
 	
@@ -165,7 +163,7 @@ public class IntIteratorUtilsTest {
 	
 	@Test
 	public void testFilter_ListIterator() {
-		IntList list = IntList.asList(1,2,3,4,5,6,7,8,9);
+		IntList list = IntArrays.asList(1,2,3,4,5,6,7,8,9);
 
 		IteratorTester.listIterator(IntIteratorUtils.filter(list.listIterator(), v -> v%2==0), 0, new Integer[]{2,4,6,8});
 		IteratorTester.listIterator(IntIteratorUtils.filter(list.listIterator(), v -> v%2==1), 0, new Integer[]{1,3,5,7,9});
@@ -195,7 +193,7 @@ public class IntIteratorUtilsTest {
 	
     @Test
     public void testStream() {
-        IntList exp = IntList.asList(1,2,3,4,5,6,7,8,9);
+        IntList exp = IntArrays.asList(1,2,3,4,5,6,7,8,9);
         IntList out = new IntArrayList();
         IntIteratorUtils.stream( exp.listIterator() ).forEach(v -> out.add(v));
         assertEquals(exp, out);

+ 8 - 7
assira/src/test/java/net/ranides/assira/collection/lists/IntListUtilsTest.java

@@ -17,6 +17,7 @@ import java.util.function.Function;
 import java.util.function.IntFunction;
 import java.util.function.IntUnaryOperator;
 import net.ranides.assira.ContractTesters;
+import net.ranides.assira.collection.arrays.IntArrays;
 import net.ranides.assira.collection.mockup.TMaps;
 import net.ranides.assira.collection.mockup.TPoint;
 import net.ranides.assira.functional.IntCoFunction;
@@ -34,9 +35,9 @@ public class IntListUtilsTest {
 	
 	@Test
     public void testFirst() {
-		IntList list8 = IntList.asList(1, 12, 13, 4, 15, 6, 17, 8);
-		IntList list1 = IntList.asList(1);
-		IntList list0 = IntList.asList();
+		IntList list8 = IntArrays.asList(1, 12, 13, 4, 15, 6, 17, 8);
+		IntList list1 = IntArrays.asList(1);
+		IntList list0 = IntArrays.asList();
 		
         assertEquals(1, IntListUtils.first(list8));
         assertEquals(1, IntListUtils.first(list1));
@@ -60,9 +61,9 @@ public class IntListUtilsTest {
 	
 	@Test
     public void testLast() {
-		IntList list8 = IntList.asList(1, 12, 13, 4, 15, 6, 17, 8);
-		IntList list1 = IntList.asList(1);
-		IntList list0 = IntList.asList();
+		IntList list8 = IntArrays.asList(1, 12, 13, 4, 15, 6, 17, 8);
+		IntList list1 = IntArrays.asList(1);
+		IntList list0 = IntArrays.asList();
 		
         assertEquals(8, IntListUtils.last(list8));
         assertEquals(1, IntListUtils.last(list1));
@@ -86,7 +87,7 @@ public class IntListUtilsTest {
 	
 	@Test
 	public void testFilter() {
-		assertEquals(IntList.asList(2,4,6), IntListUtils.filter(IntList.asList(1,2,3,4,5,6), v -> 0==v%2));
+		assertEquals(IntArrays.asList(2,4,6), IntListUtils.filter(IntArrays.asList(1,2,3,4,5,6), v -> 0==v%2));
 	}
 	
 	@Test

+ 6 - 5
assira/src/test/java/net/ranides/assira/functional/IntFoldTest.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.functional;
 
+import net.ranides.assira.collection.arrays.IntArrays;
 import net.ranides.assira.collection.lists.IntList;
 import org.junit.Test;
 import static net.ranides.assira.junit.NewAssert.*;
@@ -45,13 +46,13 @@ public class IntFoldTest {
         IntFold fold = (a,b) -> 10*a + b;
 
         
-        assertEquals(123456, fold.apply(IntList.asList(1,2,3,4,5,6).iterator()));
-        assertEquals(123, fold.apply(IntList.asList(1,2,3).iterator()));
-        assertEquals(12, fold.apply(IntList.asList(1,2).iterator()));
-        assertEquals(1, fold.apply(IntList.asList(1).iterator()));
+        assertEquals(123456, fold.apply(IntArrays.asList(1,2,3,4,5,6).iterator()));
+        assertEquals(123, fold.apply(IntArrays.asList(1,2,3).iterator()));
+        assertEquals(12, fold.apply(IntArrays.asList(1,2).iterator()));
+        assertEquals(1, fold.apply(IntArrays.asList(1).iterator()));
         
         assertThrows(RuntimeException.class, ()->{
-            fold.apply(IntList.asList().iterator());
+            fold.apply(IntArrays.asList().iterator());
         });
     }