8 use lib $Bin, "$Bin/t";
16 name => 'timestamp basic tests',
17 filter_elements => sub {
18 $_[0]->isa('Org::Element::Timestamp') },
20 * TODO active timestamps
21 SCHEDULED: <2011-03-16 Wed>
23 TEST: <2011-03-16 Wed 01:23>
24 nontimestamps: <2011-03-23>
29 - [2011-03-23 Wed 01:23]
30 - nontimestamps: [2011-03-23]
33 - <2012-01-11 Wed > # space after dow allowed
34 - [2012-01-11 ] [2012-01-11 Wed ] # multiple spaces allowed
37 test_after_parse => sub {
39 my $doc = $args{result};
40 my $elems = $args{elements};
41 is(DateTime->compare(DateTime->new(year=>2011, month=>3, day=>16),
42 $elems->[0]->datetime), 0, "ts[0] datetime")
43 or diag("datetime=".$elems->[0]->datetime);
45 is( $elems->[0]->as_string, "<2011-03-16 Wed>", "ts[0] as_string");
46 is( $elems->[1]->as_string, "<2011-03-16 Wed>", "ts[1] as_string");
47 is( $elems->[2]->as_string, "<2011-03-16 Wed 01:23>",
49 is( $elems->[3]->as_string, "[2011-03-23 Wed]",
52 ok( $elems->[0]->is_active, "ts[0] is_active");
53 ok(!$elems->[3]->is_active, "ts[3] !is_active");
56 is( $elems->[6]->as_string, "<2012-01-11 Wed>", "ts[6] as_string");
57 is( $elems->[7]->as_string, "[2012-01-11 Wed]", "ts[7] as_string");
58 is( $elems->[8]->as_string, "[2012-01-11 Wed]", "ts[8] as_string");
63 name => 'event duration',
64 filter_elements => sub {
65 $_[0]->isa('Org::Element::Timestamp') },
67 [2011-03-23 Wed 10:12-11:23]
70 test_after_parse => sub {
72 my $doc = $args{result};
73 my $elems = $args{elements};
75 is(DateTime->compare(DateTime->new(year=>2011, month=>3, day=>23,
76 hour=>10, minute=>12),
77 $ts->datetime), 0, "datetime")
78 or diag("datetime=".$ts->datetime);
79 is($elems->[0]->event_duration, 1*3600+11*60, "event_duration");
84 name => 'repeater & warning period',
85 filter_elements => sub {
86 $_[0]->isa('Org::Element::Timestamp') },
88 [2011-03-23 Wed 10:12 +1d]
89 [2011-03-23 Wed 10:12-11:23 +2w]
94 <2011-05-25 Wed +17.1m -13.2d>
97 test_after_parse => sub {
99 my $doc = $args{result};
100 my $elems = $args{elements};
101 is($elems->[0]->_repeater, "+1d", "[0] _repeater");
102 is($elems->[1]->_repeater, "+2w", "[1] _repeater");
103 is($elems->[2]->_repeater, "+3m", "[2] _repeater");
104 is($elems->[3]->_repeater, "+4y", "[3] _repeater");
105 is($elems->[4]->_repeater, "++5m", "[4] _repeater");
106 is($elems->[5]->_repeater, ".+6m", "[5] _repeater");
107 is($elems->[6]->_repeater, "+17.1m", "[6] _repeater");
108 is($elems->[6]->_warning_period, "-13.2d", "[6] _warning_period");
110 ok($elems->[0]->recurrence->isa('DateTime::Set::ICal'),
117 filter_elements => sub {
118 $_[0]->isa('Org::Element::Timestamp') },
119 parser_opts => {time_zone => 'Asia/Jakarta'},
124 test_after_parse => sub {
126 my $doc = $args{result};
127 my $elems = $args{elements};
128 my $dt = $elems->[0]->datetime;
129 my $tz = $dt->time_zone;
130 is($tz->short_name_for_datetime($dt), "WIT", "time zone's short name");