source: vendor/perl/5.8.8/lib/dumpvar.t@ 3184

Last change on this file since 3184 was 3181, checked in by bird, 19 years ago

perl 5.8.8

File size: 5.3 KB
RevLine 
[3181]1#!./perl -- -*- mode: cperl; cperl-indent-level: 4 -*-
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6 require Config;
7 if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){
8 print "1..0 # Skip -- Perl configured without List::Util module\n";
9 exit 0;
10 }
11}
12
13use strict;
14
15$|=1;
16
17my @prgs;
18{
19 local $/;
20 @prgs = split "########\n", <DATA>;
21 close DATA;
22}
23
24use Test::More;
25
26plan tests => scalar @prgs;
27
28require "dumpvar.pl";
29
30sub unctrl { print dumpvar::unctrl($_[0]), "\n" }
31sub uniescape { print dumpvar::uniescape($_[0]), "\n" }
32sub stringify { print dumpvar::stringify($_[0]), "\n" }
33sub dumpvalue {
34 # Call main::dumpValue exactly as the perl5db.pl calls it.
35 local $\ = '';
36 local $, = '';
37 local $" = ' ';
38 my @params = @_;
39 &main::dumpValue(\@params,-1);
40}
41
42package Foo;
43
44sub new { my $class = shift; bless [ @_ ], $class }
45
46package Bar;
47
48sub new { my $class = shift; bless [ @_ ], $class }
49
50use overload '""' => sub { "Bar<@{$_[0]}>" };
51
52package main;
53
54my $foo = Foo->new(1..5);
55my $bar = Bar->new(1..5);
56
57for (@prgs) {
58 my($prog, $expected) = split(/\nEXPECT\n?/, $_);
59 # TODO: dumpvar::stringify() is controlled by a pile of package
60 # dumpvar variables: $printUndef, $unctrl, $quoteHighBit, $bareStringify,
61 # and so forth. We need to test with various settings of those.
62 my $out = tie *STDOUT, 'TieOut';
63 eval $prog;
64 my $ERR = $@;
65 untie $out;
66 if ($ERR) {
67 ok(0, "$prog - $ERR");
68 } else {
69 if ($expected =~ m:^/:) {
70 like($$out, $expected, $prog);
71 } else {
72 is($$out, $expected, $prog);
73 }
74 }
75}
76
77package TieOut;
78
79sub TIEHANDLE {
80 bless( \(my $self), $_[0] );
81}
82
83sub PRINT {
84 my $self = shift;
85 $$self .= join('', @_);
86}
87
88sub read {
89 my $self = shift;
90 substr( $$self, 0, length($$self), '' );
91}
92
93__END__
94unctrl("A");
95EXPECT
96A
97########
98unctrl("\cA");
99EXPECT
100^A
101########
102uniescape("A");
103EXPECT
104A
105########
106uniescape("\x{100}");
107EXPECT
108\x{0100}
109########
110stringify(undef);
111EXPECT
112undef
113########
114stringify("foo");
115EXPECT
116'foo'
117########
118stringify("\cA");
119EXPECT
120"\cA"
121########
122stringify(*a);
123EXPECT
124*main::a
125########
126stringify(\undef);
127EXPECT
128/^'SCALAR\(0x[0-9a-f]+\)'$/i
129########
130stringify([]);
131EXPECT
132/^'ARRAY\(0x[0-9a-f]+\)'$/i
133########
134stringify({});
135EXPECT
136/^'HASH\(0x[0-9a-f]+\)'$/i
137########
138stringify(sub{});
139EXPECT
140/^'CODE\(0x[0-9a-f]+\)'$/i
141########
142stringify(\*a);
143EXPECT
144/^'GLOB\(0x[0-9a-f]+\)'$/i
145########
146stringify($foo);
147EXPECT
148/^'Foo=ARRAY\(0x[0-9a-f]+\)'$/i
149########
150stringify($bar);
151EXPECT
152/^'Bar=ARRAY\(0x[0-9a-f]+\)'$/i
153########
154dumpValue(undef);
155EXPECT
156undef
157########
158dumpValue(1);
159EXPECT
1601
161########
162dumpValue("\cA");
163EXPECT
164"\cA"
165########
166dumpValue("\x{100}");
167EXPECT
168'\x{0100}'
169########
170dumpValue("1\n2\n3");
171EXPECT
172'1
1732
1743'
175########
176dumpValue([1..3],1);
177EXPECT
1780 1
1791 2
1802 3
181########
182dumpValue([1..3]);
183EXPECT
1840 1
1851 2
1862 3
187########
188dumpValue({1..4},1);
189EXPECT
1901 => 2
1913 => 4
192########
193dumpValue({1..4});
194EXPECT
1951 => 2
1963 => 4
197########
198dumpValue($foo,1);
199EXPECT
2000 1
2011 2
2022 3
2033 4
2044 5
205########
206dumpValue($foo);
207EXPECT
2080 1
2091 2
2102 3
2113 4
2124 5
213########
214dumpValue($bar,1);
215EXPECT
2160 1
2171 2
2182 3
2193 4
2204 5
221########
222dumpValue($bar);
223EXPECT
2240 1
2251 2
2262 3
2273 4
2284 5
229########
230dumpvalue("a");
231EXPECT
2320 'a'
233########
234dumpvalue("\cA");
235EXPECT