コード例 #1
0
ファイル: LRUCacheTest.java プロジェクト: jiangjunwei/jodd
  @Test
  public void testEndless() {
    Cache<String, String> cache = new LRUCache<String, String>(0);
    assertFalse(cache.isFull());
    cache.put("1", "1");
    assertEquals(1, cache.size());
    assertFalse(cache.isFull());

    cache.put("2", "2");
    assertEquals(2, cache.size());
    assertFalse(cache.isFull());
  }
コード例 #2
0
ファイル: LRUCacheTest.java プロジェクト: jiangjunwei/jodd
  @Test
  public void testPrune() {
    Cache<String, String> cache = new LRUCache<String, String>(3);
    cache.put("1", "1");
    cache.put("2", "2");
    cache.put("3", "3");

    assertEquals(0, cache.prune());
    assertEquals(3, cache.size());

    cache.put("4", "4");
    assertEquals(0, cache.prune());
    assertEquals(3, cache.size());
  }
コード例 #3
0
ファイル: LFUCacheTest.java プロジェクト: lxmhope/jodd
  @Test
  public void testBoosting() {
    Cache<String, String> cache = new LFUCache<>(3);
    cache.put("1", "1");
    cache.put("2", "2");
    cache.put("3", "3");

    cache.get("3");
    cache.get("3");
    cache.get("3");
    cache.get("3");
    cache.get("2");
    cache.get("2");
    cache.get("2");
    cache.get("1");
    cache.get("1");

    assertEquals(3, cache.size());

    cache.put("4", "4");

    assertNull(cache.get("1")); // 1 is less frequent and it is out of cache
    assertNotNull(cache.get("4")); // 4 is new and it is inside

    cache.get("3");
    cache.get("2");

    // bad sequence
    cache.put("5", "5");
    cache.get("5"); // situation: 2(1), 3(2), 5(1)   value(accessCount)
    cache.put("4", "4");
    cache.get("4"); // situation: 3(1), 4(1)
    cache.put("5", "5");
    cache.get("5"); // situation: 3(1), 4(1), 5(1)
    cache.put("4", "4");
    cache.get("4"); // situation: 4(1)

    assertEquals(3, cache.size());

    assertNull(cache.get("1"));
    assertNull(cache.get("2"));
    assertNotNull(cache.get("3"));
    assertNotNull(cache.get("4"));
    assertNotNull(cache.get("5"));
  }
コード例 #4
0
ファイル: LFUCacheTest.java プロジェクト: lxmhope/jodd
  @Test
  public void testCache2() {
    Cache<String, String> cache = new LFUCache<>(3);
    cache.put("1", "1");
    cache.put("2", "2");
    assertFalse(cache.isFull());
    cache.put("3", "3");
    assertTrue(cache.isFull());

    assertNotNull(cache.get("3"));
    assertNotNull(cache.get("3"));
    assertNotNull(cache.get("3")); // boost usage of a 3
    assertNotNull(cache.get("1"));
    assertNotNull(cache.get("2"));
    cache.put("4", "4"); // since this is LFU cache, 1 AND 2 will be removed, but not 3
    assertNotNull(cache.get("3"));
    assertNotNull(cache.get("4"));
    assertEquals(2, cache.size());
  }