@Test public void testComputeFunctionCalledWhenNoMapping() throws Exception { EhcacheOffHeapBackingMap<String, String> segment = createTestSegment(); try { String value = segment.compute("key", (s, s2) -> "value", false); assertThat(value, is("value")); assertThat(segment.get("key"), is(value)); } finally { destroySegment(segment); } }
@Test public void testComputeIfPresentAndPinReplacesAndPins() throws Exception { EhcacheOffHeapBackingMap<String, String> segment = createTestSegment(); final String value = "value"; final String newValue = "newValue"; segment.put("key", value); segment.computeIfPresentAndPin("key", (s, s2) -> { assertThat(s2, is(value)); return newValue; }); assertThat(isPinned("key", segment), is(true)); assertThat(segment.get("key"), is(newValue)); }
@Test public void testComputeIfPresentReturnsSameValue() throws Exception { EhcacheOffHeapBackingMap<String, String> segment = createTestSegment(); try { segment.put("key", "value"); String value = segment.computeIfPresent("key", (s, s2) -> s2); assertThat(segment.get("key"), is(value)); } finally { destroySegment(segment); } }
@Test public void testComputeIfPresentReturnsDifferentValue() throws Exception { EhcacheOffHeapBackingMap<String, String> segment = createTestSegment(); try { segment.put("key", "value"); String value = segment.computeIfPresent("key", (s, s2) -> "newValue"); assertThat(segment.get("key"), is(value)); } finally { destroySegment(segment); } }
@Test public void testComputeIfPinnedReplacesValueUnpinnedWhenUnpinFunctionFalse() throws Exception { EhcacheOffHeapBackingMap<String, String> segment = createTestSegment(); final String value = "value"; final String newValue = "newValue"; try { putPinned("key", value, segment); boolean result = segment.computeIfPinned("key", (s, s2) -> { assertThat(s2, is(value)); return newValue; }, s -> { assertThat(s, is(value)); return false; }); assertThat(segment.get("key"), is(newValue)); assertThat(isPinned("key", segment), is(false)); assertThat(result, is(false)); } finally { destroySegment(segment); } }
@Test public void testComputeIfPinnedReplacesValueUnpinnedWhenUnpinFunctionTrue() throws Exception { EhcacheOffHeapBackingMap<String, String> segment = createTestSegment(); final String value = "value"; final String newValue = "newValue"; try { putPinned("key", value, segment); boolean result = segment.computeIfPinned("key", (s, s2) -> { assertThat(s2, is(value)); return newValue; }, s -> { assertThat(s, is(value)); return true; }); assertThat(segment.get("key"), is(newValue)); assertThat(isPinned("key", segment), is(false)); assertThat(result, is(false)); } finally { destroySegment(segment); } }