This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK INADDR_NONE
[perl5.git] / t / lib / textwrap.t
1 #!./perl -w
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6 }
7
8 @tests = (split(/\nEND\n/s, <<DONE));
9 TEST1
10 This 
11 is
12 a
13 test
14 END
15    This 
16  is
17  a
18  test
19 END
20 TEST2
21 This is a test of a very long line.  It should be broken up and put onto multiple lines.
22 This is a test of a very long line.  It should be broken up and put onto multiple lines.
23
24 This is a test of a very long line.  It should be broken up and put onto multiple lines.
25 END
26    This is a test of a very long line.  It should be broken up and put onto
27  multiple lines.
28  This is a test of a very long line.  It should be broken up and put onto
29  multiple lines.
30  
31  This is a test of a very long line.  It should be broken up and put onto
32  multiple lines.
33 END
34 TEST3
35 This is a test of a very long line.  It should be broken up and put onto multiple lines.
36 END
37    This is a test of a very long line.  It should be broken up and put onto
38  multiple lines.
39 END
40 TEST4
41 This is a test of a very long line.  It should be broken up and put onto multiple lines.
42
43 END
44    This is a test of a very long line.  It should be broken up and put onto
45  multiple lines.
46
47 END
48 TEST5
49 This is a test of a very long line. It should be broken up and put onto multiple This is a test of a very long line. It should be broken up and put
50 END
51    This is a test of a very long line. It should be broken up and put onto
52  multiple This is a test of a very long line. It should be broken up and
53  put
54 END
55 TEST6
56 11111111 22222222 33333333 44444444 55555555 66666666 77777777 888888888 999999999 aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ffffffff gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmmm nnnnnnnnn ooooooooo ppppppppp qqqqqqqqq rrrrrrrrr sssssssss
57 END
58    11111111 22222222 33333333 44444444 55555555 66666666 77777777 888888888
59  999999999 aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ffffffff
60  gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmmm nnnnnnnnn
61  ooooooooo ppppppppp qqqqqqqqq rrrrrrrrr sssssssss
62 END
63 TEST7
64 c3t1d0s6 c4t1d0s6 c5t1d0s6 c6t1d0s6 c7t1d0s6 c8t1d0s6 c9t1d0s6 c10t1d0s6 c11t1d0s6 c12t1d0s6 c13t1d0s6 c14t1d0s6 c15t1d0s6 c16t1d0s6 c3t1d0s0 c4t1d0s0 c5t1d0s0 c6t1d0s0 c7t1d0s0 c8t1d0s0 c9t1d0s0 c10t1d0s0 c11t1d0s0 c12t1d0s0 c13t1d0s0 c14t1d0s0 c15t1d0s0 c16t1d0s0
65 END
66    c3t1d0s6 c4t1d0s6 c5t1d0s6 c6t1d0s6 c7t1d0s6 c8t1d0s6 c9t1d0s6 c10t1d0s6
67  c11t1d0s6 c12t1d0s6 c13t1d0s6 c14t1d0s6 c15t1d0s6 c16t1d0s6 c3t1d0s0
68  c4t1d0s0 c5t1d0s0 c6t1d0s0 c7t1d0s0 c8t1d0s0 c9t1d0s0 c10t1d0s0 c11t1d0s0
69  c12t1d0s0 c13t1d0s0 c14t1d0s0 c15t1d0s0 c16t1d0s0
70 END
71 TEST8
72 A test of a very very long word.
73 a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
74 END
75    A test of a very very long word.
76  a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
77  4567
78 END
79 TEST9
80 A test of a very very long word.  a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
81 END
82    A test of a very very long word. 
83  a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
84  4567
85 END
86 TEST10
87 my mother once said
88 "never eat paste my darling"
89 would that I heeded
90 END
91    my mother once said
92  "never eat paste my darling"
93  would that I heeded
94 END
95 TEST11
96 This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_program_does_not_crash_and_burn
97 END
98    This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_pr
99  ogram_does_not_crash_and_burn
100 END
101 TEST12
102 This
103
104 Has
105
106 Blank
107
108 Lines
109
110 END
111    This
112  
113  Has
114  
115  Blank
116  
117  Lines
118
119 END
120 DONE
121
122
123 $| = 1;
124
125 print "1..", 1 +@tests, "\n";
126
127 use Text::Wrap;
128
129 $rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
130
131 $tn = 1;
132
133 @st = @tests;
134 while (@st) {
135         my $in = shift(@st);
136         my $out = shift(@st);
137
138         $in =~ s/^TEST(\d+)?\n//;
139
140         my $back = wrap('   ', ' ', $in);
141
142         if ($back eq $out) {
143                 print "ok $tn\n";
144         } elsif ($rerun) {
145                 my $oi = $in;
146                 foreach ($in, $back, $out) {
147                         s/\t/^I\t/gs;
148                         s/\n/\$\n/gs;
149                 }
150                 print "------------ input ------------\n";
151                 print $in;
152                 print "\n------------ output -----------\n";
153                 print $back;
154                 print "\n------------ expected ---------\n";
155                 print $out;
156                 print "\n-------------------------------\n";
157                 $Text::Wrap::debug = 1;
158                 wrap('   ', ' ', $oi);
159                 exit(1);
160         } else {
161                 print "not ok $tn\n";
162         }
163         $tn++;
164
165 }
166
167 @st = @tests;
168 while(@st) {
169         my $in = shift(@st);
170         my $out = shift(@st);
171
172         $in =~ s/^TEST(\d+)?\n//;
173
174         my @in = split("\n", $in, -1);
175         @in = ((map { "$_\n" } @in[0..$#in-1]), $in[-1]);
176         
177         my $back = wrap('   ', ' ', @in);
178
179         if ($back eq $out) {
180                 print "ok $tn\n";
181         } elsif ($rerun) {
182                 my $oi = $in;
183                 foreach ($in, $back, $out) {
184                         s/\t/^I\t/gs;
185                         s/\n/\$\n/gs;
186                 }
187                 print "------------ input2 ------------\n";
188                 print $in;
189                 print "\n------------ output2 -----------\n";
190                 print $back;
191                 print "\n------------ expected2 ---------\n";
192                 print $out;
193                 print "\n-------------------------------\n";
194                 $Text::Wrap::debug = 1;
195                 wrap('   ', ' ', $oi);
196                 exit(1);
197         } else {
198                 print "not ok $tn\n";
199         }
200         $tn++;
201 }
202
203 $Text::Wrap::huge = 'overflow';
204
205 my $tw = 'This_is_a_word_that_is_too_long_to_wrap_we_want_to_make_sure_that_the_program_does_not_crash_and_burn';
206 my $w = wrap('zzz','yyy',$tw);
207 print (($w eq "zzz$tw") ? "ok $tn\n" : "not ok $tn");
208 $tn++;
209