This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(Retracted by #8573)
[perl5.git] / t / lib / textwrap.t
1 #!./perl -w
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6 }
7 use Text::Wrap qw(&wrap);
8
9 @tests = (split(/\nEND\n/s, <<DONE));
10 TEST1
11 This 
12 is
13 a
14 test
15 END
16    This 
17  is
18  a
19  test
20 END
21 TEST2
22 This is a test of a very long line.  It should be broken up and put onto multiple lines.
23 This is a test of a very long line.  It should be broken up and put onto multiple lines.
24
25 This is a test of a very long line.  It should be broken up and put onto multiple lines.
26 END
27    This is a test of a very long line.  It should be broken up and put onto
28  multiple lines.
29  This is a test of a very long line.  It should be broken up and put onto
30  multiple lines.
31  
32  This is a test of a very long line.  It should be broken up and put onto
33  multiple lines.
34 END
35 TEST3
36 This is a test of a very long line.  It should be broken up and put onto multiple lines.
37 END
38    This is a test of a very long line.  It should be broken up and put onto
39  multiple lines.
40 END
41 TEST4
42 This is a test of a very long line.  It should be broken up and put onto multiple lines.
43
44 END
45    This is a test of a very long line.  It should be broken up and put onto
46  multiple lines.
47
48 END
49 TEST5
50 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
51 END
52    This is a test of a very long line. It should be broken up and put onto
53  multiple This is a test of a very long line. It should be broken up and
54  put
55 END
56 TEST6
57 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
58 END
59    11111111 22222222 33333333 44444444 55555555 66666666 77777777 888888888
60  999999999 aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ffffffff
61  gggggggg hhhhhhhh iiiiiiii jjjjjjjj kkkkkkkk llllllll mmmmmmmmm nnnnnnnnn
62  ooooooooo ppppppppp qqqqqqqqq rrrrrrrrr sssssssss
63 END
64 TEST7
65 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
66 END
67    c3t1d0s6 c4t1d0s6 c5t1d0s6 c6t1d0s6 c7t1d0s6 c8t1d0s6 c9t1d0s6 c10t1d0s6
68  c11t1d0s6 c12t1d0s6 c13t1d0s6 c14t1d0s6 c15t1d0s6 c16t1d0s6 c3t1d0s0
69  c4t1d0s0 c5t1d0s0 c6t1d0s0 c7t1d0s0 c8t1d0s0 c9t1d0s0 c10t1d0s0 c11t1d0s0
70  c12t1d0s0 c13t1d0s0 c14t1d0s0 c15t1d0s0 c16t1d0s0
71 END
72 TEST8
73 A test of a very very long word.
74 a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
75 END
76    A test of a very very long word.
77  a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
78  4567
79 END
80 TEST9
81 A test of a very very long word.  a123456789b123456789c123456789d123456789e123456789f123456789g123456789g1234567
82 END
83    A test of a very very long word. 
84  a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123
85  4567
86 END
87 TEST10
88 my mother once said
89 "never eat paste my darling"
90 would that I heeded
91 END
92    my mother once said
93  "never eat paste my darling"
94  would that I heeded
95 END
96 DONE
97
98
99 $| = 1;
100
101 print "1..". @tests . "\n";
102
103 use Text::Wrap;
104
105 $rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
106
107 $tn = 1;
108 while (@tests) {
109         my $in = shift(@tests);
110         my $out = shift(@tests);
111
112         $in =~ s/^TEST(\d+)?\n//;
113
114         # Make sure split() doesn't drop trailing empty sets.
115         my @in = split("\n", $in, -1);
116         @in = ((map { "$_\n" } @in[0..$#in-1]), $in[-1]);
117
118         # We run wrap() both with a string and a list to test its
119         # line joining logic.
120         foreach my $back (wrap('   ', ' ', @in),
121                           wrap('   ', ' ', $in) ) {
122
123                 if ($back eq $out) {
124                         print "ok $tn\n";
125                 } elsif ($rerun) {
126                         my $oi = $in;
127                         foreach ($in, $back, $out) {
128                                 s/\t/^I\t/gs;
129                                 s/\n/\$\n/gs;
130                         }
131                         print "------------ input ------------\n";
132                         print $in;
133                         print "\n------------ output -----------\n";
134                         print $back;
135                         print "\n------------ expected ---------\n";
136                         print $out;
137                         print "\n-------------------------------\n";
138                         $Text::Wrap::debug = 1;
139                         wrap('   ', ' ', $oi);
140                         exit(1);
141                 } else {
142                         print "not ok $tn\n";
143                 }
144                 $tn++;
145         }
146 }