* @license BSD */ namespace Domframework\Tests; use Domframework\Fts; /** * Test the FTS */ class FtsTest extends \PHPUnit_Framework_TestCase { public function testTokenizerSearch0() { // Empty $fts = new Fts(); $fts->search(""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => [], "minuses" => []]); } public function testTokenizerSearch1() { // Too small $fts = new Fts(); $fts->search("X"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => [], "minuses" => []]); } public function testTokenizerSearch2() { // One word $fts = new Fts(); $fts->search("XYZ"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ"], "minuses" => [""]]); } public function testTokenizerSearch3() { // Two word $fts = new Fts(); $fts->search("XYZ 123"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ", "123"], "minuses" => ["", ""]]); } public function testTokenizerSearch4() { // Three word $fts = new Fts(); $fts->search("XYZ 123 ABC"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ", "123", "ABC"], "minuses" => ["", "", ""]]); } public function testTokenizerSearch5() { // Three word $fts = new Fts(); $fts->search("XYZ 123 ABC KLM"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ", "123", "ABC", "KLM"], "minuses" => ["", "", "", ""]]); } public function testTokenizerSearch6() { // Three word $fts = new Fts(); $fts->search("Louis-XYZ 123 -AéBCé KLM"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["Louis-XYZ", "123", "AéBCé", "KLM"], "minuses" => ["", "", "-", ""]]); } public function testTokenizerSentence0() { // Empty sentence $fts = new Fts(); $fts->search("\"\""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => [], "minuses" => []]); } public function testTokenizerSentence1() { // One sentence only $fts = new Fts(); $fts->search("\"XYZ 123\""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ 123"], "minuses" => [""]]); } public function testTokenizerSentence2() { // Two sentence $fts = new Fts(); $fts->search("\"XYZ 123\" \"ABC KLM\""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ 123", "ABC KLM"], "minuses" => ["", ""]]); } public function testTokenizerSentence3() { // Three sentence $fts = new Fts(); $fts->search("\"XYZ 123\" -\"ABC KLM\" \"RPO YUI\""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ 123", "ABC KLM", "RPO YUI"], "minuses" => ["", "-", ""]]); } public function testTokenizerMixed1() { // One word and one sentence, starting by word $fts = new Fts(); $fts->search("XYZ \"ABC KLM\""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["XYZ", "ABC KLM"], "minuses" => ["", ""]]); } public function testTokenizerMixed2() { // One word and one sentence, starting by sentence $fts = new Fts(); $fts->search("\"ABC KLM\" XYZ"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["ABC KLM", "XYZ"], "minuses" => ["", ""]]); } public function testTokenizerMixed3() { // One word and two sentences, starting by sentence $fts = new Fts(); $fts->search("\"ABC KLM\" XYZ \"RPO YUI\""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["ABC KLM", "XYZ", "RPO YUI"], "minuses" => ["", "", ""]]); } public function testTokenizerMixed4() { // Two words and two sentences, starting by sentence $fts = new Fts(); $fts->search("\"ABC KLM\" XYZ \"RPO YUI\" 123"); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["ABC KLM", "XYZ", "RPO YUI", "123"], "minuses" => ["", "", "", ""]]); } public function testTokenizerMixed5() { // Two words and two sentences, starting by a word $fts = new Fts(); $fts->search("123 \"ABC KLM\" XYZ \"RPO YUI\""); $res = $fts->getTokensMin(); $this->assertSame($res, ["tokens" => ["123", "ABC KLM", "XYZ", "RPO YUI"], "minuses" => ["", "", "", ""]]); } }