public void testClear() { MapMakerInternalMap<Object, Object, ?, ?> map = makeMap(createMapMaker().concurrencyLevel(1).initialCapacity(1)); Segment<Object, Object, ?, ?> segment = map.segments[0]; AtomicReferenceArray<? extends InternalEntry<Object, Object, ?>> table = segment.table; assertEquals(1, table.length()); Object key = new Object(); Object value = new Object(); int hash = map.hash(key); InternalEntry<Object, Object, ?> entry = segment.newEntryForTesting(key, hash, null); segment.setValueForTesting(entry, value); segment.setTableEntryForTesting(0, entry); segment.readCount.incrementAndGet(); segment.count = 1; assertSame(entry, table.get(0)); segment.clear(); assertNull(table.get(0)); assertEquals(0, segment.readCount.get()); assertEquals(0, segment.count); }
public void testRemoveEntry() { MapMakerInternalMap<Object, Object, ?, ?> map = makeMap(createMapMaker().concurrencyLevel(1).initialCapacity(1)); Segment<Object, Object, ?, ?> segment = map.segments[0]; AtomicReferenceArray<? extends InternalEntry<Object, Object, ?>> table = segment.table; assertEquals(1, table.length()); Object key = new Object(); Object value = new Object(); int hash = map.hash(key); InternalEntry<Object, Object, ?> entry = segment.newEntryForTesting(key, hash, null); segment.setValueForTesting(entry, value); // remove absent assertFalse(segment.removeTableEntryForTesting(entry)); segment.setTableEntryForTesting(0, entry); segment.count = 1; assertTrue(segment.removeTableEntryForTesting(entry)); assertEquals(0, segment.count); assertNull(table.get(0)); }
segment.setValueForTesting(entry, value); segment.setTableEntryForTesting(0, entry); segment.count = originalCount; int liveCount = originalCount / 3;
segment.setTableEntryForTesting(index, entry); assertNull(segment.get(key, hash)); assertFalse(segment.containsKey(key, hash)); segment.newWeakValueReferenceForTesting(nullEntry, nullValue); segment.setWeakValueReferenceForTesting(nullEntry, nullValueRef); segment.setTableEntryForTesting(index, nullEntry); segment.newWeakValueReferenceForTesting(dummyEntry, dummyValue); segment.setWeakValueReferenceForTesting(dummyEntry, dummyValueRef); segment.setTableEntryForTesting(index, dummyEntry); assertSame(value, segment.get(key, hash)); assertTrue(segment.containsKey(key, hash)); dummyValueRef = segment.newWeakValueReferenceForTesting(dummyEntry, dummyValue); segment.setWeakValueReferenceForTesting(dummyEntry, dummyValueRef); segment.setTableEntryForTesting(index, dummyEntry);
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count); segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
segment.setValueForTesting(entry, value); segment.setTableEntryForTesting(0, entry); segment.count = originalCount; int liveCount = originalCount / 3;
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count); segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
public void testClearValue() { MapMakerInternalMap<Object, Object, ?, ?> map = makeMap(createMapMaker().concurrencyLevel(1).initialCapacity(1).weakValues()); Segment<Object, Object, ?, ?> segment = map.segments[0]; AtomicReferenceArray<? extends InternalEntry<Object, Object, ?>> table = segment.table; assertEquals(1, table.length()); Object key = new Object(); Object value = new Object(); int hash = map.hash(key); InternalEntry<Object, Object, ?> entry = segment.newEntryForTesting(key, hash, null); segment.setValueForTesting(entry, value); WeakValueReference<Object, Object, ?> valueRef = segment.getWeakValueReferenceForTesting(entry); // clear absent assertFalse(segment.clearValueForTesting(key, hash, valueRef)); segment.setTableEntryForTesting(0, entry); // don't increment count; this is used during computation assertTrue(segment.clearValueForTesting(key, hash, valueRef)); // no notification sent with clearValue assertEquals(0, segment.count); assertNull(table.get(0)); // clear wrong value reference segment.setTableEntryForTesting(0, entry); WeakValueReference<Object, Object, ?> otherValueRef = segment.newWeakValueReferenceForTesting(entry, value); segment.setWeakValueReferenceForTesting(entry, otherValueRef); assertFalse(segment.clearValueForTesting(key, hash, valueRef)); segment.setWeakValueReferenceForTesting(entry, valueRef); assertTrue(segment.clearValueForTesting(key, hash, valueRef)); }
segment.setValueForTesting(entry, value); segment.setTableEntryForTesting(0, entry); segment.count = originalCount; ImmutableMap<Object, Object> originalMap = ImmutableMap.copyOf(map);
public void testClear() { MapMakerInternalMap<Object, Object, ?, ?> map = makeMap(createMapMaker().concurrencyLevel(1).initialCapacity(1)); Segment<Object, Object, ?, ?> segment = map.segments[0]; AtomicReferenceArray<? extends InternalEntry<Object, Object, ?>> table = segment.table; assertEquals(1, table.length()); Object key = new Object(); Object value = new Object(); int hash = map.hash(key); InternalEntry<Object, Object, ?> entry = segment.newEntryForTesting(key, hash, null); segment.setValueForTesting(entry, value); segment.setTableEntryForTesting(0, entry); segment.readCount.incrementAndGet(); segment.count = 1; assertSame(entry, table.get(0)); segment.clear(); assertNull(table.get(0)); assertEquals(0, segment.readCount.get()); assertEquals(0, segment.count); }
public void testRemoveEntry() { MapMakerInternalMap<Object, Object, ?, ?> map = makeMap(createMapMaker().concurrencyLevel(1).initialCapacity(1)); Segment<Object, Object, ?, ?> segment = map.segments[0]; AtomicReferenceArray<? extends InternalEntry<Object, Object, ?>> table = segment.table; assertEquals(1, table.length()); Object key = new Object(); Object value = new Object(); int hash = map.hash(key); InternalEntry<Object, Object, ?> entry = segment.newEntryForTesting(key, hash, null); segment.setValueForTesting(entry, value); // remove absent assertFalse(segment.removeTableEntryForTesting(entry)); segment.setTableEntryForTesting(0, entry); segment.count = 1; assertTrue(segment.removeTableEntryForTesting(entry)); assertEquals(0, segment.count); assertNull(table.get(0)); }
segment.setTableEntryForTesting(index, entry); assertNull(segment.get(key, hash)); assertFalse(segment.containsKey(key, hash)); segment.newWeakValueReferenceForTesting(nullEntry, nullValue); segment.setWeakValueReferenceForTesting(nullEntry, nullValueRef); segment.setTableEntryForTesting(index, nullEntry); segment.newWeakValueReferenceForTesting(dummyEntry, dummyValue); segment.setWeakValueReferenceForTesting(dummyEntry, dummyValueRef); segment.setTableEntryForTesting(index, dummyEntry); assertSame(value, segment.get(key, hash)); assertTrue(segment.containsKey(key, hash)); dummyValueRef = segment.newWeakValueReferenceForTesting(dummyEntry, dummyValue); segment.setWeakValueReferenceForTesting(dummyEntry, dummyValueRef); segment.setTableEntryForTesting(index, dummyEntry);
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count); segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count); segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
segment.setTableEntryForTesting(index, entry); segment.count++; assertEquals(1, segment.count);
segment.setValueForTesting(entry, value); segment.setTableEntryForTesting(0, entry); segment.count = originalCount; ImmutableMap<Object, Object> originalMap = ImmutableMap.copyOf(map);
public void testClearValue() { MapMakerInternalMap<Object, Object, ?, ?> map = makeMap(createMapMaker().concurrencyLevel(1).initialCapacity(1).weakValues()); Segment<Object, Object, ?, ?> segment = map.segments[0]; AtomicReferenceArray<? extends InternalEntry<Object, Object, ?>> table = segment.table; assertEquals(1, table.length()); Object key = new Object(); Object value = new Object(); int hash = map.hash(key); InternalEntry<Object, Object, ?> entry = segment.newEntryForTesting(key, hash, null); segment.setValueForTesting(entry, value); WeakValueReference<Object, Object, ?> valueRef = segment.getWeakValueReferenceForTesting(entry); // clear absent assertFalse(segment.clearValueForTesting(key, hash, valueRef)); segment.setTableEntryForTesting(0, entry); // don't increment count; this is used during computation assertTrue(segment.clearValueForTesting(key, hash, valueRef)); // no notification sent with clearValue assertEquals(0, segment.count); assertNull(table.get(0)); // clear wrong value reference segment.setTableEntryForTesting(0, entry); WeakValueReference<Object, Object, ?> otherValueRef = segment.newWeakValueReferenceForTesting(entry, value); segment.setWeakValueReferenceForTesting(entry, otherValueRef); assertFalse(segment.clearValueForTesting(key, hash, valueRef)); segment.setWeakValueReferenceForTesting(entry, valueRef); assertTrue(segment.clearValueForTesting(key, hash, valueRef)); }