factory = new HTMLPurifier_DefinitionCacheFactory ();
$this->oldFactory = HTMLPurifier_DefinitionCacheFactory::instance ();
HTMLPurifier_DefinitionCacheFactory::instance ( $this->factory );
}
public function tearDown() {
HTMLPurifier_DefinitionCacheFactory::instance ( $this->oldFactory );
}
public function test_create() {
$cache = $this->factory->create ( 'Test', $this->config );
$this->assertEqual ( $cache, new HTMLPurifier_DefinitionCache_Serializer ( 'Test' ) );
}
public function test_create_withDecorator() {
$this->factory->addDecorator ( 'Memory' );
$cache = $this->factory->create ( 'Test', $this->config );
$cache_real = new HTMLPurifier_DefinitionCache_Decorator_Memory ();
$cache_real = $cache_real->decorate ( new HTMLPurifier_DefinitionCache_Serializer ( 'Test' ) );
$this->assertEqual ( $cache, $cache_real );
}
public function test_create_withDecoratorObject() {
$this->factory->addDecorator ( new HTMLPurifier_DefinitionCache_Decorator_Memory () );
$cache = $this->factory->create ( 'Test', $this->config );
$cache_real = new HTMLPurifier_DefinitionCache_Decorator_Memory ();
$cache_real = $cache_real->decorate ( new HTMLPurifier_DefinitionCache_Serializer ( 'Test' ) );
$this->assertEqual ( $cache, $cache_real );
}
public function test_create_recycling() {
$cache = $this->factory->create ( 'Test', $this->config );
$cache2 = $this->factory->create ( 'Test', $this->config );
$this->assertReference ( $cache, $cache2 );
}
public function test_create_invalid() {
$this->config->set ( 'Cache.DefinitionImpl', 'Invalid' );
$this->expectError ( 'Unrecognized DefinitionCache Invalid, using Serializer instead' );
$cache = $this->factory->create ( 'Test', $this->config );
$this->assertIsA ( $cache, 'HTMLPurifier_DefinitionCache_Serializer' );
}
public function test_null() {
$this->config->set ( 'Cache.DefinitionImpl', null );
$cache = $this->factory->create ( 'Test', $this->config );
$this->assertEqual ( $cache, new HTMLPurifier_DefinitionCache_Null ( 'Test' ) );
}
public function test_register() {
generate_mock_once ( 'HTMLPurifier_DefinitionCache' );
$this->config->set ( 'Cache.DefinitionImpl', 'TestCache' );
$this->factory->register ( 'TestCache', $class = 'HTMLPurifier_DefinitionCacheMock' );
$cache = $this->factory->create ( 'Test', $this->config );
$this->assertIsA ( $cache, $class );
}
}
// vim: et sw=4 sts=4