Update podlators to version 4.03
[perl.git] / cpan / podlators / t / text / utf8.t
1 #!/usr/bin/perl -w
2 #
3 # text-utf8.t -- Test Pod::Text with UTF-8 input.
4 #
5 # Copyright 2002, 2004, 2006, 2007, 2008, 2009, 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;
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     $parser->parse_from_file ("tmp$$.pod", \*OUT);
58     close OUT;
59     open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
60     eval 'binmode (\*TMP, ":encoding(utf-8)")';
61     my $output;
62     {
63         local $/;
64         $output = <TMP>;
65     }
66     close TMP;
67     1 while unlink ("tmp$$.pod", "out$$.tmp");
68     my $expected = '';
69     while (<DATA>) {
70         last if $_ eq "###\n";
71         $expected .= $_;
72     }
73     is ($output, $expected, "Output correct for test $n");
74     $n++;
75 }
76
77 # Below the marker are bits of POD and corresponding expected text output.
78 # This is used to test specific features or problems with Pod::Text.  The
79 # input and output are separated by lines containing only ###.
80
81 __DATA__
82
83 ###
84 =head1 Test of SE<lt>E<gt>
85
86 This is S<some whitespace>.
87 ###
88 Test of S<>
89     This is some whitespace.
90
91 ###
92
93 ###
94 =head1 I can eat glass
95
96 =over 4
97
98 =item Esperanto
99
100 Mi povas manĝi vitron, ĝi ne damaĝas min.
101
102 =item Braille
103
104 ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑
105
106 =item Hindi
107
108 मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती.
109
110 =back
111
112 See L<http://www.columbia.edu/kermit/utf8.html>
113 ###
114 I can eat glass
115     Esperanto
116         Mi povas manĝi vitron, ĝi ne damaĝas min.
117
118     Braille
119         ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑
120
121     Hindi
122         मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती.
123
124     See <http://www.columbia.edu/kermit/utf8.html>
125
126 ###