podcheck.t: tell the author where the problems db is located
[perl.git] / cpan / podlators / t / color.t
1 #!/usr/bin/perl -w
2 #
3 # color.t -- Additional specialized tests for Pod::Text::Color.
4 #
5 # Copyright 2002, 2004, 2006, 2009, 2012, 2013
6 #     Russ Allbery <rra@stanford.edu>
7 #
8 # This program is free software; you may redistribute it and/or modify it
9 # under the same terms as Perl itself.
10
11 BEGIN {
12     chdir 't' if -d 't';
13     if ($ENV{PERL_CORE}) {
14         @INC = '../lib';
15     }
16     unshift (@INC, '../blib/lib');
17     $| = 1;
18 }
19
20 use strict;
21
22 use Test::More;
23
24 # Skip this test if Term::ANSIColor isn't available.
25 eval { require Term::ANSIColor };
26 if ($@) {
27     plan skip_all => 'Term::ANSIColor required for Pod::Text::Color';
28 } else {
29     plan tests => 4;
30 }
31 require_ok ('Pod::Text::Color');
32
33 # Load tests from the data section below, write the POD to a temporary file,
34 # convert it, and compare to the expected output.
35 my $parser = Pod::Text::Color->new;
36 isa_ok ($parser, 'Pod::Text::Color', 'Parser object');
37 my $n = 1;
38 while (<DATA>) {
39     next until $_ eq "###\n";
40     open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
41     while (<DATA>) {
42         last if $_ eq "###\n";
43         print TMP $_;
44     }
45     close TMP;
46     open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
47     $parser->parse_from_file ("tmp$$.pod", \*OUT);
48     close OUT;
49     open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
50     my $output;
51     {
52         local $/;
53         $output = <TMP>;
54     }
55     close TMP;
56     1 while unlink ("tmp$$.pod", "out$$.tmp");
57     my $expected = '';
58     while (<DATA>) {
59         last if $_ eq "###\n";
60         $expected .= $_;
61     }
62     is ($output, $expected, "Output correct for test $n");
63     $n++;
64 }
65
66 # Below the marker are bits of POD and corresponding expected output.  This is
67 # used to test specific features or problems with Pod::Text::Color.  The input
68 # and output are separated by lines containing only ###.
69
70 __DATA__
71
72 ###
73 =head1 WRAPPING
74
75 B<I<Do>> I<B<not>> B<I<include>> B<I<formatting codes when>> B<I<wrapping>>.
76 ###
77 \e[1mWRAPPING\e[0m
78     \e[1m\e[33mDo\e[0m\e[0m \e[33m\e[1mnot\e[0m\e[0m \e[1m\e[33minclude\e[0m\e[0m \e[1m\e[33mformatting codes when\e[0m\e[0m \e[1m\e[33mwrapping\e[0m\e[0m.
79
80 ###
81
82 ###
83 =head1 TAG WIDTH
84
85 =over 10
86
87 =item 12345678
88
89 A
90
91 =item B<12345678>
92
93 B
94
95 =item 1Z<>
96
97 C
98
99 =item B<1>
100
101 D
102
103 =back
104 ###
105 \e[1mTAG WIDTH\e[0m
106     12345678  A
107
108     \e[1m12345678\e[0m  B
109
110     1         C
111
112     \e[1m1\e[0m         D
113
114 ###