2006-10-01 18:14:08 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
// mocks
|
2007-08-01 14:06:59 +00:00
|
|
|
class HTMLPurifier_ContextTest extends HTMLPurifier_Harness
|
2006-10-01 18:14:08 +00:00
|
|
|
{
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2007-11-25 02:24:39 +00:00
|
|
|
protected $context;
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2013-07-16 11:56:14 +00:00
|
|
|
public function setUp()
|
|
|
|
{
|
2006-10-01 18:14:08 +00:00
|
|
|
$this->context = new HTMLPurifier_Context();
|
|
|
|
}
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2013-07-16 11:56:14 +00:00
|
|
|
public function testStandardUsage()
|
|
|
|
{
|
2006-10-01 18:14:08 +00:00
|
|
|
generate_mock_once('HTMLPurifier_IDAccumulator');
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-01 18:39:48 +00:00
|
|
|
$this->assertFalse($this->context->exists('IDAccumulator'));
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2007-06-26 15:40:04 +00:00
|
|
|
$accumulator = new HTMLPurifier_IDAccumulatorMock();
|
2006-10-01 18:14:08 +00:00
|
|
|
$this->context->register('IDAccumulator', $accumulator);
|
2006-10-01 18:39:48 +00:00
|
|
|
$this->assertTrue($this->context->exists('IDAccumulator'));
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-01 18:14:08 +00:00
|
|
|
$accumulator_2 =& $this->context->get('IDAccumulator');
|
|
|
|
$this->assertReference($accumulator, $accumulator_2);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-01 18:14:08 +00:00
|
|
|
$this->context->destroy('IDAccumulator');
|
2006-10-01 18:39:48 +00:00
|
|
|
$this->assertFalse($this->context->exists('IDAccumulator'));
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2007-06-24 04:22:28 +00:00
|
|
|
$this->expectError('Attempted to retrieve non-existent variable IDAccumulator');
|
2006-10-01 18:14:08 +00:00
|
|
|
$accumulator_3 =& $this->context->get('IDAccumulator');
|
|
|
|
$this->assertNull($accumulator_3);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2007-06-24 04:22:28 +00:00
|
|
|
$this->expectError('Attempted to destroy non-existent variable IDAccumulator');
|
2006-10-01 18:14:08 +00:00
|
|
|
$this->context->destroy('IDAccumulator');
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-01 18:14:08 +00:00
|
|
|
}
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2013-07-16 11:56:14 +00:00
|
|
|
public function testReRegister()
|
|
|
|
{
|
2006-10-01 18:14:08 +00:00
|
|
|
$var = true;
|
|
|
|
$this->context->register('OnceOnly', $var);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2007-06-24 04:22:28 +00:00
|
|
|
$this->expectError('Name OnceOnly produces collision, cannot re-register');
|
2006-10-01 18:14:08 +00:00
|
|
|
$this->context->register('OnceOnly', $var);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-01 18:14:08 +00:00
|
|
|
// destroy it, now registration is okay
|
|
|
|
$this->context->destroy('OnceOnly');
|
|
|
|
$this->context->register('OnceOnly', $var);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-01 18:14:08 +00:00
|
|
|
}
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2013-07-16 11:56:14 +00:00
|
|
|
public function test_loadArray()
|
|
|
|
{
|
2006-10-21 18:18:36 +00:00
|
|
|
// references can be *really* wonky!
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
$context_manual = new HTMLPurifier_Context();
|
|
|
|
$context_load = new HTMLPurifier_Context();
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
$var1 = 1;
|
|
|
|
$var2 = 2;
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
$context_manual->register('var1', $var1);
|
|
|
|
$context_manual->register('var2', $var2);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
// you MUST set up the references when constructing the array,
|
|
|
|
// otherwise the registered version will be a copy
|
|
|
|
$array = array(
|
|
|
|
'var1' => &$var1,
|
|
|
|
'var2' => &$var2
|
|
|
|
);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
$context_load->loadArray($array);
|
|
|
|
$this->assertIdentical($context_manual, $context_load);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
$var1 = 10;
|
|
|
|
$var2 = 20;
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
$this->assertIdentical($context_manual, $context_load);
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-10-21 18:18:36 +00:00
|
|
|
}
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2013-10-13 20:05:21 +00:00
|
|
|
public function testNull() {
|
|
|
|
$context = new HTMLPurifier_Context();
|
|
|
|
$var = NULL;
|
|
|
|
$context->register('var', $var);
|
|
|
|
$this->assertNull($context->get('var'));
|
|
|
|
$context->destroy('var');
|
|
|
|
}
|
|
|
|
|
2006-10-01 18:14:08 +00:00
|
|
|
}
|
|
|
|
|
2008-12-06 09:24:59 +00:00
|
|
|
// vim: et sw=4 sts=4
|