fe50ca1856534c14ad2058530f34c1e2b8cf1b08
[perl.git] / cpan / podlators / t / text-perlio.t
1 #!/usr/bin/perl -w
2 #
3 # text-perlio.t -- Test Pod::Text with a PerlIO UTF-8 encoding layer.
4 #
5 # Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2012
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 # UTF-8 support requires Perl 5.8 or later.
25 BEGIN {
26     if ($] < 5.008) {
27         plan skip_all => 'Perl 5.8 required for UTF-8 support';
28     } else {
29         plan tests => 4;
30     }
31 }
32 BEGIN { use_ok ('Pod::Text') }
33
34 my $parser = Pod::Text->new (utf8 => 1);
35 isa_ok ($parser, 'Pod::Text', 'Parser object');
36 my $n = 1;
37 eval { binmode (\*DATA, ':encoding(utf-8)') };
38 eval { binmode (\*STDOUT, ':encoding(utf-8)') };
39 my $builder = Test::More->builder;
40 eval { binmode ($builder->output, ':encoding(utf-8)') };
41 eval { binmode ($builder->failure_output, ':encoding(utf-8)') };
42 while (<DATA>) {
43     next until $_ eq "###\n";
44     open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
45     eval { binmode (\*TMP, ':encoding(utf-8)') };
46     print TMP "=encoding UTF-8\n\n";
47     while (<DATA>) {
48         last if $_ eq "###\n";
49         print TMP $_;
50     }
51     close TMP;
52     open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
53     eval { binmode (\*OUT, ':encoding(utf-8)') };
54     $parser->parse_from_file ("tmp$$.pod", \*OUT);
55     close OUT;
56     open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
57     eval { binmode (\*TMP, ':encoding(utf-8)') };
58     my $output;
59     {
60         local $/;
61         $output = <TMP>;
62     }
63     close TMP;
64     1 while unlink ("tmp$$.pod", "out$$.tmp");
65     my $expected = '';
66     while (<DATA>) {
67         last if $_ eq "###\n";
68         $expected .= $_;
69     }
70     is ($output, $expected, "Output correct for test $n");
71     $n++;
72 }
73
74 # Below the marker are bits of POD and corresponding expected text output.
75 # This is used to test specific features or problems with Pod::Text.  The
76 # input and output are separated by lines containing only ###.
77
78 __DATA__
79
80 ###
81 =head1 Test of SE<lt>E<gt>
82
83 This is S<some whitespace>.
84 ###
85 Test of S<>
86     This is some whitespace.
87
88 ###
89
90 ###
91 =head1 I can eat glass
92
93 =over 4
94
95 =item Esperanto
96
97 Mi povas manĝi vitron, ĝi ne damaĝas min.
98
99 =item Braille
100
101 ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑
102
103 =item Hindi
104
105 मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती.
106
107 =back
108
109 See L<http://www.columbia.edu/kermit/utf8.html>
110 ###
111 I can eat glass
112     Esperanto
113         Mi povas manĝi vitron, ĝi ne damaĝas min.
114
115     Braille
116         ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑
117
118     Hindi
119         मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती.
120
121     See <http://www.columbia.edu/kermit/utf8.html>
122
123 ###