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()); } public function testADVISOR_bytime() { $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); } public function testADVISOR_timespanFormat() { $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 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\'', ), 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, ), ); } } ?>