01: /*
02: * Copyright (c) 2002-2003 by OpenSymphony
03: * All rights reserved.
04: */
05: package com.opensymphony.oscache.base.algorithm;
06:
07: import junit.framework.Test;
08: import junit.framework.TestSuite;
09:
10: /**
11: * Test class for the LRUCache class. It only tests that the algorithm reacts as
12: * expected when entries are removed. All the other tests related to the LRU
13: * algorithm are in the TestNonQueueCache class, since those tests are shared
14: * with the TestUnlimitedCache class.
15: *
16: * $Id: TestLRUCache.java 254 2005-06-17 05:07:38Z dres $
17: * @version $Revision: 254 $
18: * @author <a href="mailto:abergevin@pyxis-tech.com">Alain Bergevin</a>
19: */
20: public final class TestLRUCache extends TestQueueCache {
21: /**
22: * LRU Cache object
23: */
24: private static LRUCache cache = null;
25:
26: /**
27: * Constructor
28: * <p>
29: * @param str The test name (required by JUnit)
30: */
31: public TestLRUCache(String str) {
32: super (str);
33: }
34:
35: /**
36: * This methods returns the name of this test class to JUnit
37: * <p>
38: * @return The test for this class
39: */
40: public static Test suite() {
41: return new TestSuite(TestLRUCache.class);
42: }
43:
44: /**
45: * Abstract method used by the TestAbstractCache class
46: * <p>
47: * @return A cache instance
48: */
49: public AbstractConcurrentReadCache getCache() {
50: return cache;
51: }
52:
53: /**
54: * This method is invoked before each testXXXX methods of the
55: * class. It set ups the variables required for each tests.
56: */
57: public void setUp() {
58: // Create a cache instance on first invocation
59: if (cache == null) {
60: cache = new LRUCache();
61: assertNotNull(cache);
62: }
63: }
64:
65: /**
66: * Test the cache algorithm
67: */
68: public void testRemoveItem() {
69: // Add 3 elements
70: cache.itemPut(KEY);
71: cache.itemPut(KEY + 1);
72: cache.itemPut(KEY + 2);
73:
74: // Get the last element
75: cache.itemRetrieved(KEY);
76:
77: // The least recently used item is key + 1
78: assertTrue((KEY + 1).equals(cache.removeItem()));
79: }
80: }
|