/** * @param string $input * @param array $expectedResult * @param array $abbreviations */ private function runCalculateTest($input, array $expectedResult, array $abbreviations) { $lexer = new Lexer(); $tokens = $lexer->run($input); $rules = IniConfiguration::loadFile(__DIR__ . '/../../rules/rules.ini')->getRules(); $calc = new ProbabilityCalculator($rules); $calc->setAbbreviations(new Abbreviations($abbreviations)); $probabilities = $calc->calculate($tokens); $actual = []; foreach ($probabilities as $probability) { $token = $probability->getToken(); if ($token instanceof WordToken || $token instanceof CapitalizedWordToken || $token instanceof WhitespaceToken || $token instanceof EOFToken) { continue; } $actual[] = $token->getName() . ' ' . $probability->getProbability(); } $this->assertEquals($expectedResult, $actual); }
/** * @return Rules */ private function loadDefaultRules() { return IniConfiguration::loadFile(__DIR__ . '/../rules/rules.ini')->getRules(); }
public function testValidFile() { $config = IniConfiguration::loadFile(__DIR__ . '/../../assets/rules.ini'); $this->assertEquals(new Rules([new Rule('T_EOF', [new RulePattern(100, [new RulePatternToken('T_EOF', true)])]), new Rule('T_PERIOD', [new RulePattern(75, [new RulePatternToken('T_PERIOD'), new RulePatternToken('T_PERIOD'), new RulePatternToken('T_PERIOD', true), new RulePatternToken('T_WHITESPACE'), new RulePatternToken('T_CAPITALIZED_WORD')]), new RulePattern(0, [new RulePatternToken('T_ABBREVIATION'), new RulePatternToken('T_PERIOD', true)])])]), $config->getRules()); }