X-Git-Url: https://git.cweiske.de/grauphel.git/blobdiff_plain/16bb2f544c636425ed9e6bff90654b8fa3c0f2e3..724cb02e3e7a98e58387e80c9360b420a09b3607:/tests/Lib/Search/QueryParserTest.php diff --git a/tests/Lib/Search/QueryParserTest.php b/tests/Lib/Search/QueryParserTest.php new file mode 100644 index 0000000..122138f --- /dev/null +++ b/tests/Lib/Search/QueryParserTest.php @@ -0,0 +1,92 @@ +assertEquals( + array('AND' => array('foo')), + $qp->parse('foo') + ); + + $this->assertEquals( + array('AND' => array('foo', 'bar')), + $qp->parse('foo bar') + ); + } + + public function testParseQuotes() + { + $qp = new QueryParser(); + $this->assertEquals( + array('AND' => array('foo bar')), + $qp->parse('"foo bar"') + ); + + $this->assertEquals( + array('AND' => array('foo bar', 'baz')), + $qp->parse('"foo bar" baz') + ); + + $this->assertEquals( + array('AND' => array('foo \'bar\' baz', 'bat')), + $qp->parse('"foo \'bar\' baz" bat') + ); + + $this->assertEquals( + array('AND' => array('foo bar baz')), + $qp->parse('"foo bar baz"') + ); + + $this->assertEquals( + array('AND' => array('one two three', 'four', 'five six', 'seven')), + $qp->parse('"one two three" four "five six" seven') + ); + } + + public function testParseWhitespace() + { + $qp = new QueryParser(); + $this->assertEquals( + array('AND' => array('foo')), + $qp->parse(' foo ') + ); + + $this->assertEquals( + array('AND' => array('foo', 'bar')), + $qp->parse(' foo bar ') + ); + + $this->assertEquals( + array('AND' => array('foo ', ' bar')), + $qp->parse(' "foo " " bar" ') + ); + } + + public function testParseNot() + { + $qp = new QueryParser(); + $this->assertEquals( + array('AND' => array('foo')), + $qp->parse('+foo') + ); + + $this->assertEquals( + array('AND' => array('foo'), 'NOT' => array('bar')), + $qp->parse('+foo -bar') + ); + + $this->assertEquals( + array( + 'AND' => array('foo', 'bat'), + 'NOT' => array('bar baz') + ), + $qp->parse('+foo -"bar baz" +bat') + ); + } +} +?>