]> git.proxmox.com Git - extjs.git/blame - extjs/packages/core/test/specs/util/Cache.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / core / test / specs / util / Cache.js
CommitLineData
6527f429
DM
1describe("Ext.util.Cache", function () {\r
2 var evicted = [],\r
3 cache;\r
4\r
5 function dump () {\r
6 var a = [],\r
7 i = 0;\r
8\r
9 cache.each(function (key, value) {\r
10 a.push(key + '=' + value);\r
11 ++i;\r
12 });\r
13\r
14 a.unshift(i);\r
15 return a.join(',');\r
16 }\r
17\r
18 beforeEach(function () {\r
19 evicted.length = 0;\r
20\r
21 cache = new Ext.util.Cache({\r
22 maxSize: 3,\r
23\r
24 evict: function (key, value) {\r
25 evicted.push('evict:' + key + '=' + value);\r
26 },\r
27\r
28 miss: function (key) {\r
29 return '{' + key + '}';\r
30 }\r
31 });\r
32 });\r
33\r
34 it('should add entries until maxSize', function () {\r
35 expect(cache.count).toBe(0);\r
36 expect(dump()).toBe('0');\r
37\r
38 var a = cache.get('a');\r
39\r
40 expect(a).toBe('{a}');\r
41 expect(cache.count).toBe(1);\r
42 expect(dump()).toBe('1,a={a}');\r
43\r
44 var b = cache.get('b');\r
45\r
46 expect(b).toBe('{b}');\r
47 expect(cache.count).toBe(2);\r
48 expect(dump()).toBe('2,b={b},a={a}');\r
49\r
50 var c = cache.get('c');\r
51\r
52 expect(c).toBe('{c}');\r
53 expect(cache.count).toBe(3);\r
54 expect(dump()).toBe('3,c={c},b={b},a={a}');\r
55 });\r
56\r
57 it('should reorder entries', function () {\r
58 var a = cache.get('a');\r
59 var b = cache.get('b');\r
60 var c = cache.get('c');\r
61\r
62 expect(cache.count).toBe(3);\r
63 expect(evicted.length).toBe(0);\r
64\r
65 var b2 = cache.get('b');\r
66\r
67 expect(evicted.length).toBe(0);\r
68 expect(b2).toBe(b);\r
69 expect(cache.count).toBe(3);\r
70 expect(dump()).toBe('3,b={b},c={c},a={a}');\r
71 });\r
72\r
73 it('should remove oldest entry after maxSize', function () {\r
74 var a = cache.get('a');\r
75 var b = cache.get('b');\r
76 var c = cache.get('c');\r
77 // full\r
78\r
79 expect(cache.count).toBe(3);\r
80 expect(evicted.length).toBe(0);\r
81\r
82 var d = cache.get('d');\r
83\r
84 expect(evicted).toEqual([ 'evict:a={a}' ]);\r
85 expect(d).toBe('{d}');\r
86 expect(cache.count).toBe(3);\r
87 expect(dump()).toBe('3,d={d},c={c},b={b}');\r
88 });\r
89\r
90 it('should remove everything on clear', function () {\r
91 var a = cache.get('a');\r
92 var b = cache.get('b');\r
93 var c = cache.get('c');\r
94 // full\r
95\r
96 expect(cache.count).toBe(3);\r
97\r
98 cache.clear();\r
99 expect(cache.count).toBe(0);\r
100 expect(dump()).toBe('0');\r
101 });\r
102\r
103 it('should evict everything on clear', function () {\r
104 var a = cache.get('a');\r
105 var b = cache.get('b');\r
106 var c = cache.get('c');\r
107 // full\r
108\r
109 expect(cache.count).toBe(3);\r
110\r
111 cache.clear();\r
112 expect(evicted.length).toBe(3);\r
113 expect(evicted).toEqual([ 'evict:c={c}', 'evict:b={b}', 'evict:a={a}' ]);\r
114 });\r
115\r
116 it('should evict everything on destroy', function () {\r
117 var a = cache.get('a');\r
118 var b = cache.get('b');\r
119 var c = cache.get('c');\r
120 // full\r
121\r
122 expect(cache.count).toBe(3);\r
123\r
124 cache.destroy();\r
125 expect(cache.count).toBe(0);\r
126 expect(dump()).toBe('0');\r
127\r
128 expect(evicted.length).toBe(3);\r
129 expect(evicted).toEqual([ 'evict:c={c}', 'evict:b={b}', 'evict:a={a}' ]);\r
130 });\r
131});\r