assertEquals(Advisor::escapePercent($text), $expected); } /** * return of escape Strings * * @return array */ public function escapeStrings() { return array( array('80%', '80%%'), array('%s%', '%s%%'), array('80% foo', '80%% foo'), array('%s% foo', '%s%% foo'), ); } /** * test for parseRulesFile * * @return void */ public function testParse() { $advisor = new Advisor(); $parseResult = $advisor->parseRulesFile(); $this->assertEquals($parseResult['errors'], array()); } /** * test for ADVISOR_bytime * * @return void */ public function testAdvisorBytime() { $result = ADVISOR_bytime(10, 2); $this->assertEquals("10 per second", $result); $result = ADVISOR_bytime(0.02, 2); $this->assertEquals("1.2 per minute", $result); $result = ADVISOR_bytime(0.003, 2); $this->assertEquals("10.8 per hour", $result); } /** * test for ADVISOR_timespanFormat * * @return void */ public function testAdvisorTimespanFormat() { $result = ADVISOR_timespanFormat(1200); $this->assertEquals("0 days, 0 hours, 20 minutes and 0 seconds", $result); $result = ADVISOR_timespanFormat(100); $this->assertEquals("0 days, 0 hours, 1 minutes and 40 seconds", $result); } /** * Test for adding rule * * @param array $rule Rule to test * @param array $expected Expected rendered rule 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->setVariable('value', 0); $advisor->addRule('fired', $rule); $runResult = $advisor->getRunResult(); if (isset($runResult['errors']) || !is_null($error)) { $this->assertEquals(array($error), $runResult['errors']); } if (isset($runResult['fired']) || $expected != array()) { $this->assertEquals(array($expected), $runResult['fired']); } } /** * rules Provider * * @return array */ 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' => '%s% %d foo | value, value', 'name' => 'Double', 'issue' => 'issue', 'recommendation' => 'Recommend' ), array( 'justification' => '0% 0 foo', 'id' => 'Double', 'name' => 'Double', '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\'
Executed code: $value = array(fsafdsa);', ), array( array( 'justification' => 'Version string (%s) | value', 'name' => 'Distribution', 'issue' => 'official MySQL binaries.', 'recommendation' => 'See web', ), array( 'justification' => 'Version string (0)', 'name' => 'Distribution', 'issue' => 'official MySQL binaries.', 'recommendation' => 'See web', 'id' => 'Distribution' ), null, ), ); } }