- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / JSON / JSON-2.59 / t / 03_types.t
1 # copied over from JSON::XS and modified to use JSON
2 use strict;
3 use Test::More;
4
5 BEGIN { plan tests => 76 };
6
7 BEGIN { $ENV{PERL_JSON_BACKEND} = "JSON::backportPP"; }
8
9 use JSON;
10
11
12 ok (!defined JSON->new->allow_nonref (1)->decode ('null'));
13 ok (JSON->new->allow_nonref (1)->decode ('true') == 1);
14 ok (JSON->new->allow_nonref (1)->decode ('false') == 0);
15
16 my $true  = JSON->new->allow_nonref (1)->decode ('true');
17 ok ($true eq 1);
18 ok (JSON::is_bool $true);
19 my $false = JSON->new->allow_nonref (1)->decode ('false');
20 ok ($false == !$true);
21 ok (JSON::is_bool $false);
22 ok (++$false == 1);
23 ok (!JSON::is_bool $false);
24
25 ok (JSON->new->allow_nonref (1)->decode ('5') == 5);
26 ok (JSON->new->allow_nonref (1)->decode ('-5') == -5);
27 ok (JSON->new->allow_nonref (1)->decode ('5e1') == 50);
28 ok (JSON->new->allow_nonref (1)->decode ('-333e+0') == -333);
29 ok (JSON->new->allow_nonref (1)->decode ('2.5') == 2.5);
30
31 ok (JSON->new->allow_nonref (1)->decode ('""') eq "");
32 ok ('[1,2,3,4]' eq encode_json decode_json ('[1,2, 3,4]'));
33 ok ('[{},[],[],{}]' eq encode_json decode_json ('[{},[], [ ] ,{ }]'));
34 ok ('[{"1":[5]}]' eq encode_json [{1 => [5]}]);
35 ok ('{"1":2,"3":4}' eq JSON->new->canonical (1)->encode (decode_json '{ "1" : 2, "3" : 4 }'));
36 ok ('{"1":2,"3":1.2}' eq JSON->new->canonical (1)->encode (decode_json '{ "1" : 2, "3" : 1.2 }'));
37
38 ok ('[true]'  eq encode_json [JSON::true]);
39 ok ('[false]' eq encode_json [JSON::false]);
40 ok ('[true]'  eq encode_json [\1]);
41 ok ('[false]' eq encode_json [\0]);
42 ok ('[null]'  eq encode_json [undef]);
43 ok ('[true]'  eq encode_json [JSON::true]);
44 ok ('[false]' eq encode_json [JSON::false]);
45
46 for my $v (1, 2, 3, 5, -1, -2, -3, -4, 100, 1000, 10000, -999, -88, -7, 7, 88, 999, -1e5, 1e6, 1e7, 1e8) {
47    ok ($v == ((decode_json "[$v]")->[0]));
48    ok ($v == ((decode_json encode_json [$v])->[0]));
49 }
50
51 ok (30123 == ((decode_json encode_json [30123])->[0]));
52 ok (32123 == ((decode_json encode_json [32123])->[0]));
53 ok (32456 == ((decode_json encode_json [32456])->[0]));
54 ok (32789 == ((decode_json encode_json [32789])->[0]));
55 ok (32767 == ((decode_json encode_json [32767])->[0]));
56 ok (32768 == ((decode_json encode_json [32768])->[0]));
57
58 my @sparse; @sparse[0,3] = (1, 4);
59 ok ("[1,null,null,4]" eq encode_json \@sparse);
60