now with thaw as well as freeze, see TODOs
[gitmo/MooseX-Storage.git] / t / 001_basic.t
CommitLineData
e59193fb 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More no_plan => 1;
7
8{
9 package Foo;
10 use Moose;
11 use MooseX::Storage;
12
13 with Storage('JSON');
14
15 has 'number' => (is => 'ro', isa => 'Int');
16 has 'string' => (is => 'ro', isa => 'Str');
e9739624 17 has 'float' => (is => 'ro', isa => 'Num');
18 has 'array' => (is => 'ro', isa => 'ArrayRef');
19 has 'hash' => (is => 'ro', isa => 'HashRef');
e59193fb 20 has 'object' => (is => 'ro', isa => 'Object');
21}
22
23my $foo = Foo->new(
24 number => 10,
25 string => 'foo',
26 float => 10.5,
e9739624 27 array => [ 1 .. 10 ],
28 hash => { map { $_ => undef } (1 .. 10) },
e59193fb 29 object => Foo->new( number => 2 ),
30);
31
e9739624 32is($foo->freeze,
33'{"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"}',
34'... got the right JSON');
35
36my $foo2 = 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"}');
37isa_ok($foo2, 'Foo');
38
39is($foo2->number, 10, '... got the right number');
40is($foo2->string, 'foo', '... got the right string');
41is($foo2->float, 10.5, '... got the right float');
42is_deeply($foo2->array, [ 1 .. 10], '... got the right array');
43is_deeply($foo2->hash, { map { $_ => undef } (1 .. 10) }, '... got the right hash');
44
45isa_ok($foo2->object, 'Foo');
46is($foo2->object->number, 2, '... got the right number (in the embedded object)');
e59193fb 47