'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'); } ], ] ], ], ] ] ] );