Release 2.0.1, merged in 1181 to HEAD.
[htmlpurifier.git] / tests / HTMLPurifier / ContextTest.php
blob8e038159868d6efdb09d53cb8a76168643851695
1 <?php
3 require_once 'HTMLPurifier/Context.php';
5 // mocks
6 require_once 'HTMLPurifier/IDAccumulator.php';
8 class HTMLPurifier_ContextTest extends UnitTestCase
11 var $context;
13 function setUp() {
14 $this->context = new HTMLPurifier_Context();
17 function testStandardUsage() {
19 generate_mock_once('HTMLPurifier_IDAccumulator');
21 $this->assertFalse($this->context->exists('IDAccumulator'));
23 $accumulator = new HTMLPurifier_IDAccumulatorMock();
24 $this->context->register('IDAccumulator', $accumulator);
25 $this->assertTrue($this->context->exists('IDAccumulator'));
27 $accumulator_2 =& $this->context->get('IDAccumulator');
28 $this->assertReference($accumulator, $accumulator_2);
30 $this->context->destroy('IDAccumulator');
31 $this->assertFalse($this->context->exists('IDAccumulator'));
33 $this->expectError('Attempted to retrieve non-existent variable IDAccumulator');
34 $accumulator_3 =& $this->context->get('IDAccumulator');
35 $this->assertNull($accumulator_3);
37 $this->expectError('Attempted to destroy non-existent variable IDAccumulator');
38 $this->context->destroy('IDAccumulator');
42 function testReRegister() {
44 $var = true;
45 $this->context->register('OnceOnly', $var);
47 $this->expectError('Name OnceOnly produces collision, cannot re-register');
48 $this->context->register('OnceOnly', $var);
50 // destroy it, now registration is okay
51 $this->context->destroy('OnceOnly');
52 $this->context->register('OnceOnly', $var);
56 function test_loadArray() {
58 // references can be *really* wonky!
60 $context_manual = new HTMLPurifier_Context();
61 $context_load = new HTMLPurifier_Context();
63 $var1 = 1;
64 $var2 = 2;
66 $context_manual->register('var1', $var1);
67 $context_manual->register('var2', $var2);
69 // you MUST set up the references when constructing the array,
70 // otherwise the registered version will be a copy
71 $array = array(
72 'var1' => &$var1,
73 'var2' => &$var2
76 $context_load->loadArray($array);
77 $this->assertIdentical($context_manual, $context_load);
79 $var1 = 10;
80 $var2 = 20;
82 $this->assertIdentical($context_manual, $context_load);