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