|
|
@@ -1,332 +1,332 @@
|
|
|
-/*
|
|
|
- * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
- * @copyright Ranides Atterwim
|
|
|
- * @license WTFPL
|
|
|
- * @url http://ranides.net/projects/???
|
|
|
- */
|
|
|
-package net.ranides.assira.collection.suite;
|
|
|
-
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.NoSuchElementException;
|
|
|
-import java.util.Set;
|
|
|
-import javax.annotation.Resource;
|
|
|
-import net.ranides.assira.collection.IntCollection;
|
|
|
-import net.ranides.assira.collection.iterators.IntIterator;
|
|
|
-import net.ranides.assira.collection.lookups.Lookup;
|
|
|
-import net.ranides.assira.test.TMap;
|
|
|
-import net.ranides.assira.test.TMap.TItem;
|
|
|
-import net.ranides.assira.test.TMap.TItems;
|
|
|
-import net.ranides.assira.junit.QAssert;
|
|
|
-import static org.junit.Assert.*;
|
|
|
-import org.junit.Test;
|
|
|
-
|
|
|
-/**
|
|
|
- *
|
|
|
- * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
- */
|
|
|
-@SuppressWarnings("PMD.MethodNameRules")
|
|
|
-public final class LookupTester<K> {
|
|
|
-
|
|
|
- @Resource(name = "map!")
|
|
|
- private TMap<K,Integer> $map;
|
|
|
-
|
|
|
- private static final int BASIC_PUT_MANY = 128;
|
|
|
-
|
|
|
- private static final int BASIC_PUT_REPLACE = 40;
|
|
|
-
|
|
|
- private static final int BASIC_PUT_RANDOM = 220;
|
|
|
-
|
|
|
- private static final int BASIC_REMOVE_ALL = 97;
|
|
|
-
|
|
|
- private static final int BASIC_REMOVE_RANDOM = 273;
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicPut(Lookup<K> target) {
|
|
|
- int prev = target.size();
|
|
|
- for(TItem<K,?> item :$map.range(0, BASIC_PUT_MANY)) {
|
|
|
- target.put(item.key(), item.valueInt());
|
|
|
- }
|
|
|
- assertEquals(prev + BASIC_PUT_MANY, target.size());
|
|
|
-
|
|
|
- logicPut(target);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void logicPut(Lookup<K> target) {
|
|
|
- int prev = target.size();
|
|
|
- TItem<K,Integer> item1 = $map.item(1001,0);
|
|
|
- TItem<K,Integer> item2 = $map.item(1001,1);
|
|
|
- target.put(item1.key(), item1.valueInt());
|
|
|
- assertEquals(prev + 1, target.size());
|
|
|
-
|
|
|
- target.put(item1.key(), item1.valueInt());
|
|
|
- assertEquals(prev + 1, target.size());
|
|
|
-
|
|
|
- target.put(item2.key(), item2.valueInt()); // identical hash but not eq
|
|
|
- assertEquals(prev + 2, target.size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicPutReplace(Lookup<K> target) {
|
|
|
- int prev = target.size();
|
|
|
- for (TItem<K,Integer> item : $map.urange(0, BASIC_PUT_REPLACE)) {
|
|
|
- target.put(item.key(), item.valueInt());
|
|
|
- }
|
|
|
- assertEquals(prev + (2 * BASIC_PUT_REPLACE), target.size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicPutRandom(Lookup<K> target) {
|
|
|
- int prev = target.size();
|
|
|
- for (TItem<K,Integer> item : $map.urange(0, BASIC_PUT_RANDOM)) {
|
|
|
- target.put(item.key(), item.valueInt());
|
|
|
- }
|
|
|
- assertEquals(prev + (2 * BASIC_PUT_RANDOM), target.size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicRemove(Lookup<K> target) {
|
|
|
- target.defaultReturnValue(-1);
|
|
|
- $map.list(1,2,3).into(target);
|
|
|
-
|
|
|
- assertNotRemove(target, $map.item(1,1));
|
|
|
-
|
|
|
- assertRemove(target, $map.item(1));
|
|
|
- assertRemove(target, $map.item(2));
|
|
|
- assertRemove(target, $map.item(3));
|
|
|
-
|
|
|
- assertEquals(0, target.size());
|
|
|
-
|
|
|
- assertNotRemove(target, $map.item(3));
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicRemoveAll(Lookup<K> target) {
|
|
|
- assertEquals(0, target.size());
|
|
|
- TItems<K,Integer> items = $map.range(0, BASIC_REMOVE_ALL);
|
|
|
-
|
|
|
- items.into(target);
|
|
|
- assertEquals(BASIC_REMOVE_ALL, target.size());
|
|
|
-
|
|
|
- for(int i=0; i<BASIC_REMOVE_ALL; i++) {
|
|
|
- assertEquals(items.at(i).valueInt(), target.removeInt(items.at(i).key()));
|
|
|
- assertEquals(BASIC_REMOVE_ALL-i-1, target.size());
|
|
|
- }
|
|
|
- assertEquals(0, target.size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicRemoveRandom(Lookup<K> target) {
|
|
|
- assertEquals(0, target.size());
|
|
|
- TItems<K,Integer> items = $map.range(0, BASIC_REMOVE_RANDOM);
|
|
|
-
|
|
|
- items.into(target);
|
|
|
- assertEquals(BASIC_REMOVE_RANDOM, target.size());
|
|
|
-
|
|
|
- items.shuffle(777);
|
|
|
- for(int i=0; i<BASIC_REMOVE_RANDOM; i++) {
|
|
|
- assertEquals(items.at(i).valueInt(), target.removeInt(items.at(i).key()));
|
|
|
- assertEquals(BASIC_REMOVE_RANDOM-i-1, target.size());
|
|
|
- }
|
|
|
- assertEquals(0, target.size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicGet(Lookup<K> target) {
|
|
|
- target.defaultReturnValue(-1);
|
|
|
- assertEquals(-1, target.getInt($map.item(1).key()));
|
|
|
-
|
|
|
- $map.list(1,2,3).into(target);
|
|
|
- assertEquals(3, target.size());
|
|
|
- assertEquals(-1, target.getInt($map.item(1,1).key()));
|
|
|
-
|
|
|
- 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
|
|
|
- public void logicRemove(Lookup<K> target) {
|
|
|
- target.defaultReturnValue(-1);
|
|
|
- $map.list(1,2,3).into(target);
|
|
|
-
|
|
|
- assertEquals(-1, target.removeInt($map.item(1,1).key()));
|
|
|
- assertEquals(3, target.size());
|
|
|
-
|
|
|
- assertContains(target, $map.item(1));
|
|
|
- assertRemove(target, $map.item(1));
|
|
|
- assertNotContains(target, $map.item(1));
|
|
|
-
|
|
|
- assertContains(target, $map.item(2));
|
|
|
- assertRemove(target, $map.item(2));
|
|
|
- assertNotContains(target, $map.item(2));
|
|
|
-
|
|
|
- assertContains(target, $map.item(3));
|
|
|
- assertRemove(target, $map.item(3));
|
|
|
- assertNotContains(target, $map.item(3));
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicContains(Lookup<K> target) {
|
|
|
- assertEquals(0, target.size());
|
|
|
- $map.list(1,2).into(target);
|
|
|
-
|
|
|
- assertEquals(true, target.containsValue($map.item(1).value()));
|
|
|
- assertEquals(true, target.containsValue($map.item(2).value()));
|
|
|
-
|
|
|
- assertEquals(false, target.containsValue($map.item(1,1).value()));
|
|
|
- assertEquals(false, target.containsValue($map.item(3).value()));
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicEntrySet_Iterator(Lookup<K> target) {
|
|
|
- Set<Lookup.LookupEntry<K>> set = target.fastEntrySet();
|
|
|
-
|
|
|
- assertEquals(0, set.size());
|
|
|
- $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
- assertEquals(4, set.size());
|
|
|
-
|
|
|
- Iterator<Lookup.LookupEntry<K>> iterator = set.iterator();
|
|
|
- while(iterator.hasNext()) {
|
|
|
- Lookup.LookupEntry<K> entry = iterator.next();
|
|
|
- assertEquals(target.getInt(entry.getKey()), entry.getIntValue());
|
|
|
- }
|
|
|
-
|
|
|
- QAssert.assertThrows(NoSuchElementException.class, ()-> iterator.next());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicEntrySet_Iterator_SetValue(Lookup<K> target) {
|
|
|
- Set<Lookup.LookupEntry<K>> set = target.fastEntrySet();
|
|
|
-
|
|
|
- assertEquals(0, set.size());
|
|
|
- $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
- K k1 = $map.item(1).key();
|
|
|
- K k2 = $map.item(2).key();
|
|
|
- int v1 = $map.item(101).valueInt();
|
|
|
- int v2 = $map.item(102).valueInt();
|
|
|
-
|
|
|
- Iterator<Lookup.LookupEntry<K>> iterator = set.iterator();
|
|
|
- while(iterator.hasNext()) {
|
|
|
- Lookup.LookupEntry<K> entry = iterator.next();
|
|
|
- if(k1.equals(entry.getKey())) {
|
|
|
- entry.setValue(v1);
|
|
|
- }
|
|
|
- if(k2.equals(entry.getKey())) {
|
|
|
- entry.setValue(v2);
|
|
|
- }
|
|
|
- }
|
|
|
- assertContains(target, $map.item(1).key(), v1);
|
|
|
- assertContains(target, $map.item(2).key(), v2);
|
|
|
- assertContains(target, $map.item(1,1));
|
|
|
- assertContains(target, $map.item(3));
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicValues_Contains(Lookup<K> target) {
|
|
|
- IntCollection set = target.values();
|
|
|
-
|
|
|
- assertEquals(0, set.size());
|
|
|
-
|
|
|
- $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
- assertEquals(4, set.size());
|
|
|
- assertEquals(true, set.contains($map.item(1).value()));
|
|
|
- assertEquals(true, set.contains($map.item(1,1).value()));
|
|
|
- assertEquals(true, set.contains($map.item(2).value()));
|
|
|
- assertEquals(true, set.contains($map.item(3).value()));
|
|
|
-
|
|
|
- assertEquals(false, set.contains($map.item(4).value()));
|
|
|
- assertEquals(false, set.contains(new Object()));
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicValues_Remove(Lookup<K> target) {
|
|
|
- IntCollection set = target.values();
|
|
|
-
|
|
|
- basicValues_Contains(target);
|
|
|
-
|
|
|
- assertEquals(true, set.remove($map.item(1).value()));
|
|
|
- assertEquals(false, set.remove($map.item(4).value()));
|
|
|
- assertEquals(false, set.remove(new Object()));
|
|
|
-
|
|
|
- assertEquals(false, set.contains($map.item(1).value()));
|
|
|
- assertEquals(true, set.contains($map.item(1,1).value()));
|
|
|
- assertEquals(true, set.contains($map.item(2).value()));
|
|
|
- assertEquals(true, set.contains($map.item(3).value()));
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void basicValues_Iterator(Lookup<K> target) {
|
|
|
- IntCollection set = target.values();
|
|
|
-
|
|
|
- assertEquals(0, set.size());
|
|
|
- $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
- assertEquals(4, set.size());
|
|
|
-
|
|
|
- IntIterator iterator = set.iterator();
|
|
|
- while(iterator.hasNext()) {
|
|
|
- int var = iterator.next();
|
|
|
- assertEquals(true, target.containsValue(var));
|
|
|
- }
|
|
|
-
|
|
|
- QAssert.assertThrows(NoSuchElementException.class, ()-> iterator.next());
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Test
|
|
|
- public void basicValues_Iterator_Remove(Lookup<K> target) {
|
|
|
- IntCollection set = target.values();
|
|
|
-
|
|
|
- assertEquals(0, set.size());
|
|
|
- $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
-
|
|
|
- IntIterator iterator = set.iterator();
|
|
|
- while(iterator.hasNext()) {
|
|
|
- int var = iterator.next();
|
|
|
-
|
|
|
- if(var == $map.item(1).valueInt()) {
|
|
|
- iterator.remove();
|
|
|
- }
|
|
|
- if(var == $map.item(2).valueInt()) {
|
|
|
- iterator.remove();
|
|
|
- QAssert.assertThrows(IllegalStateException.class, ()-> iterator.remove());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- assertEquals(2, target.size());
|
|
|
- assertNotContains(target, $map.item(1));
|
|
|
- assertNotContains(target, $map.item(2));
|
|
|
- assertContains(target, $map.item(1,1));
|
|
|
- assertContains(target, $map.item(3));
|
|
|
-
|
|
|
- set.clear();
|
|
|
- assertEquals(0, target.size());
|
|
|
- }
|
|
|
-
|
|
|
- private void assertRemove(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
- int size = target.size();
|
|
|
- assertEquals(item.valueInt(), target.removeInt(item.key()));
|
|
|
- assertEquals(size-1, target.size());
|
|
|
- }
|
|
|
-
|
|
|
- private void assertNotRemove(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
- int size = target.size();
|
|
|
- assertEquals(target.defaultReturnValue(), target.removeInt(item.key()));
|
|
|
- assertEquals(size, target.size());
|
|
|
- }
|
|
|
-
|
|
|
- private void assertContains(Lookup<K> target, K key, int value) {
|
|
|
- assertEquals(true, target.containsKey(key));
|
|
|
- assertEquals(value, target.getInt(key));
|
|
|
- }
|
|
|
-
|
|
|
- private void assertContains(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
- assertContains(target, item.key(), item.valueInt());
|
|
|
- }
|
|
|
-
|
|
|
- private void assertNotContains(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
- assertEquals(false, target.containsKey(item.key()));
|
|
|
- assertEquals(target.defaultReturnValue(), target.getInt(item.key()));
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
+/*
|
|
|
+ * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
+ * @copyright Ranides Atterwim
|
|
|
+ * @license WTFPL
|
|
|
+ * @url http://ranides.net/projects/???
|
|
|
+ */
|
|
|
+package net.ranides.assira.collection.suite.lookups;
|
|
|
+
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.NoSuchElementException;
|
|
|
+import java.util.Set;
|
|
|
+import javax.annotation.Resource;
|
|
|
+import net.ranides.assira.collection.IntCollection;
|
|
|
+import net.ranides.assira.collection.iterators.IntIterator;
|
|
|
+import net.ranides.assira.collection.lookups.Lookup;
|
|
|
+import net.ranides.assira.test.TMap;
|
|
|
+import net.ranides.assira.test.TMap.TItem;
|
|
|
+import net.ranides.assira.test.TMap.TItems;
|
|
|
+import net.ranides.assira.junit.QAssert;
|
|
|
+import static org.junit.Assert.*;
|
|
|
+import org.junit.Test;
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
+ */
|
|
|
+@SuppressWarnings("PMD.MethodNameRules")
|
|
|
+public final class LookupTester<K> {
|
|
|
+
|
|
|
+ @Resource(name = "map!")
|
|
|
+ private TMap<K,Integer> $map;
|
|
|
+
|
|
|
+ private static final int BASIC_PUT_MANY = 128;
|
|
|
+
|
|
|
+ private static final int BASIC_PUT_REPLACE = 40;
|
|
|
+
|
|
|
+ private static final int BASIC_PUT_RANDOM = 220;
|
|
|
+
|
|
|
+ private static final int BASIC_REMOVE_ALL = 97;
|
|
|
+
|
|
|
+ private static final int BASIC_REMOVE_RANDOM = 273;
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicPut(Lookup<K> target) {
|
|
|
+ int prev = target.size();
|
|
|
+ for(TItem<K,?> item :$map.range(0, BASIC_PUT_MANY)) {
|
|
|
+ target.put(item.key(), item.valueInt());
|
|
|
+ }
|
|
|
+ assertEquals(prev + BASIC_PUT_MANY, target.size());
|
|
|
+
|
|
|
+ logicPut(target);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void logicPut(Lookup<K> target) {
|
|
|
+ int prev = target.size();
|
|
|
+ TItem<K,Integer> item1 = $map.item(1001,0);
|
|
|
+ TItem<K,Integer> item2 = $map.item(1001,1);
|
|
|
+ target.put(item1.key(), item1.valueInt());
|
|
|
+ assertEquals(prev + 1, target.size());
|
|
|
+
|
|
|
+ target.put(item1.key(), item1.valueInt());
|
|
|
+ assertEquals(prev + 1, target.size());
|
|
|
+
|
|
|
+ target.put(item2.key(), item2.valueInt()); // identical hash but not eq
|
|
|
+ assertEquals(prev + 2, target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicPutReplace(Lookup<K> target) {
|
|
|
+ int prev = target.size();
|
|
|
+ for (TItem<K,Integer> item : $map.urange(0, BASIC_PUT_REPLACE)) {
|
|
|
+ target.put(item.key(), item.valueInt());
|
|
|
+ }
|
|
|
+ assertEquals(prev + (2 * BASIC_PUT_REPLACE), target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicPutRandom(Lookup<K> target) {
|
|
|
+ int prev = target.size();
|
|
|
+ for (TItem<K,Integer> item : $map.urange(0, BASIC_PUT_RANDOM)) {
|
|
|
+ target.put(item.key(), item.valueInt());
|
|
|
+ }
|
|
|
+ assertEquals(prev + (2 * BASIC_PUT_RANDOM), target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicRemove(Lookup<K> target) {
|
|
|
+ target.defaultReturnValue(-1);
|
|
|
+ $map.list(1,2,3).into(target);
|
|
|
+
|
|
|
+ assertNotRemove(target, $map.item(1,1));
|
|
|
+
|
|
|
+ assertRemove(target, $map.item(1));
|
|
|
+ assertRemove(target, $map.item(2));
|
|
|
+ assertRemove(target, $map.item(3));
|
|
|
+
|
|
|
+ assertEquals(0, target.size());
|
|
|
+
|
|
|
+ assertNotRemove(target, $map.item(3));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicRemoveAll(Lookup<K> target) {
|
|
|
+ assertEquals(0, target.size());
|
|
|
+ TItems<K,Integer> items = $map.range(0, BASIC_REMOVE_ALL);
|
|
|
+
|
|
|
+ items.into(target);
|
|
|
+ assertEquals(BASIC_REMOVE_ALL, target.size());
|
|
|
+
|
|
|
+ for(int i=0; i<BASIC_REMOVE_ALL; i++) {
|
|
|
+ assertEquals(items.at(i).valueInt(), target.removeInt(items.at(i).key()));
|
|
|
+ assertEquals(BASIC_REMOVE_ALL-i-1, target.size());
|
|
|
+ }
|
|
|
+ assertEquals(0, target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicRemoveRandom(Lookup<K> target) {
|
|
|
+ assertEquals(0, target.size());
|
|
|
+ TItems<K,Integer> items = $map.range(0, BASIC_REMOVE_RANDOM);
|
|
|
+
|
|
|
+ items.into(target);
|
|
|
+ assertEquals(BASIC_REMOVE_RANDOM, target.size());
|
|
|
+
|
|
|
+ items.shuffle(777);
|
|
|
+ for(int i=0; i<BASIC_REMOVE_RANDOM; i++) {
|
|
|
+ assertEquals(items.at(i).valueInt(), target.removeInt(items.at(i).key()));
|
|
|
+ assertEquals(BASIC_REMOVE_RANDOM-i-1, target.size());
|
|
|
+ }
|
|
|
+ assertEquals(0, target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicGet(Lookup<K> target) {
|
|
|
+ target.defaultReturnValue(-1);
|
|
|
+ assertEquals(-1, target.getInt($map.item(1).key()));
|
|
|
+
|
|
|
+ $map.list(1,2,3).into(target);
|
|
|
+ assertEquals(3, target.size());
|
|
|
+ assertEquals(-1, target.getInt($map.item(1,1).key()));
|
|
|
+
|
|
|
+ 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
|
|
|
+ public void logicRemove(Lookup<K> target) {
|
|
|
+ target.defaultReturnValue(-1);
|
|
|
+ $map.list(1,2,3).into(target);
|
|
|
+
|
|
|
+ assertEquals(-1, target.removeInt($map.item(1,1).key()));
|
|
|
+ assertEquals(3, target.size());
|
|
|
+
|
|
|
+ assertContains(target, $map.item(1));
|
|
|
+ assertRemove(target, $map.item(1));
|
|
|
+ assertNotContains(target, $map.item(1));
|
|
|
+
|
|
|
+ assertContains(target, $map.item(2));
|
|
|
+ assertRemove(target, $map.item(2));
|
|
|
+ assertNotContains(target, $map.item(2));
|
|
|
+
|
|
|
+ assertContains(target, $map.item(3));
|
|
|
+ assertRemove(target, $map.item(3));
|
|
|
+ assertNotContains(target, $map.item(3));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicContains(Lookup<K> target) {
|
|
|
+ assertEquals(0, target.size());
|
|
|
+ $map.list(1,2).into(target);
|
|
|
+
|
|
|
+ assertEquals(true, target.containsValue($map.item(1).value()));
|
|
|
+ assertEquals(true, target.containsValue($map.item(2).value()));
|
|
|
+
|
|
|
+ assertEquals(false, target.containsValue($map.item(1,1).value()));
|
|
|
+ assertEquals(false, target.containsValue($map.item(3).value()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicEntrySet_Iterator(Lookup<K> target) {
|
|
|
+ Set<Lookup.LookupEntry<K>> set = target.fastEntrySet();
|
|
|
+
|
|
|
+ assertEquals(0, set.size());
|
|
|
+ $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
+ assertEquals(4, set.size());
|
|
|
+
|
|
|
+ Iterator<Lookup.LookupEntry<K>> iterator = set.iterator();
|
|
|
+ while(iterator.hasNext()) {
|
|
|
+ Lookup.LookupEntry<K> entry = iterator.next();
|
|
|
+ assertEquals(target.getInt(entry.getKey()), entry.getIntValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ QAssert.assertThrows(NoSuchElementException.class, ()-> iterator.next());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicEntrySet_Iterator_SetValue(Lookup<K> target) {
|
|
|
+ Set<Lookup.LookupEntry<K>> set = target.fastEntrySet();
|
|
|
+
|
|
|
+ assertEquals(0, set.size());
|
|
|
+ $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
+ K k1 = $map.item(1).key();
|
|
|
+ K k2 = $map.item(2).key();
|
|
|
+ int v1 = $map.item(101).valueInt();
|
|
|
+ int v2 = $map.item(102).valueInt();
|
|
|
+
|
|
|
+ Iterator<Lookup.LookupEntry<K>> iterator = set.iterator();
|
|
|
+ while(iterator.hasNext()) {
|
|
|
+ Lookup.LookupEntry<K> entry = iterator.next();
|
|
|
+ if(k1.equals(entry.getKey())) {
|
|
|
+ entry.setValue(v1);
|
|
|
+ }
|
|
|
+ if(k2.equals(entry.getKey())) {
|
|
|
+ entry.setValue(v2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ assertContains(target, $map.item(1).key(), v1);
|
|
|
+ assertContains(target, $map.item(2).key(), v2);
|
|
|
+ assertContains(target, $map.item(1,1));
|
|
|
+ assertContains(target, $map.item(3));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicValues_Contains(Lookup<K> target) {
|
|
|
+ IntCollection set = target.values();
|
|
|
+
|
|
|
+ assertEquals(0, set.size());
|
|
|
+
|
|
|
+ $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
+ assertEquals(4, set.size());
|
|
|
+ assertEquals(true, set.contains($map.item(1).value()));
|
|
|
+ assertEquals(true, set.contains($map.item(1,1).value()));
|
|
|
+ assertEquals(true, set.contains($map.item(2).value()));
|
|
|
+ assertEquals(true, set.contains($map.item(3).value()));
|
|
|
+
|
|
|
+ assertEquals(false, set.contains($map.item(4).value()));
|
|
|
+ assertEquals(false, set.contains(new Object()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicValues_Remove(Lookup<K> target) {
|
|
|
+ IntCollection set = target.values();
|
|
|
+
|
|
|
+ basicValues_Contains(target);
|
|
|
+
|
|
|
+ assertEquals(true, set.remove($map.item(1).value()));
|
|
|
+ assertEquals(false, set.remove($map.item(4).value()));
|
|
|
+ assertEquals(false, set.remove(new Object()));
|
|
|
+
|
|
|
+ assertEquals(false, set.contains($map.item(1).value()));
|
|
|
+ assertEquals(true, set.contains($map.item(1,1).value()));
|
|
|
+ assertEquals(true, set.contains($map.item(2).value()));
|
|
|
+ assertEquals(true, set.contains($map.item(3).value()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void basicValues_Iterator(Lookup<K> target) {
|
|
|
+ IntCollection set = target.values();
|
|
|
+
|
|
|
+ assertEquals(0, set.size());
|
|
|
+ $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
+ assertEquals(4, set.size());
|
|
|
+
|
|
|
+ IntIterator iterator = set.iterator();
|
|
|
+ while(iterator.hasNext()) {
|
|
|
+ int var = iterator.next();
|
|
|
+ assertEquals(true, target.containsValue(var));
|
|
|
+ }
|
|
|
+
|
|
|
+ QAssert.assertThrows(NoSuchElementException.class, ()-> iterator.next());
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Test
|
|
|
+ public void basicValues_Iterator_Remove(Lookup<K> target) {
|
|
|
+ IntCollection set = target.values();
|
|
|
+
|
|
|
+ assertEquals(0, set.size());
|
|
|
+ $map.list().item(1).item(1,1).item(2).item(3).into(target);
|
|
|
+
|
|
|
+ IntIterator iterator = set.iterator();
|
|
|
+ while(iterator.hasNext()) {
|
|
|
+ int var = iterator.next();
|
|
|
+
|
|
|
+ if(var == $map.item(1).valueInt()) {
|
|
|
+ iterator.remove();
|
|
|
+ }
|
|
|
+ if(var == $map.item(2).valueInt()) {
|
|
|
+ iterator.remove();
|
|
|
+ QAssert.assertThrows(IllegalStateException.class, ()-> iterator.remove());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ assertEquals(2, target.size());
|
|
|
+ assertNotContains(target, $map.item(1));
|
|
|
+ assertNotContains(target, $map.item(2));
|
|
|
+ assertContains(target, $map.item(1,1));
|
|
|
+ assertContains(target, $map.item(3));
|
|
|
+
|
|
|
+ set.clear();
|
|
|
+ assertEquals(0, target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void assertRemove(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
+ int size = target.size();
|
|
|
+ assertEquals(item.valueInt(), target.removeInt(item.key()));
|
|
|
+ assertEquals(size-1, target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void assertNotRemove(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
+ int size = target.size();
|
|
|
+ assertEquals(target.defaultReturnValue(), target.removeInt(item.key()));
|
|
|
+ assertEquals(size, target.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void assertContains(Lookup<K> target, K key, int value) {
|
|
|
+ assertEquals(true, target.containsKey(key));
|
|
|
+ assertEquals(value, target.getInt(key));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void assertContains(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
+ assertContains(target, item.key(), item.valueInt());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void assertNotContains(Lookup<K> target, TItem<K,Integer> item) {
|
|
|
+ assertEquals(false, target.containsKey(item.key()));
|
|
|
+ assertEquals(target.defaultReturnValue(), target.getInt(item.key()));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|