public function GenericCacheBackendUnitTestBase::testGetMultiple in Drupal 8
Same name in this branch
- 8 core/tests/Drupal/KernelTests/Core/Cache/GenericCacheBackendUnitTestBase.php \Drupal\KernelTests\Core\Cache\GenericCacheBackendUnitTestBase::testGetMultiple()
- 8 core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php \Drupal\system\Tests\Cache\GenericCacheBackendUnitTestBase::testGetMultiple()
Tests Drupal\Core\Cache\CacheBackendInterface::getMultiple().
File
- core/
modules/ system/ src/ Tests/ Cache/ GenericCacheBackendUnitTestBase.php, line 290
Class
- GenericCacheBackendUnitTestBase
- Tests any cache backend.
Namespace
Drupal\system\Tests\CacheCode
public function testGetMultiple() {
$backend = $this
->getCacheBackend();
// Set numerous testing keys.
$long_cid = str_repeat('a', 300);
$backend
->set('test1', 1);
$backend
->set('test2', 3);
$backend
->set('test3', 5);
$backend
->set('test4', 7);
$backend
->set('test5', 11);
$backend
->set('test6', 13);
$backend
->set('test7', 17);
$backend
->set($long_cid, 300);
// Mismatch order for harder testing.
$reference = [
'test3',
'test7',
// Cid does not exist.
'test21',
'test6',
// Cid does not exist until added before second getMultiple().
'test19',
'test2',
];
$cids = $reference;
$ret = $backend
->getMultiple($cids);
// Test return - ensure it contains existing cache ids.
$this
->assert(isset($ret['test2']), "Existing cache id test2 is set.");
$this
->assert(isset($ret['test3']), "Existing cache id test3 is set.");
$this
->assert(isset($ret['test6']), "Existing cache id test6 is set.");
$this
->assert(isset($ret['test7']), "Existing cache id test7 is set.");
// Test return - ensure that objects has expected properties.
$this
->assertTrue($ret['test2']->valid, 'Item is marked as valid.');
$this
->assertTrue($ret['test2']->created >= REQUEST_TIME && $ret['test2']->created <= round(microtime(TRUE), 3), 'Created time is correct.');
$this
->assertEqual($ret['test2']->expire, Cache::PERMANENT, 'Expire time is correct.');
// Test return - ensure it does not contain nonexistent cache ids.
$this
->assertFalse(isset($ret['test19']), "Nonexistent cache id test19 is not set.");
$this
->assertFalse(isset($ret['test21']), "Nonexistent cache id test21 is not set.");
// Test values.
$this
->assertIdentical($ret['test2']->data, 3, "Existing cache id test2 has the correct value.");
$this
->assertIdentical($ret['test3']->data, 5, "Existing cache id test3 has the correct value.");
$this
->assertIdentical($ret['test6']->data, 13, "Existing cache id test6 has the correct value.");
$this
->assertIdentical($ret['test7']->data, 17, "Existing cache id test7 has the correct value.");
// Test $cids array - ensure it contains cache id's that do not exist.
$this
->assert(in_array('test19', $cids), "Nonexistent cache id test19 is in cids array.");
$this
->assert(in_array('test21', $cids), "Nonexistent cache id test21 is in cids array.");
// Test $cids array - ensure it does not contain cache id's that exist.
$this
->assertFalse(in_array('test2', $cids), "Existing cache id test2 is not in cids array.");
$this
->assertFalse(in_array('test3', $cids), "Existing cache id test3 is not in cids array.");
$this
->assertFalse(in_array('test6', $cids), "Existing cache id test6 is not in cids array.");
$this
->assertFalse(in_array('test7', $cids), "Existing cache id test7 is not in cids array.");
// Test a second time after deleting and setting new keys which ensures that
// if the backend uses statics it does not cause unexpected results.
$backend
->delete('test3');
$backend
->delete('test6');
$backend
->set('test19', 57);
$cids = $reference;
$ret = $backend
->getMultiple($cids);
// Test return - ensure it contains existing cache ids.
$this
->assert(isset($ret['test2']), "Existing cache id test2 is set");
$this
->assert(isset($ret['test7']), "Existing cache id test7 is set");
$this
->assert(isset($ret['test19']), "Added cache id test19 is set");
// Test return - ensure it does not contain nonexistent cache ids.
$this
->assertFalse(isset($ret['test3']), "Deleted cache id test3 is not set");
$this
->assertFalse(isset($ret['test6']), "Deleted cache id test6 is not set");
$this
->assertFalse(isset($ret['test21']), "Nonexistent cache id test21 is not set");
// Test values.
$this
->assertIdentical($ret['test2']->data, 3, "Existing cache id test2 has the correct value.");
$this
->assertIdentical($ret['test7']->data, 17, "Existing cache id test7 has the correct value.");
$this
->assertIdentical($ret['test19']->data, 57, "Added cache id test19 has the correct value.");
// Test $cids array - ensure it contains cache id's that do not exist.
$this
->assert(in_array('test3', $cids), "Deleted cache id test3 is in cids array.");
$this
->assert(in_array('test6', $cids), "Deleted cache id test6 is in cids array.");
$this
->assert(in_array('test21', $cids), "Nonexistent cache id test21 is in cids array.");
// Test $cids array - ensure it does not contain cache id's that exist.
$this
->assertFalse(in_array('test2', $cids), "Existing cache id test2 is not in cids array.");
$this
->assertFalse(in_array('test7', $cids), "Existing cache id test7 is not in cids array.");
$this
->assertFalse(in_array('test19', $cids), "Added cache id test19 is not in cids array.");
// Test with a long $cid and non-numeric array key.
$cids = [
'key:key' => $long_cid,
];
$return = $backend
->getMultiple($cids);
$this
->assertEqual(300, $return[$long_cid]->data);
$this
->assertTrue(empty($cids));
}