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