today
[ephemerata.git] / KezvhLib / src-junit / net / kezvh / collections / Map2 / Map2Test.java
blob906de2d1c1a76dea0f9decc3fc7ad6838f83f3e2
1 /**
3 */
4 package net.kezvh.collections.Map2;
6 import java.util.Collection;
7 import java.util.Iterator;
8 import java.util.Map;
10 import junit.framework.Assert;
11 import junit.framework.TestCase;
13 import org.junit.Test;
15 /**
16 * @author afflux
18 public abstract class Map2Test extends TestCase {
19 /**
20 * @param <K1> COMMENT
21 * @param <K2> COMMENT
22 * @param <V> COMMENT
23 * @return COMMENT
25 protected abstract <K1, K2, V> Map2<K1, K2, V> createMap2();
27 /**
30 @Test
31 public void testCreate() {
32 final Map2<Integer, Integer, Integer> it = this.createMap2();
33 Assert.assertNotNull(it);
36 /**
39 @Test
40 public void testPut() {
41 final Map2<Integer, Integer, Integer> it = this.createMap2();
42 final Integer previous = it.put(1, 2, 3);
43 Assert.assertNull(previous);
46 /**
49 @Test
50 public void testReput() {
51 final Map2<Integer, Integer, Integer> it = this.createMap2();
52 it.put(1, 2, 3);
53 final int previous = it.put(1, 2, 4);
54 Assert.assertEquals(3, previous);
55 final int current = it.get(1, 2);
56 Assert.assertEquals(4, current);
59 /**
62 @Test
63 public void testRemove() {
64 final Map2<Integer, Integer, Integer> it = this.createMap2();
65 it.put(1, 2, 3);
66 final int previous = it.remove(1, 2);
67 Assert.assertEquals(3, previous);
70 /**
73 @Test
74 public void testSize() {
75 final Map2<Integer, Integer, Integer> it = this.createMap2();
76 for (int i = 0; i < 10; i++)
77 for (int j = 0; j < 10; j++)
78 for (int k = 0; k < 4; k++) {
79 it.put(i, j, k);
80 Assert.assertEquals(i * 10 + j + 1, it.size());
83 for (int i = 0; i < 10; i++)
84 for (int j = 0; j < 10; j++)
85 for (int k = 0; k < 4; k++) {
86 it.remove(i, j);
87 Assert.assertEquals(99 - (i * 10 + j), it.size());
91 /**
94 @Test
95 public void test1WayMapSize() {
96 final Map2<Integer, Integer, Integer> it = this.createMap2();
97 for (int i = 0; i < 10; i++)
98 for (int j = 0; j < 10; j++)
99 for (int k = 0; k < 4; k++)
100 it.put(i, j, k);
102 for (int i = 0; i < 10; i++) {
103 final Map<Integer, Integer> map = it.entryMapOnKey1(i);
104 Assert.assertEquals(10, map.size());
111 @Test
112 public void test1WayMapContents() {
113 final Map2<Integer, Integer, Integer> it = this.createMap2();
114 for (int i = 0; i < 10; i++)
115 for (int j = 0; j < 10; j++)
116 for (int k = 0; k < 4; k++)
117 it.put(i, j, k);
119 for (int i = 0; i < 10; i++) {
120 final Map<Integer, Integer> map = it.entryMapOnKey1(i);
121 for (int j = 0; j < 10; j++) {
122 final int three = map.get(j);
123 Assert.assertEquals(3, three);
131 @Test
132 public void test1WayMapModifications() {
133 final Map2<Integer, Integer, Integer> it = this.createMap2();
134 for (int i = 0; i < 10; i++)
135 for (int j = 0; j < 10; j++)
136 for (int k = 0; k < 4; k++)
137 it.put(i, j, k);
139 for (int i = 0; i < 10; i++) {
140 final Map<Integer, Integer> map = it.entryMapOnKey1(i);
141 for (int j = 0; j < 10; j++)
142 for (int k = 2; k >= 0; k--) {
143 final int previous = map.put(j, k);
144 Assert.assertEquals(k + 1, previous);
152 @Test
153 public void testRemove0() {
154 final Map2<Integer, Integer, Integer> it = this.createMap2();
155 for (int i = 0; i < 10; i++)
156 for (int j = 0; j < 10; j++)
157 it.put(i, j, 10 * i + j);
159 final int value = it.remove(1, 1);
160 Assert.assertEquals(11, value);
161 Assert.assertEquals(99, it.size());
162 Assert.assertEquals(9, it.get1(1).size());
163 Assert.assertEquals(9, it.get2(1).size());
164 Assert.assertEquals(10, it.get1(0).size());
165 Assert.assertEquals(10, it.get2(0).size());
166 Assert.assertEquals(10, it.get1(2).size());
167 Assert.assertEquals(10, it.get2(2).size());
173 @Test
174 public void testRemove1() {
175 final Map2<Integer, Integer, Integer> it = this.createMap2();
176 for (int i = 0; i < 10; i++)
177 for (int j = 0; j < 10; j++)
178 it.put(i, j, 10 * i + j);
180 Assert.assertEquals(100, it.size());
181 for (int i = 0; i < 10; i++)
182 System.out.println(it.get1(i).size());
183 final Collection<Map.Entry<Integer, Integer>> firstRow = it.remove1(1);
184 Assert.assertEquals(10, firstRow.size());
185 Assert.assertEquals(90, it.size());
186 Assert.assertEquals(9, it.get2(1).size());
187 final Iterator<Map.Entry<Integer, Integer>> iterator = firstRow.iterator();
188 for (int i = 0; i < 10; i++) {
189 final Map.Entry<Integer, Integer> next = iterator.next();
190 Assert.assertEquals(i, (int) next.getKey());
191 Assert.assertEquals(i + 10, (int) next.getValue());
198 @Test
199 public void testRemove2() {
200 final Map2<Integer, Integer, Integer> it = this.createMap2();
201 for (int i = 0; i < 10; i++)
202 for (int j = 0; j < 10; j++)
203 it.put(j, i, 10 * i + j);
205 final Collection<Map.Entry<Integer, Integer>> firstRow = it.remove2(1);
206 Assert.assertEquals(10, firstRow.size());
207 final Iterator<Map.Entry<Integer, Integer>> iterator = firstRow.iterator();
208 for (int i = 0; i < 10; i++) {
209 final Map.Entry<Integer, Integer> next = iterator.next();
210 Assert.assertEquals(i, (int) next.getKey());
211 Assert.assertEquals(i + 10, (int) next.getValue());