Data-Dump-Streamer
view release on metacpan or search on metacpan
perl Makefile.PL NODDS [STANDARD OPTS]
1.06
Added additional support for utf8 and some minor doc fixes. Thanks to
Yitzchak yet again for the patches and advice.
1.05
Added support for locked hashes. Probably there are still bugs in here,
but for now it looks good. Thanks to Yitzchak for pointing out this wasn't
implemented.
Also started adding support for a "smart indent mode". Try using Indent(1)
instead of Indent(2).
1.03, 1.04
Enhanced format support for FORMAT refs. Yitzchak pointed out some
bugs in the original handling. DeparseFormat() has been removed. It
README.md
t/as.t
t/blessed.t
t/dogpound.t
t/dump.t
t/filter.t
t/globtest.t
t/hardrefs.t
t/impure_madness.t
t/lexicals.t
t/locked.t
t/madness.t
t/madness_json.t
t/madness_w.t
t/names.t
t/overload.t
t/readonly.t
t/refaddr.t
t/refcount.t
t/refelem.t
t/reftype.t
# use this one for simple, non evalable tests. (GLOB)
# same ( $got,$expected,$name,$obj )
#
# use this one for eval checks and dumper checks but NOT for GLOB's
# same ( $name,$obj,$expected,@args )
my $dump;
my $o= Data::Dump::Streamer->new();
isa_ok($o, 'Data::Dump::Streamer');
SKIP: {
skip "No locked hashes before 5.8.0", $TESTS
if $] < 5.008;
skip "Can't tell which keys are locked before 5.8.1", $TESTS
if $] == 5.008;
{
my %h= ('a0' .. 'a9');
lock_keys(%h);
test_dump({
name => "locked_ref_keys",
verbose => 1
},
$o,
(\%h),
<<'EXPECT',);
$HASH1 = lock_ref_keys( {
a0 => 'a1',
a2 => 'a3',
a4 => 'a5',
a6 => 'a7',
a8 => 'a9'
} );
EXPECT
delete(@h{qw(a2 a6)});
test_dump({
name => "locked_ref_keys_plus",
verbose => 1
},
$o,
(\%h),
<<'EXPECT',);
$HASH1 = lock_ref_keys_plus( {
a0 => 'a1',
a4 => 'a5',
a8 => 'a9'
}, 'a2', 'a6' );
EXPECT
}
{
my %h= ('a0' .. 'a9');
lock_keys(%h);
test_dump({
name => "locked_keys",
verbose => 1
},
$o->Names('*h'),
(\%h),
<<'EXPECT',);
%h = (
a0 => 'a1',
a2 => 'a3',
a4 => 'a5',
a6 => 'a7',
a8 => 'a9'
);
lock_keys( %h );
EXPECT
delete(@h{qw(a2 a6)});
test_dump({
name => "locked_keys_plus",
verbose => 1
},
$o,
(\%h),
<<'EXPECT',);
%h = (
a0 => 'a1',
a4 => 'a5',
a8 => 'a9'
);
lock_keys_plus( %h, 'a2', 'a6');
EXPECT
$o->Names();
}
{
my $h= bless { 'a0' .. 'a9' }, 'locked';
lock_keys(%$h);
test_dump({
name => "blessed locked_ref_keys",
verbose => 1
},
$o,
(\%$h),
<<'EXPECT',);
$locked1 = lock_ref_keys( bless( {
a0 => 'a1',
a2 => 'a3',
a4 => 'a5',
a6 => 'a7',
a8 => 'a9'
}, 'locked' ) );
EXPECT
delete(@$h{qw(a2 a6)});
test_dump({
name => "blessed locked_ref_keys_plus",
verbose => 1
},
$o,
(\%$h),
<<'EXPECT',);
$locked1 = lock_ref_keys_plus( bless( {
a0 => 'a1',
a4 => 'a5',
a8 => 'a9'
}, 'locked' ), 'a2', 'a6' );
EXPECT
}
{
my $h= bless { 'a0' .. 'a9' }, 'locked';
lock_keys(%$h);
test_dump({
name => "blessed locked_keys",
verbose => 1
},
$o->Names('*h'),
($h, $h),
<<'EXPECT',);
%h = (
a0 => 'a1',
a2 => 'a3',
a4 => 'a5',
a6 => 'a7',
a8 => 'a9'
);
$locked1 = bless( \%h, 'locked' );
lock_keys( %h );
EXPECT
delete(@$h{qw(a2 a6)});
test_dump({
name => "blessed locked_keys_plus",
verbose => 1
},
$o,
($h, $h),
<<'EXPECT',);
%h = (
a0 => 'a1',
a4 => 'a5',
a8 => 'a9'
);
$locked1 = bless( \%h, 'locked' );
lock_keys_plus( %h, 'a2', 'a6');
EXPECT
$o->Names();
}
{
my $x= 0;
my %hashes=
map { $_ => lock_ref_keys_plus({ foo => $_ }, $x++) } 1 .. 10;
lock_keys_plus(%hashes, 10 .. 19);
test_dump({
name => "blessed locked_keys_plus",
verbose => 1
},
$o,
(\%hashes),
<<'EXPECT',);
$HASH1 = lock_ref_keys_plus( {
1 => lock_ref_keys_plus( { foo => 1 }, 0 ),
2 => lock_ref_keys_plus( { foo => 2 }, 1 ),
3 => lock_ref_keys_plus( { foo => 3 }, 2 ),
4 => lock_ref_keys_plus( { foo => 4 }, 3 ),
t/xs_subs.t view on Meta::CPAN
ok(!readonly($var), '$var = fred; readonly($var)');
ok($var eq "fred", '$var eq "fred"');
$var= \2;
ok(!readonly($var), '$var=\2; readonly($var)');
ok(readonly($$var), 'readonly($$var)');
ok(!readonly(*STDOUT), 'readonly(*STDOUT)');
# new
SKIP: {
skip "No locked key semantics before 5.8.0", $XTRA
if $] < 5.008;
{
my %hash= map { $_ => 1 } qw( a b c d e f);
delete $hash{c};
lock_keys(%hash);
ok(Internals::SvREADONLY(%hash), 'lock_keys');
# we do this skip here just to make sure lock_keys is correctly setup.
skip "Cant tell if a key is locked in 5.8.0", $XTRA - 1
if $] == 5.008;
delete @hash{qw(b e)};
my @hidden= sort(hidden_keys(%hash));
my @legal= sort(legal_keys(%hash));
my @keys= sort(keys(%hash));
#warn "@legal\n@keys\n";
is("@hidden", "b e", 'lock_keys @hidden');
is("@legal", "a b d e f", 'lock_keys @legal');
( run in 0.870 second using v1.01-cache-2.11-cpan-49f99fa48dc )