Blame view

vendor/ezyang/htmlpurifier/tests/HTMLPurifier/ContextTest.php 2.54 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  <?php
  
  // mocks
  class HTMLPurifier_ContextTest extends HTMLPurifier_Harness
  {
  
      protected $context;
  
      public function setUp()
      {
          $this->context = new HTMLPurifier_Context();
      }
  
      public function testStandardUsage()
      {
          generate_mock_once('HTMLPurifier_IDAccumulator');
  
          $this->assertFalse($this->context->exists('IDAccumulator'));
  
          $accumulator = new HTMLPurifier_IDAccumulatorMock();
          $this->context->register('IDAccumulator', $accumulator);
          $this->assertTrue($this->context->exists('IDAccumulator'));
  
          $accumulator_2 =& $this->context->get('IDAccumulator');
          $this->assertReference($accumulator, $accumulator_2);
  
          $this->context->destroy('IDAccumulator');
          $this->assertFalse($this->context->exists('IDAccumulator'));
  
          $this->expectError('Attempted to retrieve non-existent variable IDAccumulator');
          $accumulator_3 =& $this->context->get('IDAccumulator');
          $this->assertNull($accumulator_3);
  
          $this->expectError('Attempted to destroy non-existent variable IDAccumulator');
          $this->context->destroy('IDAccumulator');
  
      }
  
      public function testReRegister()
      {
          $var = true;
          $this->context->register('OnceOnly', $var);
  
          $this->expectError('Name OnceOnly produces collision, cannot re-register');
          $this->context->register('OnceOnly', $var);
  
          // destroy it, now registration is okay
          $this->context->destroy('OnceOnly');
          $this->context->register('OnceOnly', $var);
  
      }
  
      public function test_loadArray()
      {
          // references can be *really* wonky!
  
          $context_manual = new HTMLPurifier_Context();
          $context_load   = new HTMLPurifier_Context();
  
          $var1 = 1;
          $var2 = 2;
  
          $context_manual->register('var1', $var1);
          $context_manual->register('var2', $var2);
  
          // you MUST set up the references when constructing the array,
          // otherwise the registered version will be a copy
          $array = array(
              'var1' => &$var1,
              'var2' => &$var2
          );
  
          $context_load->loadArray($array);
          $this->assertIdentical($context_manual, $context_load);
  
          $var1 = 10;
          $var2 = 20;
  
          $this->assertIdentical($context_manual, $context_load);
  
      }
  
      public function testNull() {
          $context = new HTMLPurifier_Context();
          $var = NULL;
          $context->register('var', $var);
          $this->assertNull($context->get('var'));
          $context->destroy('var');
      }
  
  }
  
  // vim: et sw=4 sts=4