- Removed tally(), swallowErrors(), assertNoErrors()
[htmlpurifier.git] / tests / HTMLPurifier / AttrDef / CSS / CompositeTest.php
blob384d39c3b3244ddb9bdb9cbb7433aac438b3d019
1 <?php
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) {
9 $this->defs =& $defs;
14 class HTMLPurifier_AttrDef_CSS_CompositeTest extends HTMLPurifier_AttrDefHarness
17 protected $def1, $def2;
19 function test() {
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);
33 $input = 'FOOBAR';
34 $output = 'foobar';
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);
49 $input = 'BOOMA';
50 $output = 'booma';
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);
66 $input = 'BOOMA';
67 $output = false;
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);