Bladeren bron

tests (90)

Ranides Atterwim 10 jaren geleden
bovenliggende
commit
cc2e3092f0

+ 2 - 1
.gitignore

@@ -5,4 +5,5 @@
 /assira/nbproject/
 /assira.junit/target/
 /assira.junit/nbproject/
-/assira.drafts/target/
+/assira.drafts/target/
+/assira/pom.xml.versionsBackup

+ 39 - 1
assira.common/pom.xml

@@ -4,7 +4,7 @@
     
     <groupId>net.ranides</groupId>
     <artifactId>assira.common</artifactId>
-    <version>2.0.0</version>
+    <version>2.0.1</version>
     <packaging>pom</packaging>
     
     <url>http://ranides.net/projects/assira</url>
@@ -26,6 +26,44 @@
         </repository>
     </distributionManagement>
     
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <artifactId>assira.asm</artifactId>
+                <groupId>net.ranides</groupId>
+                <version>5.0.4</version>
+            </dependency>
+            <dependency>
+                <groupId>net.ranides</groupId>
+                <artifactId>assira.junit</artifactId>
+                <version>2.0.1</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>eu.vitaliy</groupId>
+                <artifactId>mazovia-charset</artifactId>
+                <version>1.0</version>
+            </dependency>
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.12</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>1.7.13</version>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-simple</artifactId>
+                <version>1.7.13</version>
+                <scope>test</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    
     <repositories>
         <repository>
             <id>ranides.net</id>

+ 2 - 11
assira/pom.xml

@@ -4,12 +4,12 @@
     <parent>
         <groupId>net.ranides</groupId>
         <artifactId>assira.common</artifactId>
-        <version>2.0.0</version>
+        <version>2.0.1</version>
     </parent>
     <name>assira</name>
     <groupId>net.ranides</groupId>
     <artifactId>assira</artifactId>
-    <version>2.0.0</version>
+    <version>2.0.1</version>
     <packaging>jar</packaging>
     
     <profiles>
@@ -141,36 +141,27 @@
         <dependency>
             <artifactId>assira.asm</artifactId>
             <groupId>net.ranides</groupId>
-            <version>5.0.4</version>
         </dependency>
         <dependency>
             <groupId>eu.vitaliy</groupId>
             <artifactId>mazovia-charset</artifactId>
-            <version>1.0</version>
             <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.10</version>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>net.ranides</groupId>
             <artifactId>assira.junit</artifactId>
-            <version>2.0.0</version>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
-            <version>1.7.12</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
-            <version>1.7.13</version>
-            <scope>test</scope>
         </dependency>
     </dependencies>
 </project>

+ 2 - 10
assira/src/main/java/net/ranides/assira/collection/lists/AIntList.java

@@ -288,8 +288,8 @@ public abstract class AIntList extends AIntCollection implements IntList, Compar
     @Override
     public int lastIndexOf(int k) {
         int n = size();
-        IntListIterator iterator = listIterator(size());
-        for (int i = n-1; i-- != 0;) {
+        IntListIterator iterator = listIterator(n);
+        for (int i = n; i-- != 0;) {
             if (k == iterator.previousInt()) {
                 return i;
             }
@@ -582,11 +582,7 @@ public abstract class AIntList extends AIntCollection implements IntList, Compar
 
             @Override
             public void add(int k) {
-                if (last == -1) {
-                    throw new IllegalStateException();
-                }
                 SubList.this.add(pos++, k);
-                last = -1;
             }
 
             @Override
@@ -661,11 +657,7 @@ public abstract class AIntList extends AIntCollection implements IntList, Compar
 
         @Override
         public void add(int k) {
-            if (last == -1) {
-                throw new IllegalStateException();
-            }
             AIntList.this.add(pos++, k);
-            last = -1;
         }
 
         @Override

+ 1 - 1
assira/src/main/java/net/ranides/assira/collection/lists/IntArrayList.java

@@ -454,7 +454,7 @@ public class IntArrayList extends AIntList implements BlockCollection<Integer>,
 
     @Override
     public IntListIterator listIterator(int index) {
-        checkIndexElement(index);
+        checkIndex(index);
         return new IIterator(index);
     }
 

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

@@ -15,7 +15,7 @@ import net.ranides.assira.collection.iterators.IntListIterator;
  * @author Ranides Atterwim <ranides@gmail.com>
  */
 public interface IntList extends IntCollection, List<Integer> {
-
+    
     void add(int index, int k);
 
     boolean addAll(IntList list);

+ 82 - 0
assira/src/test/java/net/ranides/assira/collection/lists/AIntListTest.java

@@ -0,0 +1,82 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/???
+ */
+package net.ranides.assira.collection.lists;
+
+import net.ranides.assira.collection.iterators.IntListIterator;
+import net.ranides.assira.collection.mockup.CollectionSuite;
+import net.ranides.assira.collection.mockup.TMaps;
+import net.ranides.assira.test.TCollection;
+import org.junit.Test;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public class AIntListTest {
+    
+    private final TCollection<Integer> $list = TMaps.MAP_IS.keys();
+
+    @Test
+    public void testSuite() {
+        CollectionSuite.SUITE
+			.param("set!", $list)
+			.param("list!", $list)
+			.run(() -> new FIntList());
+    }
+    
+    private static class FIntList extends AIntList {
+        
+        private final IntArrayList data = new IntArrayList();
+
+        @Override
+        public int size() {
+            return data.size();
+        }
+
+        @Override
+        public boolean add(int k) {
+            return data.add(k);
+        }
+        
+        @Override
+        public void add(int index, int k) {
+            data.add(index, k);
+        }
+
+        @Override
+        public void addElements(int index, int[] array, int offset, int length) {
+            data.addElements(index, array, offset, length);
+        }
+
+        @Override
+        public void getElements(int from, int[] target, int offset, int length) {
+            data.getElements(from, target, offset, length);
+        }
+
+        @Override
+        public int getInt(int index) {
+            return data.getInt(index);
+        }
+
+        @Override
+        public IntListIterator listIterator(int index) {
+            return data.listIterator(index);
+        }
+
+        @Override
+        public int removeInt(int index) {
+            return data.removeInt(index);
+        }
+
+        @Override
+        public int set(int index, int k) {
+            return data.set(index, k);
+        }
+        
+    }
+    
+}

+ 1 - 1
assira/src/test/java/net/ranides/assira/collection/lists/IntArrayListTest.java

@@ -104,7 +104,7 @@ public class IntArrayListTest {
         list.resize(20);
         assertEquals(20, list.size());
     }
-    
+        
     @Test
     public void testCompare() {
         IntArrayList ilist1 = new IntArrayList(new int[]{1,3,5,7});

+ 29 - 0
assira/src/test/java/net/ranides/assira/collection/suite/IteratorTester.java

@@ -59,6 +59,35 @@ public final class IteratorTester {
         );
     }
     
+    public static <T> void basicIteratorRandom(ListIterator<T> iterator, int index, T[] content) {
+        assertEquals(index>0, iterator.hasPrevious());
+        assertEquals(content.length>0, iterator.hasNext());
+        
+        for (int i=index; i<content.length; i++) {
+            checkIndex(iterator, i);
+            assertTrue(iterator.hasNext());
+            assertEquals(content[i], iterator.next());
+        }
+        
+        assertFalse(iterator.hasNext());
+        assertEquals(content.length>0, iterator.hasPrevious());
+        assertThrows(NoSuchElementException.class, ()->
+            iterator.next()
+        );
+        
+        for (int i=content.length-1; i>=0; i--) {
+            assertTrue(iterator.hasPrevious());
+            assertEquals(content[i], iterator.previous());
+            checkIndex(iterator, i);
+        }
+        
+        assertEquals(content.length>0, iterator.hasNext());
+        assertFalse(iterator.hasPrevious());
+        assertThrows(NoSuchElementException.class, ()->
+            iterator.previous()
+        );
+    }
+    
     public static <T> void subrangeIterator(ListIterator<T> iterator, int index, T[] content) {
         for (int i=index; i<content.length; i++) {
             checkIndex(iterator, i-index);

+ 110 - 1
assira/src/test/java/net/ranides/assira/collection/suite/lists/ListTester.java

@@ -8,12 +8,16 @@ package net.ranides.assira.collection.suite.lists;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.function.Supplier;
 import javax.annotation.Resource;
+import net.ranides.assira.collection.suite.IteratorTester;
 import net.ranides.assira.junit.InterfaceSuite;
 import net.ranides.assira.junit.InterfaceTest;
 import net.ranides.assira.test.TCollection;
+import net.ranides.assira.test.TCollection.TItems;
 import static net.ranides.assira.junit.NewAssert.*;
 
 /**
@@ -129,8 +133,8 @@ public class ListTester<T> {
     public void basicLastIndexOf(List<T> target) {
 		$list.list(1,3,5,7,9,3,3,11).into(target);
 		
-		assertEquals(0, target.lastIndexOf(1));
 		assertEquals(6, target.lastIndexOf(3));
+        assertEquals(0, target.lastIndexOf(1));
 		assertEquals(2, target.lastIndexOf(5));
 		assertEquals(3, target.lastIndexOf(7));
 		assertEquals(4, target.lastIndexOf(9));
@@ -320,6 +324,111 @@ public class ListTester<T> {
         assertEquals($values(1,21,22,7,9), target);
     }
     
+    @SuppressWarnings("unchecked")
+    @InterfaceTest
+    public void basicIterator(List<T> target) {
+        TItems<T> list1 = $list.list();
+        TItems<T> list2 = $list.list(3, 4, 5, 6, 7);
+        
+        IteratorTester.basicIteratorRandom(target.listIterator(), 0, list1.values());
+        
+        list2.into(target);
+        
+        IteratorTester.basicIteratorRandom(target.listIterator(), 0, list2.values());
+    }
+    
+    @InterfaceTest
+    public void basicIteratorFrom(List<T> target) {
+        TItems<T> list1 = $list.list();
+        TItems<T> list2 = $list.list(3, 4, 5, 6, 7);
+        
+        IteratorTester.basicIteratorRandom(target.listIterator(0), 0, list1.values());
+        
+        list2.into(target);
+        IteratorTester.basicIteratorRandom(target.listIterator(2), 2, list2.values());
+    }
+    
+    @InterfaceTest
+    public void basicIterator_Remove(List<T> target) {
+		assertEquals(0, target.size());
+        
+		$list.list(1,2,3,5).into(target);
+		T v1 = $list.item(1).value();
+		T v2 = $list.item(3).value();
+        
+		Iterator<T> iterator = target.iterator();
+		while(iterator.hasNext()) {
+			T var = iterator.next();
+			if(v1.equals(var)) {
+                iterator.remove();
+            }
+            if(v2.equals(var)) {
+                iterator.remove();
+                assertThrows(IllegalStateException.class, ()-> iterator.remove());
+            }
+		}
+        
+        assertEquals(2, target.size());
+        assertEquals(-1, target.indexOf(v1));
+        assertEquals(-1, target.indexOf(v2));
+        assertEquals($values(2,5), target);
+        
+        target.clear();
+        assertEquals(0, target.size());
+	}
+    
+    @InterfaceTest
+    public void basicIterator_Set(List<T> target) {
+		assertEquals(0, target.size());
+        
+		$list.list(1,2,3,5).into(target);
+		T v1 = $list.item(1).value();
+		T v2 = $list.item(3).value();
+        
+		ListIterator<T> iterator = target.listIterator();
+        
+        assertThrows(IllegalStateException.class, ()->{
+            iterator.set($list.item(41).value());
+        });
+        
+		while(iterator.hasNext()) {
+			T var = iterator.next();
+			if(v1.equals(var)) {
+                iterator.set($list.item(21).value());
+            }
+            if(v2.equals(var)) {
+                iterator.set($list.item(31).value());
+                iterator.set($list.item(32).value());
+            }
+		}
+        assertEquals($values(21,2,32,5), target);
+	}
+    
+    @InterfaceTest
+    public void basicIterator_Add(List<T> target) {
+		assertEquals(0, target.size());
+        
+		$list.list(1,2,3,5).into(target);
+		T v1 = $list.item(1).value();
+		T v2 = $list.item(3).value();
+        
+		ListIterator<T> iterator = target.listIterator();
+        
+        iterator.add($list.item(41).value());
+        
+		while(iterator.hasNext()) {
+			T var = iterator.next();
+			if(v1.equals(var)) {
+                iterator.add($list.item(21).value());
+            }
+            if(v2.equals(var)) {
+                iterator.add($list.item(31).value());
+                iterator.add($list.item(32).value());
+            }
+		}
+        assertEquals($values(41, 1, 21, 2, 3, 31, 32, 5), target);
+	}
+    
     @InterfaceTest
     public void nestedSublistTest(Supplier<List<T>> target) {
         if(!$nest) {