X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F060_basic_deferred.t;h=87964033f9da72538095eaf06f7426a6ee0c34ea;hb=c2d52f94beb56939250944a12df15d7d90779866;hp=c8bbe33bd7ef6a2b0a1ed9b7ea755167892506de;hpb=f5f21f1d7a779ab86ca5981ae3e716effd8325ca;p=gitmo%2FMooseX-Storage.git diff --git a/t/060_basic_deferred.t b/t/060_basic_deferred.t index c8bbe33..8796403 100644 --- a/t/060_basic_deferred.t +++ b/t/060_basic_deferred.t @@ -1,27 +1,25 @@ -#!/usr/bin/perl - $|++; use strict; use warnings; use Test::More; +use Test::Deep; use Storable; +use Test::Requires { + 'Test::Deep::JSON' => 0, # skip all if not installed + 'JSON::Any' => 0.01, + 'YAML::Any' => 0.01, +}; + BEGIN { - eval "use Test::JSON"; - plan skip_all => "Test::JSON is required for this test" if $@; - eval "use JSON::Any"; - plan skip_all => "JSON::Any is required for this test" if $@; - eval "use YAML::Any"; - plan skip_all => "YAML::Any is required for this test" if $@; - plan tests => 31; + plan tests => 30; use_ok('MooseX::Storage'); } diag('Using implementation: ', YAML::Any->implementation); { - package Foo; use Moose; use MooseX::Storage; @@ -49,11 +47,20 @@ diag('Using implementation: ', YAML::Any->implementation); my $json = $foo->freeze({ 'format' => 'JSON' }); - is_valid_json($json, '.. this is valid JSON'); - - is_json( + cmp_deeply( $json, -'{"array":[1,2,3,4,5,6,7,8,9,10],"hash":{"6":null,"3":null,"7":null,"9":null,"2":null,"8":null,"1":null,"4":null,"10":null,"5":null},"float":10.5,"object":{"number":2,"__CLASS__":"Foo"},"number":10,"__CLASS__":"Foo","string":"foo"}', + json({ + number => 10, + string => 'foo', + float => 10.5, + array => [ 1 .. 10 ], + hash => { map { $_ => undef } ( 1 .. 10 ) }, + __CLASS__ => 'Foo', + object => { + number => 2, + __CLASS__ => 'Foo' + }, + }), '... got the right JSON' ); } @@ -61,15 +68,15 @@ diag('Using implementation: ', YAML::Any->implementation); { my $foo = Foo->thaw( '{"array":[1,2,3,4,5,6,7,8,9,10],"hash":{"6":null,"3":null,"7":null,"9":null,"2":null,"8":null,"1":null,"4":null,"10":null,"5":null},"float":10.5,"object":{"number":2,"__CLASS__":"Foo"},"number":10,"__CLASS__":"Foo","string":"foo"}', - { 'format' => 'JSON' } + { 'format' => 'JSON' } ); isa_ok( $foo, 'Foo' ); is( $foo->number, 10, '... got the right number' ); is( $foo->string, 'foo', '... got the right string' ); is( $foo->float, 10.5, '... got the right float' ); - is_deeply( $foo->array, [ 1 .. 10 ], '... got the right array' ); - is_deeply( + cmp_deeply( $foo->array, [ 1 .. 10 ], '... got the right array' ); + cmp_deeply( $foo->hash, { map { $_ => undef } ( 1 .. 10 ) }, '... got the right hash' @@ -90,19 +97,19 @@ diag('Using implementation: ', YAML::Any->implementation); object => Foo->new( number => 2 ), ); isa_ok( $foo, 'Foo' ); - + my $stored = $foo->freeze({ 'format' => 'Storable' }); my $struct = Storable::thaw($stored); - is_deeply( + cmp_deeply( $struct, { '__CLASS__' => 'Foo', 'float' => 10.5, 'number' => 10, - 'string' => 'foo', + 'string' => 'foo', 'array' => [ 1 .. 10], - 'hash' => { map { $_ => undef } 1 .. 10 }, + 'hash' => { map { $_ => undef } 1 .. 10 }, 'object' => { '__CLASS__' => 'Foo', 'number' => 2 @@ -117,23 +124,23 @@ diag('Using implementation: ', YAML::Any->implementation); '__CLASS__' => 'Foo', 'float' => 10.5, 'number' => 10, - 'string' => 'foo', + 'string' => 'foo', 'array' => [ 1 .. 10], - 'hash' => { map { $_ => undef } 1 .. 10 }, + 'hash' => { map { $_ => undef } 1 .. 10 }, 'object' => { '__CLASS__' => 'Foo', 'number' => 2 }, }); - + my $foo = Foo->thaw($stored, { 'format' => 'Storable' }); isa_ok( $foo, 'Foo' ); is( $foo->number, 10, '... got the right number' ); is( $foo->string, 'foo', '... got the right string' ); is( $foo->float, 10.5, '... got the right float' ); - is_deeply( $foo->array, [ 1 .. 10 ], '... got the right array' ); - is_deeply( + cmp_deeply( $foo->array, [ 1 .. 10 ], '... got the right array' ); + cmp_deeply( $foo->hash, { map { $_ => undef } ( 1 .. 10 ) }, '... got the right hash' @@ -163,8 +170,8 @@ diag('Using implementation: ', YAML::Any->implementation); is( $bar->number, 10, '... got the right number' ); is( $bar->string, 'foo', '... got the right string' ); is( $bar->float, 10.5, '... got the right float' ); - is_deeply( $bar->array, [ 1 .. 10 ], '... got the right array' ); - is_deeply( + cmp_deeply( $bar->array, [ 1 .. 10 ], '... got the right array' ); + cmp_deeply( $bar->hash, { map { $_ => undef } ( 1 .. 10 ) }, '... got the right hash'