|
@@ -9,13 +9,17 @@ package net.ranides.assira.collection.suite;
|
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
|
import java.util.NoSuchElementException;
|
|
import java.util.NoSuchElementException;
|
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import net.ranides.assira.collection.IntCollection;
|
|
import net.ranides.assira.collection.IntCollection;
|
|
|
import net.ranides.assira.collection.iterators.IntIterator;
|
|
import net.ranides.assira.collection.iterators.IntIterator;
|
|
|
import net.ranides.assira.collection.lookups.Lookup;
|
|
import net.ranides.assira.collection.lookups.Lookup;
|
|
|
-import net.ranides.assira.collection.mockup.TPoint;
|
|
|
|
|
-import net.ranides.assira.collection.mockup.ValueEnum;
|
|
|
|
|
-import static net.ranides.assira.collection.mockup.ValueEnum.*;
|
|
|
|
|
-import static net.ranides.assira.collection.mockup.TPointUtils.*;
|
|
|
|
|
|
|
+import net.ranides.assira.collection.mockup.TMap;
|
|
|
|
|
+import net.ranides.assira.collection.mockup.TMap.TItem;
|
|
|
|
|
+import net.ranides.assira.collection.mockup.TMap.TItems;
|
|
|
|
|
+//import net.ranides.assira.collection.mockup.TPoint;
|
|
|
|
|
+//import net.ranides.assira.collection.mockup.ValueEnum;
|
|
|
|
|
+//import static net.ranides.assira.collection.mockup.ValueEnum.*;
|
|
|
|
|
+//import static net.ranides.assira.collection.mockup.TPointUtils.*;
|
|
|
import net.ranides.assira.junit.QAssert;
|
|
import net.ranides.assira.junit.QAssert;
|
|
|
import static org.junit.Assert.*;
|
|
import static org.junit.Assert.*;
|
|
|
import org.junit.Test;
|
|
import org.junit.Test;
|
|
@@ -25,7 +29,10 @@ import org.junit.Test;
|
|
|
* @author Ranides Atterwim <ranides@gmail.com>
|
|
* @author Ranides Atterwim <ranides@gmail.com>
|
|
|
*/
|
|
*/
|
|
|
@SuppressWarnings("PMD.MethodNameRules")
|
|
@SuppressWarnings("PMD.MethodNameRules")
|
|
|
-public final class LookupTester {
|
|
|
|
|
|
|
+public final class LookupTester<K> {
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TMap<K,Integer> $map;
|
|
|
|
|
|
|
|
private static final int BASIC_PUT_MANY = 128;
|
|
private static final int BASIC_PUT_MANY = 128;
|
|
|
|
|
|
|
@@ -38,11 +45,10 @@ public final class LookupTester {
|
|
|
private static final int BASIC_REMOVE_RANDOM = 273;
|
|
private static final int BASIC_REMOVE_RANDOM = 273;
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicPut(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicPut(Lookup<K> target) {
|
|
|
int prev = target.size();
|
|
int prev = target.size();
|
|
|
- int value = $value(A1);
|
|
|
|
|
- for (TPoint point : $keys(BASIC_PUT_MANY)) {
|
|
|
|
|
- target.put(point, value++);
|
|
|
|
|
|
|
+ for(TItem<K,Integer> item :$map.range(0, BASIC_PUT_MANY)) {
|
|
|
|
|
+ target.put(item.key(), item.value());
|
|
|
}
|
|
}
|
|
|
assertEquals(prev + BASIC_PUT_MANY, target.size());
|
|
assertEquals(prev + BASIC_PUT_MANY, target.size());
|
|
|
|
|
|
|
@@ -50,105 +56,100 @@ public final class LookupTester {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void logicPut(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void logicPut(Lookup<K> target) {
|
|
|
int prev = target.size();
|
|
int prev = target.size();
|
|
|
- target.put($key(A1), $value(A1));
|
|
|
|
|
|
|
+ TItem<K,Integer> item1 = $map.item(1);
|
|
|
|
|
+ TItem<K,Integer> item2 = $map.item(1).next();
|
|
|
|
|
+ target.put(item1.key(), item1.value());
|
|
|
assertEquals(prev + 1, target.size());
|
|
assertEquals(prev + 1, target.size());
|
|
|
|
|
|
|
|
- target.put($key(A1_EQ), $value(A1_EQ)); // identical hash & eq
|
|
|
|
|
|
|
+ target.put(item1.key(), item1.value());
|
|
|
assertEquals(prev + 1, target.size());
|
|
assertEquals(prev + 1, target.size());
|
|
|
|
|
|
|
|
- target.put($key(A1_NE), $value(A1_NE)); // identical hash but not eq
|
|
|
|
|
|
|
+ target.put(item2.key(), item2.value()); // identical hash but not eq
|
|
|
assertEquals(prev + 2, target.size());
|
|
assertEquals(prev + 2, target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicPutReplace(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicPutReplace(Lookup<K> target) {
|
|
|
int prev = target.size();
|
|
int prev = target.size();
|
|
|
- for (TPoint point : $ukeys(BASIC_PUT_REPLACE)) {
|
|
|
|
|
- target.put(point, $value(B1));
|
|
|
|
|
|
|
+ for (TItem<K,Integer> item : $map.urange(0, BASIC_PUT_REPLACE)) {
|
|
|
|
|
+ target.put(item.key(), item.value());
|
|
|
}
|
|
}
|
|
|
assertEquals(prev + (2 * BASIC_PUT_REPLACE), target.size());
|
|
assertEquals(prev + (2 * BASIC_PUT_REPLACE), target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicPutRandom(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicPutRandom(Lookup<K> target) {
|
|
|
int prev = target.size();
|
|
int prev = target.size();
|
|
|
- for (TPoint point : $shuffle($ukeys(BASIC_PUT_RANDOM))) {
|
|
|
|
|
- target.put(point, $value(B1));
|
|
|
|
|
|
|
+ for (TItem<K,Integer> item : $map.urange(0, BASIC_PUT_RANDOM)) {
|
|
|
|
|
+ target.put(item.key(), item.value());
|
|
|
}
|
|
}
|
|
|
assertEquals(prev + (2 * BASIC_PUT_RANDOM), target.size());
|
|
assertEquals(prev + (2 * BASIC_PUT_RANDOM), target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicRemove(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicRemove(Lookup<K> target) {
|
|
|
target.defaultReturnValue(-1);
|
|
target.defaultReturnValue(-1);
|
|
|
- $put(target, A1, B1, C1);
|
|
|
|
|
|
|
+ $map.put(target, $map.list(1,2,3));
|
|
|
|
|
|
|
|
- assertNotRemove(target, A1_NE);
|
|
|
|
|
|
|
+ assertNotRemove(target, $map.item(1).next());
|
|
|
|
|
|
|
|
- assertRemove(target, A1_EQ, A1);
|
|
|
|
|
- assertRemove(target, B1, B1);
|
|
|
|
|
- assertRemove(target, C1, C1);
|
|
|
|
|
|
|
+ assertRemove(target, $map.item(1).key(), $map.item(1).value());
|
|
|
|
|
+ assertRemove(target, $map.item(2).key(), $map.item(2).value());
|
|
|
|
|
+ assertRemove(target, $map.item(3).key(), $map.item(3).value());
|
|
|
|
|
|
|
|
assertEquals(0, target.size());
|
|
assertEquals(0, target.size());
|
|
|
|
|
|
|
|
- assertNotRemove(target, C1);
|
|
|
|
|
|
|
+ assertNotRemove(target, $map.item(3));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicRemoveAll(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicRemoveAll(Lookup<K> target) {
|
|
|
assertEquals(0, target.size());
|
|
assertEquals(0, target.size());
|
|
|
- TPoint[] keys = $keys(BASIC_REMOVE_ALL);
|
|
|
|
|
- int[] values = $values(BASIC_REMOVE_ALL);
|
|
|
|
|
|
|
+ TItems<K,Integer> items = $map.range(0, BASIC_REMOVE_ALL);
|
|
|
|
|
|
|
|
- for(int i=0; i<BASIC_REMOVE_ALL; i++) {
|
|
|
|
|
- target.put(keys[i], values[i]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ $map.put(target, items);
|
|
|
assertEquals(BASIC_REMOVE_ALL, target.size());
|
|
assertEquals(BASIC_REMOVE_ALL, target.size());
|
|
|
|
|
|
|
|
for(int i=0; i<BASIC_REMOVE_ALL; i++) {
|
|
for(int i=0; i<BASIC_REMOVE_ALL; i++) {
|
|
|
- assertEquals(values[i], target.removeInt(keys[i]));
|
|
|
|
|
|
|
+ assertEquals(items.at(i).valueInt(), target.removeInt(items.at(i).key()));
|
|
|
assertEquals(BASIC_REMOVE_ALL-i-1, target.size());
|
|
assertEquals(BASIC_REMOVE_ALL-i-1, target.size());
|
|
|
}
|
|
}
|
|
|
assertEquals(0, target.size());
|
|
assertEquals(0, target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicRemoveRandom(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicRemoveRandom(Lookup<K> target) {
|
|
|
assertEquals(0, target.size());
|
|
assertEquals(0, target.size());
|
|
|
- TPoint[] keys = $keys(BASIC_REMOVE_RANDOM);
|
|
|
|
|
- int[] values = $values(BASIC_REMOVE_RANDOM);
|
|
|
|
|
|
|
+ TItems<K,Integer> items = $map.range(0, BASIC_REMOVE_RANDOM);
|
|
|
|
|
|
|
|
- for(int i=0; i<BASIC_REMOVE_RANDOM; i++) {
|
|
|
|
|
- target.put(keys[i], values[i]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ $map.put(target, items);
|
|
|
assertEquals(BASIC_REMOVE_RANDOM, target.size());
|
|
assertEquals(BASIC_REMOVE_RANDOM, target.size());
|
|
|
|
|
|
|
|
- $shuffle(keys, values);
|
|
|
|
|
|
|
+ items.shuffle(777);
|
|
|
for(int i=0; i<BASIC_REMOVE_RANDOM; i++) {
|
|
for(int i=0; i<BASIC_REMOVE_RANDOM; i++) {
|
|
|
- assertEquals(values[i], target.removeInt(keys[i]));
|
|
|
|
|
|
|
+ assertEquals(items.at(i).valueInt(), target.removeInt(items.at(i).key()));
|
|
|
assertEquals(BASIC_REMOVE_RANDOM-i-1, target.size());
|
|
assertEquals(BASIC_REMOVE_RANDOM-i-1, target.size());
|
|
|
}
|
|
}
|
|
|
assertEquals(0, target.size());
|
|
assertEquals(0, target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicGet(Lookup<TPoint> target) {
|
|
|
|
|
- assertEquals(0, target.getInt($key(A1)));
|
|
|
|
|
-
|
|
|
|
|
- $put(target, A1, B1, C1);
|
|
|
|
|
|
|
+ public void basicGet(Lookup<K> target) {
|
|
|
|
|
+ assertEquals(0, target.getInt($map.item(1).key()));
|
|
|
|
|
+
|
|
|
|
|
+ $map.put(target, $map.list(1,2,3));
|
|
|
assertEquals(3, target.size());
|
|
assertEquals(3, target.size());
|
|
|
- assertEquals(0, target.getInt($key(A1_NE)));
|
|
|
|
|
|
|
+ assertEquals(0, target.getInt($map.item(1).next().key()));
|
|
|
|
|
|
|
|
- assertEquals($value(A1), target.getInt($key(A1)));
|
|
|
|
|
- assertEquals($value(A1), target.getInt($key(A1_EQ)));
|
|
|
|
|
- assertEquals($value(B1), target.getInt($key(B1)));
|
|
|
|
|
- assertEquals($value(C1), target.getInt($key(C1)));
|
|
|
|
|
|
|
+ assertEquals($map.item(1).valueInt(), target.getInt($map.item(1).key()));
|
|
|
|
|
+ assertEquals($map.item(2).valueInt(), target.getInt($map.item(2).key()));
|
|
|
|
|
+ assertEquals($map.item(3).valueInt(), target.getInt($map.item(3).key()));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void logicRemove(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void logicRemove(Lookup<K> target) {
|
|
|
target.defaultReturnValue(-1);
|
|
target.defaultReturnValue(-1);
|
|
|
$put(target, A1, B1, C1);
|
|
$put(target, A1, B1, C1);
|
|
|
|
|
|
|
@@ -171,7 +172,7 @@ public final class LookupTester {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicContains(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicContains(Lookup<K> target) {
|
|
|
assertEquals(0, target.size());
|
|
assertEquals(0, target.size());
|
|
|
$put(target, A1, B1);
|
|
$put(target, A1, B1);
|
|
|
|
|
|
|
@@ -184,16 +185,16 @@ public final class LookupTester {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicEntrySet_Iterator(Lookup<TPoint> target) {
|
|
|
|
|
- Set<Lookup.LookupEntry<TPoint>> set = target.fastEntrySet();
|
|
|
|
|
|
|
+ public void basicEntrySet_Iterator(Lookup<K> target) {
|
|
|
|
|
+ Set<Lookup.LookupEntry<K>> set = target.fastEntrySet();
|
|
|
|
|
|
|
|
assertEquals(0, set.size());
|
|
assertEquals(0, set.size());
|
|
|
$put(target, A1, A1_NE, B1, C1);
|
|
$put(target, A1, A1_NE, B1, C1);
|
|
|
assertEquals(4, set.size());
|
|
assertEquals(4, set.size());
|
|
|
|
|
|
|
|
- Iterator<Lookup.LookupEntry<TPoint>> iterator = set.iterator();
|
|
|
|
|
|
|
+ Iterator<Lookup.LookupEntry<K>> iterator = set.iterator();
|
|
|
while(iterator.hasNext()) {
|
|
while(iterator.hasNext()) {
|
|
|
- Lookup.LookupEntry<TPoint> entry = iterator.next();
|
|
|
|
|
|
|
+ Lookup.LookupEntry<K> entry = iterator.next();
|
|
|
assertEquals(target.getInt(entry.getKey()), entry.getIntValue());
|
|
assertEquals(target.getInt(entry.getKey()), entry.getIntValue());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -201,16 +202,16 @@ public final class LookupTester {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicEntrySet_Iterator_SetValue(Lookup<TPoint> target) {
|
|
|
|
|
- Set<Lookup.LookupEntry<TPoint>> set = target.fastEntrySet();
|
|
|
|
|
|
|
+ public void basicEntrySet_Iterator_SetValue(Lookup<K> target) {
|
|
|
|
|
+ Set<Lookup.LookupEntry<K>> set = target.fastEntrySet();
|
|
|
|
|
|
|
|
assertEquals(0, set.size());
|
|
assertEquals(0, set.size());
|
|
|
$put(target, A1, A1_NE, B1, C1);
|
|
$put(target, A1, A1_NE, B1, C1);
|
|
|
|
|
|
|
|
- Iterator<Lookup.LookupEntry<TPoint>> iterator = set.iterator();
|
|
|
|
|
|
|
+ Iterator<Lookup.LookupEntry<K>> iterator = set.iterator();
|
|
|
while(iterator.hasNext()) {
|
|
while(iterator.hasNext()) {
|
|
|
- Lookup.LookupEntry<TPoint> entry = iterator.next();
|
|
|
|
|
- TPoint key = entry.getKey();
|
|
|
|
|
|
|
+ Lookup.LookupEntry<K> entry = iterator.next();
|
|
|
|
|
+ K key = entry.getKey();
|
|
|
if(TPoint.SUM.equals(key, $key(A1_EQ))) {
|
|
if(TPoint.SUM.equals(key, $key(A1_EQ))) {
|
|
|
entry.setValue($value(D1));
|
|
entry.setValue($value(D1));
|
|
|
}
|
|
}
|
|
@@ -225,7 +226,7 @@ public final class LookupTester {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicValues_Contains(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicValues_Contains(Lookup<K> target) {
|
|
|
IntCollection set = target.values();
|
|
IntCollection set = target.values();
|
|
|
|
|
|
|
|
assertEquals(0, set.size());
|
|
assertEquals(0, set.size());
|
|
@@ -242,7 +243,7 @@ public final class LookupTester {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicValues_Remove(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicValues_Remove(Lookup<K> target) {
|
|
|
IntCollection set = target.values();
|
|
IntCollection set = target.values();
|
|
|
|
|
|
|
|
basicValues_Contains(target);
|
|
basicValues_Contains(target);
|
|
@@ -258,7 +259,7 @@ public final class LookupTester {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicValues_Iterator(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicValues_Iterator(Lookup<K> target) {
|
|
|
IntCollection set = target.values();
|
|
IntCollection set = target.values();
|
|
|
|
|
|
|
|
assertEquals(0, set.size());
|
|
assertEquals(0, set.size());
|
|
@@ -276,7 +277,7 @@ public final class LookupTester {
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@SuppressWarnings("unchecked")
|
|
|
@Test
|
|
@Test
|
|
|
- public void basicValues_Iterator_Remove(Lookup<TPoint> target) {
|
|
|
|
|
|
|
+ public void basicValues_Iterator_Remove(Lookup<K> target) {
|
|
|
IntCollection set = target.values();
|
|
IntCollection set = target.values();
|
|
|
|
|
|
|
|
assertEquals(0, set.size());
|
|
assertEquals(0, set.size());
|
|
@@ -305,26 +306,26 @@ public final class LookupTester {
|
|
|
assertEquals(0, target.size());
|
|
assertEquals(0, target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private static void assertRemove(Lookup<TPoint> target, ValueEnum key, ValueEnum prev) {
|
|
|
|
|
|
|
+ private void assertRemove(Lookup<K> target, K key, Integer prev) {
|
|
|
int size = target.size();
|
|
int size = target.size();
|
|
|
- assertEquals($value(prev), target.removeInt($key(key)));
|
|
|
|
|
|
|
+ assertEquals(prev.intValue(), target.removeInt(key));
|
|
|
assertEquals(size-1, target.size());
|
|
assertEquals(size-1, target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private static void assertNotRemove(Lookup<TPoint> target, ValueEnum key) {
|
|
|
|
|
|
|
+ private void assertNotRemove(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
int size = target.size();
|
|
int size = target.size();
|
|
|
- assertEquals(target.defaultReturnValue(), target.removeInt($key(key)));
|
|
|
|
|
|
|
+ assertEquals(target.defaultReturnValue(), target.removeInt(item.key()));
|
|
|
assertEquals(size, target.size());
|
|
assertEquals(size, target.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private static void assertContains(Lookup<TPoint> target, ValueEnum key, ValueEnum value) {
|
|
|
|
|
- assertEquals(true, target.containsKey($key(key)));
|
|
|
|
|
- assertEquals($value(value), target.getInt($key(key)));
|
|
|
|
|
|
|
+ private void assertContains(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
|
|
+ assertEquals(true, target.containsKey(item.key()));
|
|
|
|
|
+ assertEquals(item.valueInt(), target.getInt(item.key()));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private static void assertNotContains(Lookup<TPoint> target, ValueEnum key) {
|
|
|
|
|
- assertEquals(false, target.containsKey($key(key)));
|
|
|
|
|
- assertEquals(target.defaultReturnValue(), target.getInt($key(key)));
|
|
|
|
|
|
|
+ private void assertNotContains(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
|
|
+ assertEquals(false, target.containsKey(item.key()));
|
|
|
|
|
+ assertEquals(target.defaultReturnValue(), target.getInt(item.key()));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|