rosavox/lib/alveolata/cache/test.spec.php
2025-05-23 07:33:29 +00:00

205 lines
6.4 KiB
PHP

<?php
// require_once(DIR_ALVEOLATA . '/definitions.php');
require_once(DIR_ALVEOLATA . '/cache/functions.php');
\alveolata\test\add(
[
'name' => 'alveolata',
'sections' => [
[
'name' => 'cache',
'sections' => [
[
'name' => 'none',
'setup' => function (&$environment) {
$cache = \alveolata\cache\make('none', []);
\alveolata\cache\clear($cache);
$environment['cache'] = $cache;
},
'cleanup' => function (&$environment) {
},
'cases' => [
[
'name' => 'retrieve at first access',
'procedure' => function ($assert, $environment) {
// execution
$result = \alveolata\cache\get_with_info(
$environment['cache'],
'foo',
function () {
return 'fehuz';
}
);
// assertions
$assert->equal($result['fetched'], false);
$assert->equal($result['value'], 'fehuz');
}
],
[
'name' => 'retrieve at second access',
'procedure' => function ($assert, $environment) {
// consts
$id = 'bar';
$retrieve = function () {return 'uruz';};
// execution
$result1 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
$result2 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
// assertions
$assert->equal($result1['fetched'], false);
$assert->equal($result1['value'], 'uruz');
$assert->equal($result2['fetched'], false);
$assert->equal($result2['value'], 'uruz');
}
],
]
],
[
'name' => 'memory',
'setup' => function (&$environment) {
$cache = \alveolata\cache\make('memory', []);
\alveolata\cache\clear($cache);
$environment['cache'] = $cache;
},
'cleanup' => function (&$environment) {
},
'cases' => [
[
'name' => 'retrieve at first access',
'procedure' => function ($assert, $environment) {
// execution
$result = \alveolata\cache\get_with_info(
$environment['cache'],
'foo',
function () {
return 'fehuz';
}
);
// assertions
$assert->equal($result['fetched'], false);
$assert->equal($result['value'], 'fehuz');
}
],
[
'name' => 'fetch at second access',
'procedure' => function ($assert, $environment) {
// consts
$id = 'bar';
$retrieve = function () {return 'uruz';};
// execution
$result1 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
$result2 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
// assertions
$assert->equal($result1['fetched'], false);
$assert->equal($result1['value'], 'uruz');
$assert->equal($result2['fetched'], true);
$assert->equal($result2['value'], 'uruz');
}
],
[
'name' => 'retrieve again after clear',
'procedure' => function ($assert, $environment) {
// consts
$id = 'baz';
$retrieve = function () {return 'thurisaz';};
// execution
$result1 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
$result2 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
\alveolata\cache\clear($environment['cache']);
$result3 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
// assertions
$assert->equal($result1['fetched'], false);
$assert->equal($result1['value'], 'thurisaz');
$assert->equal($result2['fetched'], true);
$assert->equal($result2['value'], 'thurisaz');
$assert->equal($result3['fetched'], false);
$assert->equal($result3['value'], 'thurisaz');
}
],
]
],
[
'name' => 'apc',
'active' => false,
'setup' => function (&$environment) {
$cache = \alveolata\cache\make('apc', []);
\alveolata\cache\clear($cache);
$environment['cache'] = $cache;
},
'cleanup' => function (&$environment) {
},
'cases' => [
[
'name' => 'retrieve at first access',
'procedure' => function ($assert, $environment) {
// execution
$result = \alveolata\cache\get_with_info(
$environment['cache'],
'foo',
function () {
return 'fehuz';
}
);
// assertions
$assert->equal($result['fetched'], false);
$assert->equal($result['value'], 'fehuz');
}
],
[
'name' => 'fetch at second access',
'procedure' => function ($assert, $environment) {
// consts
$id = 'bar';
$retrieve = function () {return 'uruz';};
// execution
$result1 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
$result2 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
// assertions
$assert->equal($result1['fetched'], false);
$assert->equal($result1['value'], 'uruz');
$assert->equal($result2['fetched'], true);
$assert->equal($result2['value'], 'uruz');
}
],
[
'name' => 'retrieve again after clear',
'procedure' => function ($assert, $environment) {
// consts
$id = 'baz';
$retrieve = function () {return 'thurisaz';};
// execution
$result1 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
$result2 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
\alveolata\cache\clear($environment['cache']);
$result3 = \alveolata\cache\get_with_info($environment['cache'], $id, $retrieve);
// assertions
$assert->equal($result1['fetched'], false);
$assert->equal($result1['value'], 'thurisaz');
$assert->equal($result2['fetched'], true);
$assert->equal($result2['value'], 'thurisaz');
$assert->equal($result3['fetched'], false);
$assert->equal($result3['value'], 'thurisaz');
}
],
]
],
],
]
]
]
);