5 require_once(CONST_LibDir.'/Phrase.php');
9 public function containsAny($sTerm)
15 // phpcs:ignore PSR1.Classes.ClassDeclaration.MultipleClasses
16 class TokensPartialSet
18 public function __construct($aTokens)
20 $this->aTokens = array_flip($aTokens);
23 public function containsAny($sTerm)
25 return isset($this->aTokens[$sTerm]);
29 // phpcs:ignore PSR1.Classes.ClassDeclaration.MultipleClasses
30 class PhraseTest extends \PHPUnit\Framework\TestCase
34 private function serializeSets($aSets)
37 foreach ($aSets as $aSet) {
38 $aParts[] = '(' . join('|', $aSet) . ')';
40 return join(',', $aParts);
44 public function testEmptyPhrase()
46 $oPhrase = new Phrase('', '');
47 $oPhrase->computeWordSets(new TokensFullSet());
51 $oPhrase->getWordSets()
56 public function testSingleWordPhrase()
58 $oPhrase = new Phrase('a', '');
59 $oPhrase->computeWordSets(new TokensFullSet());
63 $this->serializeSets($oPhrase->getWordSets())
68 public function testMultiWordPhrase()
70 $oPhrase = new Phrase('a b', '');
71 $oPhrase->computeWordSets(new TokensFullSet());
74 $this->serializeSets($oPhrase->getWordSets())
77 $oPhrase = new Phrase('a b c', '');
78 $oPhrase->computeWordSets(new TokensFullSet());
79 /* disabled because incompatible with newer PHPUnit
81 '(a b c),(a|b c),(a b|c),(a|b|c)',
82 $this->serializeSets($oPhrase->getWordSets())
85 $oPhrase = new Phrase('a b c d', '');
86 $oPhrase->computeWordSets(new TokensFullSet());
88 '(a b c d),(a b c|d),(a b|c d),(a|b c d),(a b|c|d),(a|b c|d),(a|b|c d),(a|b|c|d)',
89 $this->serializeSets($oPhrase->getWordSets())
94 public function testInverseWordSets()
96 $oPhrase = new Phrase('a b c', '');
97 $oPhrase->computeWordSets(new TokensFullSet());
98 $oPhrase->invertWordSets();
100 /* disabled because incompatible with newer PHPUnit
102 '(a b c),(b c|a),(c|a b),(c|b|a)',
103 $this->serializeSets($oPhrase->getWordSets())
108 public function testMaxWordSets()
110 $oPhrase = new Phrase(join(' ', array_fill(0, 4, 'a')), '');
111 $oPhrase->computeWordSets(new TokensFullSet());
112 $this->assertEquals(8, count($oPhrase->getWordSets()));
113 $oPhrase->invertWordSets();
114 $this->assertEquals(8, count($oPhrase->getWordSets()));
116 $oPhrase = new Phrase(join(' ', array_fill(0, 18, 'a')), '');
117 $oPhrase->computeWordSets(new TokensFullSet());
118 $this->assertEquals(100, count($oPhrase->getWordSets()));
119 $oPhrase->invertWordSets();
120 $this->assertEquals(100, count($oPhrase->getWordSets()));
124 public function testPartialTokensShortTerm()
126 $oPhrase = new Phrase('a b c d', '');
127 $oPhrase->computeWordSets(new TokensPartialSet(array('a', 'b', 'd', 'b c', 'b c d')));
129 '(a|b c d),(a|b c|d)',
130 $this->serializeSets($oPhrase->getWordSets())
135 public function testPartialTokensLongTerm()
137 $oPhrase = new Phrase(join(' ', array_fill(0, 18, 'a')), '');
138 $oPhrase->computeWordSets(new TokensPartialSet(array('a', 'a a a a a')));
139 $this->assertEquals(80, count($oPhrase->getWordSets()));