assertEquals(Advisor::escapePercent($text), $expected); } public function escapeStrings() { return array( array('80%', '80%%'), array('%s%', '%s%%'), array('80% foo', '80%% foo'), array('%s% foo', '%s%% foo'), ); } public function testParse() { $advisor = new Advisor(); $parseResult = $advisor->parseRulesFile(); $this->assertEquals($parseResult['errors'], array()); } /** * Test for adding rule * * @param array $rule Rule to test * @param array $expected Expected rendered rulle in fired/errors list * @param string $error Expected error string (null if none error expected) * * @return void * * @depends testParse * @dataProvider rulesProvider */ public function testAddRule($rule, $expected, $error) { $advisor = new Advisor(); $parseResult = $advisor->parseRulesFile(); $this->assertEquals($parseResult['errors'], array()); $advisor->variables['value'] = 0; $advisor->addRule('fired', $rule); if (isset($advisor->runResult['errors']) || !is_null($error)) { $this->assertEquals($advisor->runResult['errors'], array($error)); } if (isset($advisor->runResult['fired']) || $expected != array()) { $this->assertEquals($advisor->runResult['fired'], array($expected)); } } public function rulesProvider() { return array( array( array( 'justification' => 'foo', 'name' => 'Basic', 'issue' => 'issue', 'recommendation' => 'Recommend' ), array( 'justification' => 'foo', 'id' => 'Basic', 'name' => 'Basic', 'issue' => 'issue', 'recommendation' => 'Recommend' ), null, ), array( array( 'justification' => 'foo', 'name' => 'Variable', 'issue' => 'issue', 'recommendation' => 'Recommend {status_var}' ), array( 'justification' => 'foo', 'id' => 'Variable', 'name' => 'Variable', 'issue' => 'issue', 'recommendation' => 'Recommend status_var' ), null, ), array( array( 'justification' => '%s foo | value', 'name' => 'Format', 'issue' => 'issue', 'recommendation' => 'Recommend' ), array( 'justification' => '0 foo', 'id' => 'Format', 'name' => 'Format', 'issue' => 'issue', 'recommendation' => 'Recommend' ), null, ), array( array( 'justification' => '%s% foo | value', 'name' => 'Percent', 'issue' => 'issue', 'recommendation' => 'Recommend' ), array( 'justification' => '0% foo', 'id' => 'Percent', 'name' => 'Percent', 'issue' => 'issue', 'recommendation' => 'Recommend' ), null, ), array( array( 'justification' => '"\'foo', 'name' => 'Quotes', 'issue' => 'issue', 'recommendation' => 'Recommend"\'' ), array( 'justification' => '"\'foo', 'id' => 'Quotes', 'name' => 'Quotes', 'issue' => 'issue', 'recommendation' => 'Recommend"\'' ), null, ), array( array( 'justification' => 'foo | fsafdsa', 'name' => 'Failure', 'issue' => 'issue', 'recommendation' => 'Recommend' ), array(), 'Failed formatting string for rule \'Failure\'. PHP threw following error: Use of undefined constant fsafdsa - assumed \'fsafdsa\'', ), ); } } ?>