/** * Asserts multiple filter output expectations for multiple input strings. * * @param FilterInterface $filter * A input filter object. * @param $tests * An associative array, whereas each key is an arbitrary input string and * each value is again an associative array whose keys are filter output * strings and whose values are Booleans indicating whether the output is * expected or not. * * For example: * @code * $tests = array( * 'Input string' => array( * '<p>Input string</p>' => TRUE, * 'Input string<br' => FALSE, * ), * ); * @endcode */ function assertFilteredString($filter, $tests) { foreach ($tests as $source => $tasks) { $result = $filter->process($source, $filter)->getProcessedText(); foreach ($tasks as $value => $is_expected) { // Not using assertIdentical, since combination with strpos() is hard to grok. if ($is_expected) { $success = $this->assertTrue(strpos($result, $value) !== FALSE, format_string('@source: @value found. Filtered result: @result.', array('@source' => var_export($source, TRUE), '@value' => var_export($value, TRUE), '@result' => var_export($result, TRUE)))); } else { $success = $this->assertTrue(strpos($result, $value) === FALSE, format_string('@source: @value not found. Filtered result: @result.', array('@source' => var_export($source, TRUE), '@value' => var_export($value, TRUE), '@result' => var_export($result, TRUE)))); } if (!$success) { $this->verbose('Source:<pre>' . Html::escape(var_export($source, TRUE)) . '</pre>' . '<hr />' . 'Result:<pre>' . Html::escape(var_export($result, TRUE)) . '</pre>' . '<hr />' . ($is_expected ? 'Expected:' : 'Not expected:') . '<pre>' . Html::escape(var_export($value, TRUE)) . '</pre>'); } } } }