]> git.donarmstrong.com Git - liborg-parser-perl.git/blob - t/01-basics.t
Import original source of Org-Parser 0.23
[liborg-parser-perl.git] / t / 01-basics.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 File::Temp qw/tempfile/;
11 use File::Slurp;
12 use Org::Parser;
13 use Test::More 0.96;
14 require "testlib.pl";
15
16 my $doc = <<_;
17 #+TODO: A B | C
18 * test1
19 ** test11
20 * test2
21 _
22 my $ary = [split /(?<=\n)/, $doc];
23 sub org {
24     state $ary2 = [@$ary];
25     shift @$ary2;
26 }
27
28 test_parse(
29     name       => "parse() accepts str",
30     parse_args => [$doc],
31 );
32 test_parse(
33     name       => "parse() accepts arrayref",
34     parse_args => [$ary],
35 );
36 test_parse(
37     name       => "parse() accepts coderef",
38     parse_args => [\&org],
39 );
40 my ($fh, $filename) = tempfile();
41 write_file($filename, $doc);
42 open $fh, "<", $filename;
43 test_parse(
44     name       => "parse() accepts filehandle",
45     parse_args => [$fh],
46 );
47 test_parse(
48     name            => "parse_file() accepts file name",
49     parse_file_args => [$filename],
50 );
51
52 test_parse(
53     name       => "parse() doesnt accept hashref",
54     parse_args => [{}],
55     dies       => 1,
56 );
57 test_parse(
58     name       => "parse() requires argument",
59     parse_args => [],
60     dies       => 1,
61 );
62 test_parse(
63     name       => "parse() requires defined argument",
64     parse_args => [undef],
65     dies       => 1,
66 );
67
68 test_parse(
69     name => "parse() returns Org::Document instance",
70     doc  => "* test\n",
71     test_after_parse => sub {
72         my %args = @_;
73         my $doc = $args{result};
74         isa_ok($doc, "Org::Document");
75     },
76 );
77
78 done_testing();