/**
  * @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);
 }
예제 #2
0
 /**
  * @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());
 }