ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/JSON-XS/t/08_pc_base.t
Revision: 1.1
Committed: Fri Mar 23 15:10:56 2007 UTC (17 years, 3 months ago) by root
Content type: application/x-troff
Branch: MAIN
CVS Tags: rel-0_31, rel-0_3
Log Message:
*** empty log message ***

File Contents

# Content
1 use Test::More;
2
3 # copied over from JSON::PC and modified to use JSON::XS
4
5 use strict;
6 BEGIN { plan tests => 22 };
7 use JSON::XS;
8
9 my ($js,$obj);
10
11 my $pc = new JSON::XS;
12
13 $js = q|{}|;
14
15 $obj = $pc->decode($js);
16 $js = $pc->encode($obj);
17 is($js,'{}', '{}');
18
19 $js = q|[]|;
20 $obj = $pc->decode($js);
21 $js = $pc->encode($obj);
22 is($js,'[]', '[]');
23
24
25 $js = q|{"foo":"bar"}|;
26 $obj = $pc->decode($js);
27 is($obj->{foo},'bar');
28 $js = $pc->encode($obj);
29 is($js,'{"foo":"bar"}', '{"foo":"bar"}');
30
31 $js = q|{"foo":""}|;
32 $obj = $pc->decode($js);
33 $js = $pc->encode($obj);
34 is($js,'{"foo":""}', '{"foo":""}');
35
36 $js = q|{"foo":" "}|;
37 $obj = $pc->decode($js);
38 $js = $pc->encode($obj);
39 is($js,'{"foo":" "}' ,'{"foo":" "}');
40
41 $js = q|{"foo":"0"}|;
42 $obj = $pc->decode($js);
43 $js = $pc->encode($obj);
44 is($js,'{"foo":"0"}',q|{"foo":"0"} - autoencode (default)|);
45
46
47 $js = q|{"foo":"0 0"}|;
48 $obj = $pc->decode($js);
49 $js = $pc->encode($obj);
50 is($js,'{"foo":"0 0"}','{"foo":"0 0"}');
51
52 $js = q|[1,2,3]|;
53 $obj = $pc->decode($js);
54 is($obj->[1],2);
55 $js = $pc->encode($obj);
56 is($js,'[1,2,3]');
57
58 $js = q|{"foo":{"bar":"hoge"}}|;
59 $obj = $pc->decode($js);
60 is($obj->{foo}->{bar},'hoge');
61 $js = $pc->encode($obj);
62 is($js,q|{"foo":{"bar":"hoge"}}|);
63
64 $js = q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|;
65 $obj = $pc->decode($js);
66 $js = $pc->encode($obj);
67 is($js,q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|);
68
69
70 $obj = ["\x01"];
71 is($js = $pc->encode($obj),'["\\u0001"]');
72 $obj = $pc->decode($js);
73 is($obj->[0],"\x01");
74
75 $obj = ["\e"];
76 is($js = $pc->encode($obj),'["\\u001b"]');
77 $obj = $pc->decode($js);
78 is($obj->[0],"\e");
79
80 $js = '{"id":"}';
81 eval q{ $pc->decode($js) };
82 like($@, qr/unexpected end/i);
83
84 $obj = { foo => sub { "bar"; } };
85 eval q{ $js = $pc->encode($obj) };
86 like($@, qr/JSON can only/i, 'invalid value (coderef)');
87
88
89 $obj = { foo => *STDERR };
90 $js = $pc->encode($obj);
91 is($js, '{"foo":"*main::STDERR"}', "type blog");
92
93 $obj = { foo => \*STDERR };
94 eval q{ $js = $pc->encode($obj) };
95 like($@, qr/JSON can only/i, 'invalid value (ref of type blog)');
96
97 #$obj = { foo => bless {}, "Hoge" };
98 #eval q{ $js = $pc->encode($obj) };
99 #like($@, qr/JSON can only/i, 'invalid value (blessd object)');
100
101 $obj = { foo => \$js };
102 eval q{ $js = $pc->encode($obj) };
103 like($@, qr/JSON can only/i, 'invalid value (ref)');
104