DefinitionCacheFactoryTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. class HTMLPurifier_DefinitionCacheFactoryTest extends HTMLPurifier_Harness
  3. {
  4. protected $factory;
  5. protected $oldFactory;
  6. public function setUp()
  7. {
  8. parent::setup();
  9. $this->factory = new HTMLPurifier_DefinitionCacheFactory();
  10. $this->oldFactory = HTMLPurifier_DefinitionCacheFactory::instance();
  11. HTMLPurifier_DefinitionCacheFactory::instance($this->factory);
  12. }
  13. public function tearDown()
  14. {
  15. HTMLPurifier_DefinitionCacheFactory::instance($this->oldFactory);
  16. }
  17. public function test_create()
  18. {
  19. $cache = $this->factory->create('Test', $this->config);
  20. $this->assertEqual($cache, new HTMLPurifier_DefinitionCache_Serializer('Test'));
  21. }
  22. public function test_create_withDecorator()
  23. {
  24. $this->factory->addDecorator('Memory');
  25. $cache = $this->factory->create('Test', $this->config);
  26. $cache_real = new HTMLPurifier_DefinitionCache_Decorator_Memory();
  27. $ser = new HTMLPurifier_DefinitionCache_Serializer('Test');
  28. $cache_real = $cache_real->decorate($ser);
  29. $this->assertEqual($cache, $cache_real);
  30. }
  31. public function test_create_withDecoratorObject()
  32. {
  33. $this->factory->addDecorator(new HTMLPurifier_DefinitionCache_Decorator_Memory());
  34. $cache = $this->factory->create('Test', $this->config);
  35. $cache_real = new HTMLPurifier_DefinitionCache_Decorator_Memory();
  36. $ser = new HTMLPurifier_DefinitionCache_Serializer('Test');
  37. $cache_real = $cache_real->decorate($ser);
  38. $this->assertEqual($cache, $cache_real);
  39. }
  40. public function test_create_recycling()
  41. {
  42. $cache = $this->factory->create('Test', $this->config);
  43. $cache2 = $this->factory->create('Test', $this->config);
  44. $this->assertReference($cache, $cache2);
  45. }
  46. public function test_create_invalid()
  47. {
  48. $this->config->set('Cache.DefinitionImpl', 'Invalid');
  49. $this->expectError('Unrecognized DefinitionCache Invalid, using Serializer instead');
  50. $cache = $this->factory->create('Test', $this->config);
  51. $this->assertIsA($cache, 'HTMLPurifier_DefinitionCache_Serializer');
  52. }
  53. public function test_null()
  54. {
  55. $this->config->set('Cache.DefinitionImpl', null);
  56. $cache = $this->factory->create('Test', $this->config);
  57. $this->assertEqual($cache, new HTMLPurifier_DefinitionCache_Null('Test'));
  58. }
  59. public function test_register()
  60. {
  61. generate_mock_once('HTMLPurifier_DefinitionCache');
  62. $this->config->set('Cache.DefinitionImpl', 'TestCache');
  63. $this->factory->register('TestCache', $class = 'HTMLPurifier_DefinitionCacheMock');
  64. $cache = $this->factory->create('Test', $this->config);
  65. $this->assertIsA($cache, $class);
  66. }
  67. }
  68. // vim: et sw=4 sts=4