use t::TestYAML tests => 29, ( ($] < 5.008) ? (todo => [19..20, 26..29]) : () ); ok(YAML::Syck->VERSION); is(Dump(bless({}, 'foo')), "--- !!perl/hash:foo {}\n\n"); sub ref_ok { my $x = Load("--- $_[0] {a: b}\n"); is(ref($x), $_[1], "ref - $_[0]"); is($x->{a}, 'b', "data - $_[0]"); } sub run_ref_ok { ref_ok(splice(@_, 0, 2)) while @_; } run_ref_ok(qw( !!perl/hash:foo foo !perl/foo foo !hs/Foo hs::Foo !haskell.org/Foo haskell.org::Foo !haskell.org/^Foo haskell.org::Foo !!perl HASH !!moose moose )); my $rx = qr/123/; is(Dump($rx), "--- !!perl/regexp (?-xism:123)\n"); is(Dump(Load(Dump($rx))), "--- !!perl/regexp (?-xism:123)\n"); my $rx_obj = bless qr/123/i => 'Foo'; is(Dump($rx_obj), "--- !!perl/regexp:Foo (?i-xsm:123)\n"); is(Dump(Load(Dump($rx_obj))), "--- !!perl/regexp:Foo (?i-xsm:123)\n"); my $obj = bless(\(my $undef) => 'Foo'); is(Dump($obj), "--- !!perl/scalar:Foo ~\n"); is(Dump(Load(Dump($obj))), "--- !!perl/scalar:Foo ~\n"); is(Dump(bless({1..10}, 'foo')), "--- !!perl/hash:foo \n1: 2\n3: 4\n5: 6\n7: 8\n9: 10\n"); $YAML::Syck::UseCode = 1; { my $hash = Load(Dump(bless({1 .. 4}, "code"))); is(ref($hash), "code", "blessed to code"); is(eval { $hash->{1} }, 2, "it's a hash"); } { my $sub = eval { Load(Dump(bless(sub { 42 }, "foobar"))) }; is(ref($sub), "foobar", "blessed to foobar"); is(eval { $sub->() }, 42, "it's a CODE"); } { my $sub = eval { Load(Dump(bless(sub { 42 }, "code"))) }; is(ref($sub), "code", "blessed to code"); is(eval { $sub->() }, 42, "it's a CODE"); } exit;