@Test void doubleInsert() { RangeCache<Integer, RefString> cache = new RangeCache<>(); RefString s0 = new RefString("zero"); assertEquals(s0.refCnt(), 1); assertEquals(cache.put(0, s0), true); assertEquals(s0.refCnt(), 1); cache.put(1, new RefString("one")); assertEquals(cache.getSize(), 2); assertEquals(cache.getNumberOfEntries(), 2); RefString s = cache.get(1); assertEquals(s.s, "one"); assertEquals(s.refCnt(), 2); RefString s1 = new RefString("uno"); assertEquals(s1.refCnt(), 1); assertEquals(cache.put(1, s1), false); assertEquals(s1.refCnt(), 1); s1.release(); // Should not have been overridden in cache assertEquals(cache.getSize(), 2); assertEquals(cache.getNumberOfEntries(), 2); assertEquals(cache.get(1).s, "one"); }
RangeCache<Integer, RefString> cache = new RangeCache<>(); cache.put(0, new RefString("0")); cache.put(1, new RefString("1")); assertEquals(s.refCnt(), 2); s.release(); assertEquals(s1.refCnt(), 3); s1.release(); s2.release(); cache.put(2, new RefString("2")); cache.put(8, new RefString("8")); cache.put(11, new RefString("11"));
@Test void getRange() { RangeCache<Integer, RefString> cache = new RangeCache<>(); cache.put(0, new RefString("0")); cache.put(1, new RefString("1")); cache.put(3, new RefString("3")); cache.put(5, new RefString("5")); assertEquals(cache.getRange(1, 8), Lists.newArrayList(new RefString("1"), new RefString("3"), new RefString("5"))); cache.put(8, new RefString("8")); assertEquals(cache.getRange(1, 8), Lists.newArrayList(new RefString("1"), new RefString("3"), new RefString("5"), new RefString("8"))); cache.clear(); assertEquals(cache.getSize(), 0); assertEquals(cache.getNumberOfEntries(), 0); }
RefString(String s) { super(); this.s = s; setRefCnt(1); }