1#!perl -w
2
3use strict;
4use Test qw(plan ok);
5plan tests => 37;
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    return;
34}), '"foo"');
35ok($cb_count, 1);
36
37$cb_count = 0;
38ok(dumpf(bless({ a => 1, b => bless {}, "Bar"}, "Foo"), sub {
39    my($ctx, $obj) = @_;
40    $cb_count++;
41    return unless $ctx->object_isa("Bar");
42    ok(ref($obj), "Bar");
43    ok($ctx->object_ref, $obj);
44    ok($ctx->class, "Bar");
45    ok($ctx->object_isa("Bar"));
46    ok(!$ctx->object_isa("Foo"));
47    ok($ctx->container_class, "Foo");
48    ok($ctx->container_isa("Foo"));
49    ok($ctx->container_self, '$self->{b}');
50    ok($ctx->is_ref);
51    ok($ctx->is_blessed);
52    ok(!$ctx->is_array);
53    ok($ctx->is_hash);
54    ok(!$ctx->is_scalar);
55    ok(!$ctx->is_code);
56    return;
57}) =~ /^bless\(.*, "Foo"\)\z/);
58ok($cb_count, 3);
59