@Override public void accept(final String s, final Object o) { original.putValue("c", "other"); } });
@Override public void accept(final String s, final Object o) { original.putValue("c", "other"); } });
@Override public void accept(final String s, final Object o, final Object o2) { original.putValue("c", "other"); } }, null);
@Override public void accept(final String s, final Object o, final Object o2) { original.putValue("c", "other"); } }, null);
public SortedArrayStringMap(final Map<String, ?> map) { resize(ceilingNextPowerOfTwo(map.size())); for (final Map.Entry<String, ?> entry : map.entrySet()) { putValue(entry.getKey(), entry.getValue()); } }
@Test public void testRemoveWhenFull() throws Exception { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "avalue"); original.putValue("b", "bvalue"); original.putValue("c", "cvalue"); original.putValue("d", "dvalue"); // default capacity = 4 original.remove("d"); }
@Test public void testSerialization() throws Exception { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "avalue"); original.putValue("B", "Bvalue"); original.putValue("3", "3value"); final byte[] binary = serialize(original); final SortedArrayStringMap copy = deserialize(binary); assertEquals(original, copy); }
@Test public void testForEachTriConsumer() throws Exception { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "avalue"); original.putValue("B", "Bvalue"); original.putValue("3", "3value"); final State state = new State(); state.data = original; original.forEach(COUNTER, state); assertEquals(state.count, original.size()); } }
@Test(expected = ConcurrentModificationException.class) public void testConcurrentModificationTriConsumerPut() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "aaa"); original.forEach(new TriConsumer<String, Object, Object>() { @Override public void accept(final String s, final Object o, final Object o2) { original.putValue("c", "other"); } }, null); }
@Test(expected = ConcurrentModificationException.class) public void testConcurrentModificationTriConsumerClear() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "aaa"); original.forEach(new TriConsumer<String, Object, Object>() { @Override public void accept(final String s, final Object o, final Object o2) { original.clear(); } }, null); }
@Test(expected = ConcurrentModificationException.class) public void testConcurrentModificationTriConsumerPutValue() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "aaa"); original.forEach(new TriConsumer<String, Object, Object>() { @Override public void accept(final String s, final Object o, final Object o2) { original.putValue("c", "other"); } }, null); }
@Test(expected = UnsupportedOperationException.class) public void testFreezeProhibitsPutValue() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.freeze(); original.putValue("a", "aaa"); }
@Test(expected = ConcurrentModificationException.class) public void testConcurrentModificationBiConsumerPutValue() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "aaa"); original.forEach(new BiConsumer<String, Object>() { @Override public void accept(final String s, final Object o) { original.putValue("c", "other"); } }); }
@Test(expected = ConcurrentModificationException.class) public void testConcurrentModificationBiConsumerRemove() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "aaa"); original.forEach(new BiConsumer<String, Object>() { @Override public void accept(final String s, final Object o) { original.remove("a"); } }); }
@Test(expected = ConcurrentModificationException.class) public void testConcurrentModificationBiConsumerClear() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "aaa"); original.forEach(new BiConsumer<String, Object>() { @Override public void accept(final String s, final Object o) { original.clear(); } }); }
@Test(expected = ConcurrentModificationException.class) public void testConcurrentModificationTriConsumerRemove() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "aaa"); original.forEach(new TriConsumer<String, Object, Object>() { @Override public void accept(final String s, final Object o, final Object o2) { original.remove("a"); } }, null); }
@Test(expected = UnsupportedOperationException.class) public void testFreezeProhibitsRemove() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("b", "bbb"); original.freeze(); original.remove("b"); // existing key: modifies the collection }
@Test public void testFreezeAllowsRemoveOfNonExistingKey() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("b", "bbb"); original.freeze(); original.remove("a"); // no actual modification }
@Test public void testRemove() { final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "avalue"); assertEquals(1, original.size()); assertEquals("avalue", original.getValue("a")); original.remove("a"); assertEquals(0, original.size()); assertNull("no a val", original.getValue("a")); original.remove("B"); assertEquals(0, original.size()); assertNull("no B val", original.getValue("B")); }