-#!/usr/bin/perl
-
use strict;
use warnings;
-use Test::More tests => 25;
-use Test::Exception;
+use Test::More;
+use Test::Fatal;
use Test::Deep;
+use Test::Requires {
+ 'Digest' => 0.01, # skip all if not installed
+ 'Digest::SHA' => 0.00,
+ 'JSON::Any' => 0.01,
+};
+
BEGIN {
+ plan tests => 26;
use_ok('MooseX::Storage');
}
{
-
package Foo;
use Moose;
use MooseX::Storage;
object => Foo->new( number => 2 ),
);
isa_ok( $foo, 'Foo' );
-
+
my $packed = $foo->pack;
-
+
cmp_deeply(
$packed,
{
float => 10.5,
array => [ 1 .. 10 ],
hash => { map { $_ => undef } ( 1 .. 10 ) },
- object => {
- __CLASS__ => 'Foo',
- __DIGEST__ => re('[0-9a-f]+'),
- number => 2
- },
+ object => {
+ __CLASS__ => 'Foo',
+ __DIGEST__ => re('[0-9a-f]+'),
+ number => 2
+ },
},
'... got the right frozen class'
);
my $foo2;
- lives_ok {
+ is( exception {
$foo2 = Foo->unpack($packed);
- } '... unpacked okay';
+ }, undef, '... unpacked okay');
isa_ok($foo2, 'Foo');
-
+
cmp_deeply(
$foo2->pack,
{
float => 10.5,
array => [ 1 .. 10 ],
hash => { map { $_ => undef } ( 1 .. 10 ) },
- object => {
- __CLASS__ => 'Foo',
- __DIGEST__ => re('[0-9a-f]+'),
- number => 2
- },
+ object => {
+ __CLASS__ => 'Foo',
+ __DIGEST__ => re('[0-9a-f]+'),
+ number => 2
+ },
},
'... got the right frozen class'
- );
+ );
}
{
SKIP: {
eval { require Digest::HMAC_SHA1 };
- skip join( " ", "no Digest::HMAC", ( $@ =~ /\@INC/ ? () : do { chomp(my $e = $@); "($e)" } ) ), 14 if $@;
+ skip join( " ", "no Digest::HMAC", ( $@ =~ /\@INC/ ? () : do { chomp(my $e = $@); "($e)" } ) ), 15 if $@;
+
+ local $::DEBUG = 1;
my $foo = Foo->new(
number => 10,
);
isa_ok( $foo, 'Foo' );
- my $frozen1 = $foo->freeze( "HMAC_SHA1", "secret" );
+ my $frozen1 = $foo->freeze( digest => [ "HMAC_SHA1", "secret" ] );
ok( length($frozen1), "got frozen data" );
+ $::DEBUG = 0;
+
my $d2 = Digest::HMAC_SHA1->new("s3cr3t");
- my $frozen2 = $foo->freeze( $d2 );
+ my $frozen2 = $foo->freeze( digest => $d2 );
ok( length($frozen2), "got frozen data" );
cmp_ok( $frozen1, "ne", $frozen2, "versions are different" );
- my $foo1 = eval { Foo->thaw( $frozen1, "HMAC_SHA1", "secret" ) };
+ is( $frozen1, $foo->freeze( digest => [ HMAC_SHA1 => "secret" ] ), "refreeze" );
+
+$::DEBUG = 1;
+
+ my $foo1 = eval { Foo->thaw( $frozen1, digest => [ "HMAC_SHA1", "secret" ] ) };
my $e = $@;
ok( $foo1, "thawed" );
ok( !$e, "no error" ) || diag $e;
-
- my $foo2 = eval { Foo->thaw( $frozen2, $d2 ) };
+
+ my $foo2 = eval { Foo->thaw( $frozen2, digest => $d2 ) };
$e = $@;
ok( $foo2, "thawed" );
ok( !$e, "no error" ) || diag $e;
- $foo1 = eval { Foo->thaw( $frozen1, $d2 ) };
+ $foo1 = eval { Foo->thaw( $frozen1, digest => $d2 ) };
$e = $@;
ok( !$foo1, "not thawed" );
$frozen1 =~ s/foo/bar/;
- $foo1 = eval { Foo->thaw( $frozen1, "HMAC_SHA1", "secret" ) };
+ $foo1 = eval { Foo->thaw( $frozen1, digest => [ "HMAC_SHA1", "secret" ] ) };
$e = $@;
ok( !$foo1, "not thawed" );