1#!perl -w
2
3use strict;
4use Test qw(plan ok);
5plan tests => 39;
6
7use Data::Dump qw(dumpf);
8
9ok(dumpf("foo", sub { return { dump => "x" }}), 'x');
10ok(dumpf("foo", sub { return { object => "x" }}), '"x"');
11ok(dumpf("foo", sub { return { comment => "x" }}), "# x\n\"foo\"");
12ok(dumpf({},    sub { return { bless => "x"}}), "bless({}, \"x\")");
13ok(dumpf({a => 1, b => 2}, sub { return { hide_keys => ["b"] }}), "{ a => 1 }");
14ok(dumpf("foo", sub { return }), '"foo"');
15
16my $cb_count = 0;
17ok(dumpf("foo", sub {
18    my($ctx, $obj) = @_;
19    $cb_count++;
20    ok($$obj, "foo");
21    ok($ctx->object_ref, $obj);
22    ok($ctx->class, "");
23    ok(!$ctx->object_isa("SCALAR"));
24    ok($ctx->container_class, "");
25    ok(!$ctx->container_isa("SCALAR"));
26    ok($ctx->container_self, "");
27    ok(!$ctx->is_ref);
28    ok(!$ctx->is_blessed);
29    ok(!$ctx->is_array);
30    ok(!$ctx->is_hash);
31    ok( $ctx->is_scalar);
32    ok(!$ctx->is_code);
33    ok($ctx->depth, 0);
34    return;
35}), '"foo"');
36ok($cb_count, 1);
37
38$cb_count = 0;
39ok(dumpf(bless({ a => 1, b => bless {}, "Bar"}, "Foo"), sub {
40    my($ctx, $obj) = @_;
41    $cb_count++;
42    return unless $ctx->object_isa("Bar");
43    ok(ref($obj), "Bar");
44    ok($ctx->object_ref, $obj);
45    ok($ctx->class, "Bar");
46    ok($ctx->object_isa("Bar"));
47    ok(!$ctx->object_isa("Foo"));
48    ok($ctx->container_class, "Foo");
49    ok($ctx->container_isa("Foo"));
50    ok($ctx->container_self, '$self->{b}');
51    ok($ctx->is_ref);
52    ok($ctx->is_blessed);
53    ok(!$ctx->is_array);
54    ok($ctx->is_hash);
55    ok(!$ctx->is_scalar);
56    ok(!$ctx->is_code);
57    ok($ctx->depth, 1);
58    return;
59}) =~ /^bless\(.*, "Foo"\)\z/);
60ok($cb_count, 3);
61