Update podlators to version 4.03
[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, 2014
6 #     Russ Allbery <rra@cpan.org>
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 # Force UTF-8 on all relevant file handles.  Hide this in a string eval so
35 # that older versions of Perl don't croak and minimum-version tests still
36 # pass.
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
43 my $parser = Pod::Text->new (utf8 => 1);
44 isa_ok ($parser, 'Pod::Text', 'Parser object');
45 my $n = 1;
46 while (<DATA>) {
47     next until $_ eq "###\n";
48     open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
49     eval 'binmode (\*TMP, ":encoding(utf-8)")';
50     print TMP "=encoding UTF-8\n\n";
51     while (<DATA>) {
52         last if $_ eq "###\n";
53         print TMP $_;
54     }
55     close TMP;
56     open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
57     eval 'binmode (\*OUT, ":encoding(utf-8)")';
58     $parser->parse_from_file ("tmp$$.pod", \*OUT);
59     close OUT;
60     open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
61     eval 'binmode (\*TMP, ":encoding(utf-8)")';
62     my $output;
63     {
64         local $/;
65         $output = <TMP>;
66     }
67     close TMP;
68     1 while unlink ("tmp$$.pod", "out$$.tmp");
69     my $expected = '';
70     while (<DATA>) {
71         last if $_ eq "###\n";
72         $expected .= $_;
73     }
74     is ($output, $expected, "Output correct for test $n");
75     $n++;
76 }
77
78 # Below the marker are bits of POD and corresponding expected text output.
79 # This is used to test specific features or problems with Pod::Text.  The
80 # input and output are separated by lines containing only ###.
81
82 __DATA__
83
84 ###
85 =head1 Test of SE<lt>E<gt>
86
87 This is S<some whitespace>.
88 ###
89 Test of S<>
90     This is some whitespace.
91
92 ###
93
94 ###
95 =head1 I can eat glass
96
97 =over 4
98
99 =item Esperanto
100
101 Mi povas manĝi vitron, ĝi ne damaĝas min.
102
103 =item Braille
104
105 ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑
106
107 =item Hindi
108
109 मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती.
110
111 =back
112
113 See L<http://www.columbia.edu/kermit/utf8.html>
114 ###
115 I can eat glass
116     Esperanto
117         Mi povas manĝi vitron, ĝi ne damaĝas min.
118
119     Braille
120         ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑
121
122     Hindi
123         मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती.
124
125     See <http://www.columbia.edu/kermit/utf8.html>
126
127 ###