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

# User Rev Content
1 root 1.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