]> git.donarmstrong.com Git - liborg-parser-perl.git/blob - t/drawer.t
Import original source of Org-Parser 0.23
[liborg-parser-perl.git] / t / drawer.t
1 #!perl
2
3 use 5.010;
4 use strict;
5 use warnings;
6
7 use FindBin '$Bin';
8 use lib $Bin, "$Bin/t";
9
10 use Org::Parser;
11 use Test::More 0.96;
12 require "testlib.pl";
13
14 test_parse(
15     name => 'non-drawer (missing end)',
16     filter_elements => 'Org::Element::Drawer',
17     doc  => <<'_',
18 * foo
19     :CLOCK:
20 _
21     num => 0,
22 );
23
24 test_parse(
25     name => 'non-drawer (extra text before opening line)',
26     filter_elements => 'Org::Element::Drawer',
27     doc  => <<'_',
28 * foo
29     :CLOCK: extra
30     :END:
31 _
32     num => 0,
33 );
34
35 test_parse(
36     name => 'non-drawer (extra text after opening line)',
37     filter_elements => 'Org::Element::Drawer',
38     doc  => <<'_',
39 * foo
40     extra :CLOCK:
41     :END:
42 _
43     num => 0,
44 );
45
46 test_parse(
47     name => 'unknown drawer name',
48     filter_elements => 'Org::Element::Drawer',
49     doc  => <<'_',
50 * foo
51     :FOO:
52     :END:
53 _
54     dies => 1,
55 );
56
57 test_parse(
58     name => 'properties basic tests',
59     filter_elements => 'Org::Element::Drawer',
60     doc  => <<'_',
61     :PROPERTIES:
62       :foo: 1 "2 3"
63       :bar: 2
64     :END:
65 _
66     num => 1,
67     test_after_parse => sub {
68         my %args = @_;
69         my $doc = $args{result};
70         my $elems = $args{elements};
71         my $d = $elems->[0];
72         is($d->name, "PROPERTIES", "name");
73         is_deeply($d->properties, {foo=>[1, "2 3"], bar=>2}, "properties");
74     },
75 );
76
77 done_testing();