strategies = & $strategies; } } // doesn't use Strategy harness class HTMLPurifier_Strategy_CompositeTest extends HTMLPurifier_Harness { public function test() { generate_mock_once ( 'HTMLPurifier_Strategy' ); generate_mock_once ( 'HTMLPurifier_Config' ); generate_mock_once ( 'HTMLPurifier_Context' ); // setup a bunch of mock strategies to inject into our composite test $mock_1 = new HTMLPurifier_StrategyMock (); $mock_2 = new HTMLPurifier_StrategyMock (); $mock_3 = new HTMLPurifier_StrategyMock (); // setup the object $strategies = array ( &$mock_1, &$mock_2, &$mock_3 ); $composite = new HTMLPurifier_Strategy_Composite_Test ( $strategies ); // setup expectations $input_1 = 'This is raw data'; $input_2 = 'Processed by 1'; $input_3 = 'Processed by 1 and 2'; $input_4 = 'Processed by 1, 2 and 3'; // expected output $config = new HTMLPurifier_ConfigMock (); $context = new HTMLPurifier_ContextMock (); $params_1 = array ( $input_1, $config, $context ); $params_2 = array ( $input_2, $config, $context ); $params_3 = array ( $input_3, $config, $context ); $mock_1->expectOnce ( 'execute', $params_1 ); $mock_1->setReturnValue ( 'execute', $input_2, $params_1 ); $mock_2->expectOnce ( 'execute', $params_2 ); $mock_2->setReturnValue ( 'execute', $input_3, $params_2 ); $mock_3->expectOnce ( 'execute', $params_3 ); $mock_3->setReturnValue ( 'execute', $input_4, $params_3 ); // perform test $output = $composite->execute ( $input_1, $config, $context ); $this->assertIdentical ( $input_4, $output ); } } // vim: et sw=4 sts=4