1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-06 23:55:26 +02:00
php-phpbb/tests/class_loader/class_loader_test.php
Igor Wiedler 9329b16ab1 [task/acm-refactor] Refactor the ACM classes to have a common interface.
They are now refered to as cache drivers rather than ACM classes. The
additional utility functions from the original cache class have been
moved to the cache_service. The class loader is now instantiated without
a cache instance and passed one as soon as it is constructed to allow
autoloading the cache classes.

PHPBB3-9983
2011-01-09 23:49:35 +01:00

93 lines
2.3 KiB
PHP

<?php
/**
*
* @package testing
* @version $Id$
* @copyright (c) 2008 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
require_once __DIR__ . '/cache_mock.php';
class phpbb_class_loader_test extends PHPUnit_Framework_TestCase
{
public function setUp()
{
global $class_loader;
$class_loader->unregister();
}
public function tearDown()
{
global $class_loader;
$class_loader->register();
}
public function test_resolve_path()
{
$prefix = __DIR__ . '/';
$class_loader = new phpbb_class_loader($prefix);
$prefix .= 'includes/';
$this->assertEquals(
'',
$class_loader->resolve_path('phpbb_dir'),
'Class with same name as a directory is unloadable'
);
$this->assertEquals(
$prefix . 'class_name.php',
$class_loader->resolve_path('phpbb_class_name'),
'Top level class'
);
$this->assertEquals(
$prefix . 'dir/class_name.php',
$class_loader->resolve_path('phpbb_dir_class_name'),
'Class in a directory'
);
$this->assertEquals(
$prefix . 'dir/subdir/class_name.php',
$class_loader->resolve_path('phpbb_dir_subdir_class_name'),
'Class in a sub-directory'
);
$this->assertEquals(
$prefix . 'dir2/dir2.php',
$class_loader->resolve_path('phpbb_dir2'),
'Class with name of dir within dir (short class name)'
);
}
public function test_resolve_cached()
{
$cacheMap = array('class_loader' => array('phpbb_a_cached_name' => 'a/cached_name'));
$cache = $this->getMock('phpbb_cache_driver_interface',
array('get', 'put', 'load', 'unload', 'save', 'tidy', 'purge', 'destroy', '_exists',
'sql_load', 'sql_save', 'sql_exists', 'sql_fetchrow', 'sql_fetchfield', 'sql_rowseek', 'sql_freeresult'));
$cache->expects($this->any())
->method('get')
->will($this->returnCallback(function($var_name) use ($cacheMap) {
return $cacheMap[$var_name];
}));
$prefix = __DIR__ . '/';
$class_loader = new phpbb_class_loader($prefix, '.php', $cache);
$prefix .= 'includes/';
$this->assertEquals(
$prefix . 'dir/class_name.php',
$class_loader->resolve_path('phpbb_dir_class_name'),
'Class in a directory'
);
$this->assertEquals(
$prefix . 'a/cached_name.php',
$class_loader->resolve_path('phpbb_a_cached_name'),
'Class in a directory'
);
}
}