From b849004471ce4864dbce615f8a9007b04bde812d Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Sun, 3 May 2009 23:34:51 -0400 Subject: [PATCH] additional test suite work --- .../test/Horde/Date/Parser/HandlerTest.php | 147 ++++++++++++--------- .../test/Horde/Date/Parser/Locale/BaseTest.php | 80 ++++++++--- .../test/Horde/Date/Parser/ParserTest.php | 114 +++++++++------- 3 files changed, 210 insertions(+), 131 deletions(-) diff --git a/framework/Date_Parser/test/Horde/Date/Parser/HandlerTest.php b/framework/Date_Parser/test/Horde/Date/Parser/HandlerTest.php index 4e36dfe25..24291a7ca 100644 --- a/framework/Date_Parser/test/Horde/Date/Parser/HandlerTest.php +++ b/framework/Date_Parser/test/Horde/Date/Parser/HandlerTest.php @@ -1,110 +1,133 @@ -require 'chronic' -require 'test/unit' - -class TestHandler < Test::Unit::TestCase - - def setup - # Wed Aug 16 14:00:00 UTC 2006 - @now = Time.local(2006, 8, 16, 14, 0, 0, 0) - end - - def test_handler_class_1 - handler = Chronic::Handler.new([:repeater], :handler) - +now = new Horde_Date('2006-08-16 14:00:00'); + } + + public function testHandlerClass1() + { + /* + $handler = Chronic::Handler.new([:repeater], :handler) + tokens = [Chronic::Token.new('friday')] tokens[0].tag(Chronic::RepeaterDayName.new(:friday)) - + assert handler.match(tokens, Chronic.definitions) - + tokens << Chronic::Token.new('afternoon') tokens[1].tag(Chronic::RepeaterDayPortion.new(:afternoon)) - + assert !handler.match(tokens, Chronic.definitions) - end - - def test_handler_class_2 + */ + } + + public function testHandlerClass2() + { + /* handler = Chronic::Handler.new([:repeater, :repeater?], :handler) - + tokens = [Chronic::Token.new('friday')] tokens[0].tag(Chronic::RepeaterDayName.new(:friday)) - + assert handler.match(tokens, Chronic.definitions) - + tokens << Chronic::Token.new('afternoon') tokens[1].tag(Chronic::RepeaterDayPortion.new(:afternoon)) - + assert handler.match(tokens, Chronic.definitions) - + tokens << Chronic::Token.new('afternoon') tokens[2].tag(Chronic::RepeaterDayPortion.new(:afternoon)) - + assert !handler.match(tokens, Chronic.definitions) - end - - def test_handler_class_3 + */ + } + + public function testHandlerClass3() + { + /* handler = Chronic::Handler.new([:repeater, 'time?'], :handler) - + tokens = [Chronic::Token.new('friday')] tokens[0].tag(Chronic::RepeaterDayName.new(:friday)) - + assert handler.match(tokens, Chronic.definitions) - + tokens << Chronic::Token.new('afternoon') tokens[1].tag(Chronic::RepeaterDayPortion.new(:afternoon)) - + assert !handler.match(tokens, Chronic.definitions) - end - - def test_handler_class_4 + */ + } + + public function testHandlerClass4() + { + /* handler = Chronic::Handler.new([:repeater_month_name, :scalar_day, 'time?'], :handler) - + tokens = [Chronic::Token.new('may')] tokens[0].tag(Chronic::RepeaterMonthName.new(:may)) - + assert !handler.match(tokens, Chronic.definitions) - + tokens << Chronic::Token.new('27') tokens[1].tag(Chronic::ScalarDay.new(27)) - + assert handler.match(tokens, Chronic.definitions) - end - - def test_handler_class_5 + */ + } + + public function testHandlerClass5() + { + /* handler = Chronic::Handler.new([:repeater, 'time?'], :handler) - + tokens = [Chronic::Token.new('friday')] tokens[0].tag(Chronic::RepeaterDayName.new(:friday)) - + assert handler.match(tokens, Chronic.definitions) - + tokens << Chronic::Token.new('5:00') tokens[1].tag(Chronic::RepeaterTime.new('5:00')) - + assert handler.match(tokens, Chronic.definitions) - + tokens << Chronic::Token.new('pm') tokens[2].tag(Chronic::RepeaterDayPortion.new(:pm)) - + assert handler.match(tokens, Chronic.definitions) - end - - def test_handler_class_6 + */ + } + + public function testHandlerClass6() + { + /* handler = Chronic::Handler.new([:scalar, :repeater, :pointer], :handler) - + tokens = [Chronic::Token.new('3'), Chronic::Token.new('years'), Chronic::Token.new('past')] - + tokens[0].tag(Chronic::Scalar.new(3)) tokens[1].tag(Chronic::RepeaterYear.new(:year)) tokens[2].tag(Chronic::Pointer.new(:past)) - + assert handler.match(tokens, Chronic.definitions) - end - - def test_constantize - handler = Chronic::Handler.new([], :handler) - assert_equal Chronic::RepeaterTime, handler.constantize(:repeater_time) - end - -end \ No newline at end of file + */ + } + +} diff --git a/framework/Date_Parser/test/Horde/Date/Parser/Locale/BaseTest.php b/framework/Date_Parser/test/Horde/Date/Parser/Locale/BaseTest.php index aae8af91d..057658f1d 100644 --- a/framework/Date_Parser/test/Horde/Date/Parser/Locale/BaseTest.php +++ b/framework/Date_Parser/test/Horde/Date/Parser/Locale/BaseTest.php @@ -10,31 +10,72 @@ * @package Horde_Date * @subpackage UnitTests */ -class Horde_Date_Parser_Locale_BaseTest extends PHPUnit_Framework_TestCase +class Horde_Date_Parser_Locale_BaseTest extends Horde_Test_Case { - public function testToday() + public function setUp() { - var_dump((string)Horde_Date_Parser::parse('today at 11')); - var_dump((string)Horde_Date_Parser::parse('tomorrow')); - var_dump((string)Horde_Date_Parser::parse('may 27')); - var_dump((string)Horde_Date_Parser::parse('thursday')); - var_dump((string)Horde_Date_Parser::parse('next month')); - var_dump((string)Horde_Date_Parser::parse('last week tuesday')); - var_dump((string)Horde_Date_Parser::parse('3 years ago')); - var_dump((string)Horde_Date_Parser::parse('6 in the morning')); - var_dump((string)Horde_Date_Parser::parse('afternoon yesterday')); - var_dump((string)Horde_Date_Parser::parse('3rd wednesday in november')); - var_dump((string)Horde_Date_Parser::parse('4th day last week')); + // Wed Aug 16 14:00:00 UTC 2006 + $this->now = new Horde_Date('2006-08-16 14:00:00'); + $this->parser = Horde_Date_Parser::factory(array('now' => $this->now)); } -class TestParsing < Test::Unit::TestCase - # Wed Aug 16 14:00:00 UTC 2006 - TIME_2006_08_16_14_00_00 = Time.local(2006, 8, 16, 14, 0, 0, 0) + public function testTodayAt11() + { + $this->assertEquals('2006-08-16 11:00:00', (string)$this->parser->parse('today at 11')); + } - def setup - @time_2006_08_16_14_00_00 = TIME_2006_08_16_14_00_00 - end + public function testTomorrow() + { + $this->assertEquals('2006-08-17 12:00:00', (string)$this->parser->parse('tomorrow')); + } + + public function testMay27() + { + $this->assertEquals('2007-05-27 12:00:00', (string)$this->parser->parse('may 27')); + } + + public function testThursday() + { + $this->assertEquals('2006-08-17 12:00:00', (string)$this->parser->parse('thursday')); + } + + public function testNextMonth() + { + $this->assertEquals('2006-09-15 12:00:00', (string)$this->parser->parse('next month')); + } + + public function testLastWeekTuesday() + { + $this->assertEquals('2006-08-08 12:00:00', (string)$this->parser->parse('last week tuesday')); + } + + public function test3YearsAgo() + { + $this->assertEquals('2003-08-16 14:00:00', (string)$this->parser->parse('3 years ago')); + $this->assertEquals('2003-08-16 14:00:00', (string)$this->parser->parse('three years ago')); + } + + public function test6InTheMorning() + { + $this->assertEquals('2006-08-16 06:00:00', (string)$this->parser->parse('6 in the morning')); + } + + public function testAfternoonYesterday() + { + $this->assertEquals('2006-08-15 17:30:00', (string)$this->parser->parse('afternoon yesterday')); + } + + public function test3rdWednesdayInNovember() + { + $this->assertEquals('2006-11-15 12:00:00', (string)$this->parser->parse('3rd wednesday in november')); + } + + public function test4thDayLastWeek() + { + $this->assertEquals('2006-08-09 12:00:00', (string)$this->parser->parse('4th day last week')); + } + /* def test_parse_guess_dates # rm_sd @@ -636,5 +677,6 @@ class TestParsing < Test::Unit::TestCase def parse_now(string, options={}) Chronic.parse(string, {:now => TIME_2006_08_16_14_00_00 }.merge(options)) end + */ } diff --git a/framework/Date_Parser/test/Horde/Date/Parser/ParserTest.php b/framework/Date_Parser/test/Horde/Date/Parser/ParserTest.php index c195d394d..ad30392e2 100644 --- a/framework/Date_Parser/test/Horde/Date/Parser/ParserTest.php +++ b/framework/Date_Parser/test/Horde/Date/Parser/ParserTest.php @@ -1,50 +1,64 @@ -require 'chronic' -require 'test/unit' - -class TestChronic < Test::Unit::TestCase - - def setup - # Wed Aug 16 14:00:00 UTC 2006 - @now = Time.local(2006, 8, 16, 14, 0, 0, 0) - end - - def test_post_normalize_am_pm_aliases - # affect wanted patterns - - tokens = [Chronic::Token.new("5:00"), Chronic::Token.new("morning")] - tokens[0].tag(Chronic::RepeaterTime.new("5:00")) - tokens[1].tag(Chronic::RepeaterDayPortion.new(:morning)) - - assert_equal :morning, tokens[1].tags[0].type - - tokens = Chronic.dealias_and_disambiguate_times(tokens, {}) - - assert_equal :am, tokens[1].tags[0].type - assert_equal 2, tokens.size - - # don't affect unwanted patterns - - tokens = [Chronic::Token.new("friday"), Chronic::Token.new("morning")] - tokens[0].tag(Chronic::RepeaterDayName.new(:friday)) - tokens[1].tag(Chronic::RepeaterDayPortion.new(:morning)) - - assert_equal :morning, tokens[1].tags[0].type - - tokens = Chronic.dealias_and_disambiguate_times(tokens, {}) - - assert_equal :morning, tokens[1].tags[0].type - assert_equal 2, tokens.size - end - - def test_guess - span = Chronic::Span.new(Time.local(2006, 8, 16, 0), Time.local(2006, 8, 17, 0)) - assert_equal Time.local(2006, 8, 16, 12), Chronic.guess(span) - - span = Chronic::Span.new(Time.local(2006, 8, 16, 0), Time.local(2006, 8, 17, 0, 0, 1)) - assert_equal Time.local(2006, 8, 16, 12), Chronic.guess(span) - - span = Chronic::Span.new(Time.local(2006, 11), Time.local(2006, 12)) - assert_equal Time.local(2006, 11, 16), Chronic.guess(span) - end - -end +now = new Horde_Date('2006-08-16 14:00:00'); + } + + public function testPostNormalizeAmPmAliases() + { + // affect wanted patterns + $tokens = array(new Horde_Date_Parser_Token('5:00'), new Horde_Date_Parser_Token('morning')); + $tokens[0]->tag('repeater_time', new Horde_Date_Repeater_Time('5:00')); + $tokens[1]->tag('repeater_day_portion', new Horde_Date_Repeater_DayPortion('morning')); + + $this->assertEquals('morning', $tokens[1]->tags[0][1]->type); + + $parser = Horde_Date_Parser::factory(); + $tokens = $parser->dealiasAndDisambiguateTimes($tokens, array()); + + $this->assertEquals('am', $tokens[1]->tags[0][1]->type); + $this->assertEquals(2, count($tokens)); + + // don't affect unwanted patterns + $tokens = array(new Horde_Date_Parser_Token('friday'), new Horde_Date_Parser_Token('morning')); + $tokens[0]->tag('repeater_day_name', 'friday'); + $tokens[1]->tag('repeater_day_portion', 'morning'); + + $this->assertEquals('morning', $tokens[1]->tags[0][1]); + + $parser = Horde_Date_Parser::factory(); + $tokens = $parser->dealiasAndDisambiguateTimes($tokens, array()); + + $this->assertEquals('morning', $tokens[1]->tags[0][1]); + $this->assertEquals(2, count($tokens)); + } + + public function testGuess() + { + $parser = Horde_Date_Parser::factory(); + + $span = new Horde_Date_Span(new Horde_Date('2006-08-16 00:00:00'), new Horde_Date('2006-08-17 00:00:00')); + $this->assertEquals(new Horde_Date('2006-08-16 12:00:00'), $parser->guess($span)); + + $span = new Horde_Date_Span(new Horde_Date('2006-08-16 00:00:00'), new Horde_Date('2006-08-17 00:00:01')); + $this->assertEquals(new Horde_Date('2006-08-16 12:00:00'), $parser->guess($span)); + + $span = new Horde_Date_Span(new Horde_Date('2006-11-01 00:00:00'), new Horde_Date('2006-12-01 00:00:00')); + $this->assertEquals(new Horde_Date('2006-11-16 00:00:00'), $parser->guess($span)); + } + +} -- 2.11.0