Ranides Atterwim преди 11 години
родител
ревизия
5277340a33

+ 92 - 0
src/test/java/net/ranides/assira/collection/map/CrossEnumMapTest.java

@@ -0,0 +1,92 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.collection.map;
+
+import java.util.Arrays;
+import net.ranides.assira.collection.SetUtils;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author ranides
+ */
+public class CrossEnumMapTest {
+	
+	@Test
+	public void testBasic() {
+		CrossEnumMap<A,B,Integer> map = make();
+		
+		assertEquals(5, map.size());
+		
+		assertTrue( map.contains(A.A1, B.B1));
+		assertTrue( map.contains(A.A4, B.B2));
+		assertFalse( map.contains(A.A4, B.B6));
+		
+		assertNull( map.remove(A.A1, B.B6) );
+		assertEquals(5, map.remove(A.A1, B.B1).intValue() );
+		
+		assertNull( map.get(A.A1, B.B6) );
+		assertNull( map.get(A.A1, B.B1) );
+		assertEquals(8, map.get(A.A4, B.B2).intValue() );
+		
+		assertEquals(4, map.size());
+		assertFalse(map.isEmpty());
+		
+		map.clear();
+		
+		assertEquals(0, map.size());
+		assertTrue(map.isEmpty());
+	}
+	
+	@Test
+	public void testReduceY() {
+		CrossEnumMap<A,B,Integer> map = make();
+		MultiMap<A,Integer> ymap = map.reduceY();
+		
+		assertEquals(2, ymap.get(A.A1).size());
+		assertTrue( ymap.get(A.A1).containsAll(Arrays.asList(5,6)) );
+		
+		assertEquals(3, ymap.get(A.A4).size());
+		assertTrue( ymap.get(A.A4).containsAll(Arrays.asList(7,8,9)) );
+		
+	}
+	
+	@Test
+	public void testReduceZ() {
+		CrossEnumMap<A,B,Integer> map = make();
+		MultiMap<A,B> zmap = map.reduceZ();
+		
+		assertEquals(2, zmap.get(A.A1).size());
+		assertTrue( zmap.get(A.A1).containsAll(Arrays.asList(B.B1,B.B2)) );
+		
+		assertEquals(3, zmap.get(A.A4).size());
+		assertTrue( zmap.get(A.A4).containsAll(Arrays.asList(B.B1, B.B2, B.B4)) );
+		
+	}
+
+	private CrossEnumMap<A, B, Integer> make() {
+		CrossEnumMap<A,B,Integer> map = new CrossEnumMap<>(A.class, B.class);
+		map.put(A.A1, B.B1, 5);
+		map.put(A.A1, B.B2, 6);
+		map.put(A.A4, B.B1, 7);
+		map.put(A.A4, B.B2, 8);
+		map.put(A.A4, B.B4, 9);
+		return map;
+	}
+	
+	
+	
+	public enum A { A1, A2, A3, A4 }
+	
+	public enum B { B1, B2, B3, B4, B5, B6 }
+	
+}

+ 85 - 0
src/test/java/net/ranides/assira/collection/map/CrossHashMapTest.java

@@ -0,0 +1,85 @@
+/*
+ *  @author Ranides Atterwim <ranides@gmail.com>
+ *  @copyright Ranides Atterwim
+ *  @license WTFPL
+ *  @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.collection.map;
+
+import java.util.Arrays;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author ranides
+ */
+public class CrossHashMapTest {
+	
+	@Test
+	public void testBasic() {
+		CrossHashMap<String,String,Integer> map = make();
+		
+		assertEquals(5, map.size());
+		
+		assertTrue( map.contains("a1","b1"));
+		assertTrue( map.contains("a4", "b2"));
+		assertFalse( map.contains("a4", "b6"));
+		
+		assertNull( map.remove("a1", "b6") );
+		assertEquals(5, map.remove("a1", "b1").intValue() );
+		
+		assertNull( map.get("a1", "b6") );
+		assertNull( map.get("a1", "b1") );
+		assertEquals(8, map.get("a4", "b2").intValue() );
+		
+		assertEquals(4, map.size());
+		assertFalse(map.isEmpty());
+		
+		map.clear();
+		
+		assertEquals(0, map.size());
+		assertTrue(map.isEmpty());
+	}
+	
+	@Test
+	public void testReduceY() {
+		CrossHashMap<String,String,Integer> map = make();
+		MultiMap<String,Integer> ymap = map.reduceY();
+		
+		assertEquals(2, ymap.get("a1").size());
+		assertTrue( ymap.get("a1").containsAll(Arrays.asList(5,6)) );
+		
+		assertEquals(3, ymap.get("a4").size());
+		assertTrue( ymap.get("a4").containsAll(Arrays.asList(7,8,9)) );
+		
+	}
+	
+	@Test
+	public void testReduceZ() {
+		CrossHashMap<String,String,Integer> map = make();
+		MultiMap<String,String> zmap = map.reduceZ();
+		
+		assertEquals(2, zmap.get("a1").size());
+		assertTrue( zmap.get("a1").containsAll(Arrays.asList("b1","b2")) );
+		
+		assertEquals(3, zmap.get("a4").size());
+		assertTrue( zmap.get("a4").containsAll(Arrays.asList("b1","b2","b4")) );
+		
+	}
+
+	private CrossHashMap<String, String, Integer> make() {
+		CrossHashMap<String,String,Integer> map = new CrossHashMap<>();
+		map.put("a1", "b1", 5);
+		map.put("a1", "b2", 6);
+		map.put("a4", "b1", 7);
+		map.put("a4", "b2", 8);
+		map.put("a4", "b4", 9);
+		return map;
+	}
+	
+}

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

@@ -12,12 +12,11 @@ import java.util.Map;
 import net.ranides.assira.generic.Serializer;
 import org.junit.Test;
 import static org.junit.Assert.*;
+
 /**
  *
- * @author msieron
+ * @author ranides
  */
-
-
 public class MultiHashMapTest {
 	
 	public MultiHashMapTest() {