44
44
protected function get_class_name() {
45
45
return 'cachestore_session';
49
* Test the maxsize option.
51
public function test_maxsize() {
52
$config = cache_config_phpunittest::instance();
53
$config->phpunit_add_definition('phpunit/one', array(
54
'mode' => cache_store::MODE_SESSION,
55
'component' => 'phpunit',
60
$config->phpunit_add_definition('phpunit/two', array(
61
'mode' => cache_store::MODE_SESSION,
62
'component' => 'phpunit',
67
$cacheone = cache::make('phpunit', 'one');
69
$this->assertTrue($cacheone->set('key1', 'value1'));
70
$this->assertTrue($cacheone->set('key2', 'value2'));
71
$this->assertTrue($cacheone->set('key3', 'value3'));
73
$this->assertTrue($cacheone->has('key1'));
74
$this->assertTrue($cacheone->has('key2'));
75
$this->assertTrue($cacheone->has('key3'));
77
$this->assertTrue($cacheone->set('key4', 'value4'));
78
$this->assertTrue($cacheone->set('key5', 'value5'));
80
$this->assertFalse($cacheone->has('key1'));
81
$this->assertFalse($cacheone->has('key2'));
82
$this->assertTrue($cacheone->has('key3'));
83
$this->assertTrue($cacheone->has('key4'));
84
$this->assertTrue($cacheone->has('key5'));
86
$this->assertFalse($cacheone->get('key1'));
87
$this->assertFalse($cacheone->get('key2'));
88
$this->assertEquals('value3', $cacheone->get('key3'));
89
$this->assertEquals('value4', $cacheone->get('key4'));
90
$this->assertEquals('value5', $cacheone->get('key5'));
92
// Test adding one more.
93
$this->assertTrue($cacheone->set('key6', 'value6'));
94
$this->assertFalse($cacheone->get('key3'));
96
// Test reducing and then adding to make sure we don't lost one.
97
$this->assertTrue($cacheone->delete('key6'));
98
$this->assertTrue($cacheone->set('key7', 'value7'));
99
$this->assertEquals('value4', $cacheone->get('key4'));
101
// Set the same key three times to make sure it doesn't count overrides.
102
for ($i = 0; $i < 3; $i++) {
103
$this->assertTrue($cacheone->set('key8', 'value8'));
105
$this->assertEquals('value7', $cacheone->get('key7'), 'Overrides are incorrectly incrementing size');
108
$this->assertEquals(3, $cacheone->set_many(array(
113
$this->assertEquals(array(
121
), $cacheone->get_many(array(
122
'key4', 'key5', 'key6', 'key7', 'keyA', 'keyB', 'keyC'
125
$cachetwo = cache::make('phpunit', 'two');
128
$this->assertEquals(3, $cacheone->set_many(array(
134
$this->assertEquals(3, $cachetwo->set_many(array(
140
$this->assertEquals(array(
144
), $cacheone->get_many(array(
145
'keyA', 'keyB', 'keyC'
148
$this->assertEquals(array(
152
), $cachetwo->get_many(array(
153
'key1', 'key2', 'key3'
156
// Test that that cache deletes element that was least recently accessed.
157
$this->assertEquals('valueA', $cacheone->get('keyA'));
158
$cacheone->set('keyD', 'valueD');
159
$this->assertEquals('valueA', $cacheone->get('keyA'));
160
$this->assertFalse($cacheone->get('keyB'));
161
$this->assertEquals(array('keyD' => 'valueD', 'keyC' => 'valueC'), $cacheone->get_many(array('keyD', 'keyC')));
162
$cacheone->set('keyE', 'valueE');
163
$this->assertFalse($cacheone->get('keyB'));
164
$this->assertFalse($cacheone->get('keyA'));
165
$this->assertEquals(array('keyA' => false, 'keyE' => 'valueE', 'keyD' => 'valueD', 'keyC' => 'valueC'),
166
$cacheone->get_many(array('keyA', 'keyE', 'keyD', 'keyC')));
167
// Overwrite keyE (moves it to the end of array), and set keyF.
168
$cacheone->set_many(array('keyE' => 'valueE', 'keyF' => 'valueF'));
169
$this->assertEquals(array('keyC' => 'valueC', 'keyE' => 'valueE', 'keyD' => false, 'keyF' => 'valueF'),
170
$cacheone->get_many(array('keyC', 'keyE', 'keyD', 'keyF')));
173
public function test_ttl() {
174
$config = cache_config_phpunittest::instance();
175
$config->phpunit_add_definition('phpunit/three', array(
176
'mode' => cache_store::MODE_SESSION,
177
'component' => 'phpunit',
183
$cachethree = cache::make('phpunit', 'three');
185
// Make sure that when cache with ttl is full the elements that were added first are deleted first regardless of access time.
186
$cachethree->set('key1', 'value1');
187
$cachethree->set('key2', 'value2');
188
$cachethree->set('key3', 'value3');
189
$cachethree->set('key4', 'value4');
190
$this->assertFalse($cachethree->get('key1'));
191
$this->assertEquals('value4', $cachethree->get('key4'));
192
$cachethree->set('key5', 'value5');
193
$this->assertFalse($cachethree->get('key2'));
194
$this->assertEquals('value4', $cachethree->get('key4'));
195
$cachethree->set_many(array('key6' => 'value6', 'key7' => 'value7'));
196
$this->assertEquals(array('key3' => false, 'key4' => false, 'key5' => 'value5', 'key6' => 'value6', 'key7' => 'value7'),
197
$cachethree->get_many(array('key3', 'key4', 'key5', 'key6', 'key7')));
b'\\ No newline at end of file'