package org.robobinding.internal.java_beans; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import org.junit.Before; import org.junit.Test; /** * @since 1.0 * @version * @author Cheng Wei * */ public class WeakCacheTest { private WeakCache<String, Object> cache; @Before public void setUp() { cache = new WeakCache<String, Object>(); } @Test public void shouldBeCached() { String key = "key"; Object value = new Object(); cache.put(key, value); assertThat(cache.containsKey(key), is(true)); assertThat(cache.get(key), is(value)); } @Test public void whenStrongReferenceIsRemoved_thenValueIsNoLongInCache() { String key = "key"; Object value = new Object(); cache.put(key, value); value = null; forceGCOnKey(key); assertThat(cache.containsKey(key), is(false)); } private void forceGCOnKey(String key) { @SuppressWarnings("unused") String[] generateHugeData = null; while (cache.containsKey(key)) { generateHugeData = new String[999999]; } } }