3 class HTMLPurifier_AttrDef_CSS_Composite_Testable
extends
4 HTMLPurifier_AttrDef_CSS_Composite
7 // we need to pass by ref to get the mocks in
8 function HTMLPurifier_AttrDef_CSS_Composite_Testable(&$defs) {
14 class HTMLPurifier_AttrDef_CSS_CompositeTest
extends HTMLPurifier_AttrDefHarness
17 protected $def1, $def2;
21 generate_mock_once('HTMLPurifier_AttrDef');
23 $config = HTMLPurifier_Config
::createDefault();
24 $context = new HTMLPurifier_Context();
26 // first test: value properly validates on first definition
27 // so second def is never called
29 $def1 = new HTMLPurifier_AttrDefMock();
30 $def2 = new HTMLPurifier_AttrDefMock();
31 $defs = array(&$def1, &$def2);
32 $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs);
35 $def1_params = array($input, $config, $context);
36 $def1->expectOnce('validate', $def1_params);
37 $def1->setReturnValue('validate', $output, $def1_params);
38 $def2->expectNever('validate');
40 $result = $def->validate($input, $config, $context);
41 $this->assertIdentical($output, $result);
43 // second test, first def fails, second def works
45 $def1 = new HTMLPurifier_AttrDefMock();
46 $def2 = new HTMLPurifier_AttrDefMock();
47 $defs = array(&$def1, &$def2);
48 $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs);
51 $def_params = array($input, $config, $context);
52 $def1->expectOnce('validate', $def_params);
53 $def1->setReturnValue('validate', false, $def_params);
54 $def2->expectOnce('validate', $def_params);
55 $def2->setReturnValue('validate', $output, $def_params);
57 $result = $def->validate($input, $config, $context);
58 $this->assertIdentical($output, $result);
60 // third test, all fail, so composite faiils
62 $def1 = new HTMLPurifier_AttrDefMock();
63 $def2 = new HTMLPurifier_AttrDefMock();
64 $defs = array(&$def1, &$def2);
65 $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs);
68 $def_params = array($input, $config, $context);
69 $def1->expectOnce('validate', $def_params);
70 $def1->setReturnValue('validate', false, $def_params);
71 $def2->expectOnce('validate', $def_params);
72 $def2->setReturnValue('validate', false, $def_params);
74 $result = $def->validate($input, $config, $context);
75 $this->assertIdentical($output, $result);