diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-05-25 21:00:01 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-05-25 21:00:01 -0400 |
commit | 74a84a28e34f3c1c38631fb80cc74ab589a44298 (patch) | |
tree | 463733e4aef46fa1012b2bd3fdba6f56b6f68afd /tests/units/Core | |
parent | 774734a820cd26616e8069385d8250af1ae539b1 (diff) |
Support strtotime strings for date search
Diffstat (limited to 'tests/units/Core')
-rw-r--r-- | tests/units/Core/Filter/LexerTest.php | 89 |
1 files changed, 85 insertions, 4 deletions
diff --git a/tests/units/Core/Filter/LexerTest.php b/tests/units/Core/Filter/LexerTest.php index 3f3e368e..d405e9df 100644 --- a/tests/units/Core/Filter/LexerTest.php +++ b/tests/units/Core/Filter/LexerTest.php @@ -77,22 +77,103 @@ class LexerTest extends Base public function testTokenizeWithStringDate() { $lexer = new Lexer(); - $lexer->addToken("/^(date:)/", 'T_DATE'); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); $expected = array( - 'T_DATE' => array('today'), + 'T_MY_DATE' => array('today'), ); $this->assertSame($expected, $lexer->tokenize('date:today something else')); } + public function testTokenizeWithStringDateWithSpaces() + { + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('last month'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:"last month" something else')); + } + + public function testTokenizeWithStringDateWithSpacesAndOperator() + { + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('<=last month'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:<="last month" something else')); + + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('>=next month'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:>="next month" something else')); + + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('<+2 days'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:<"+2 days" something else')); + + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('<-1 hour'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:<"-1 hour" something else')); + } + + public function testTokenizeWithStringDateAndOperator() + { + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('<=today'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:<=today something else')); + + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('>now'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:>now something else')); + + $lexer = new Lexer(); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); + + $expected = array( + 'T_MY_DATE' => array('>=now'), + ); + + $this->assertSame($expected, $lexer->tokenize('date:>=now something else')); + } + public function testTokenizeWithIsoDate() { $lexer = new Lexer(); - $lexer->addToken("/^(date:)/", 'T_DATE'); + $lexer->addToken("/^(date:)/", 'T_MY_DATE'); $expected = array( - 'T_DATE' => array('<=2016-01-01'), + 'T_MY_DATE' => array('<=2016-01-01'), ); $this->assertSame($expected, $lexer->tokenize('date:<=2016-01-01 something else')); |