d751bad6137f99b17cf77858cd9e92effcbdd801
[perl.git] / cpan / podlators / t / termcap.t
1 #!/usr/bin/perl -w
2 #
3 # termcap.t -- Additional specialized tests for Pod::Text::Termcap.
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 tests => 4;
23 BEGIN { use_ok ('Pod::Text::Termcap') }
24
25 # Hard-code a few values to try to get reproducible results.
26 $ENV{COLUMNS} = 80;
27 $ENV{TERM} = 'xterm';
28 $ENV{TERMCAP} = 'xterm:co=80:do=^J:md=\E[1m:us=\E[4m:me=\E[m';
29
30 my $parser = Pod::Text::Termcap->new;
31 isa_ok ($parser, 'Pod::Text::Termcap', 'Parser module');
32 my $n = 1;
33 while (<DATA>) {
34     next until $_ eq "###\n";
35     open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
36     while (<DATA>) {
37         last if $_ eq "###\n";
38         print TMP $_;
39     }
40     close TMP;
41     open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
42     $parser->parse_from_file ("tmp$$.pod", \*OUT);
43     close OUT;
44     open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
45     my $output;
46     {
47         local $/;
48         $output = <TMP>;
49     }
50     close TMP;
51     1 while unlink ("tmp$$.pod", "out$$.tmp");
52     my $expected = '';
53     while (<DATA>) {
54         last if $_ eq "###\n";
55         $expected .= $_;
56     }
57     is ($output, $expected, "Output correct for test $n");
58     $n++;
59 }
60
61 # Below the marker are bits of POD and corresponding expected output.  This is
62 # used to test specific features or problems with Pod::Text::Termcap.  The
63 # input and output are separated by lines containing only ###.
64
65 __DATA__
66
67 ###
68 =head1 WRAPPING
69
70 B<I<Do>> I<B<not>> B<I<include>> B<I<formatting codes when>> B<I<wrapping>>.
71 ###
72 \e[1mWRAPPING\e[m
73     \e[1m\e[4mDo\e[m\e[m \e[4m\e[1mnot\e[m\e[m \e[1m\e[4minclude\e[m\e[m \e[1m\e[4mformatting codes when\e[m\e[m \e[1m\e[4mwrapping\e[m\e[m.
74
75 ###
76
77 ###
78 =head1 TAG WIDTH
79
80 =over 10
81
82 =item 12345678
83
84 A
85
86 =item B<12345678>
87
88 B
89
90 =item 1Z<>
91
92 C
93
94 =item B<1>
95
96 D
97
98 =back
99 ###
100 \e[1mTAG WIDTH\e[m
101     12345678  A
102
103     \e[1m12345678\e[m  B
104
105     1         C
106
107     \e[1m1\e[m         D
108
109 ###