xref: /openbsd-src/gnu/usr.bin/perl/cpan/JSON-PP/t/004_dwiw_encode.t (revision fc405d53b73a2d73393cb97f684863d17b583e38)
1# copied over from JSON::XS and modified to use JSON::PP
2
3# copied over from JSON::DWIW and modified to use JSON::PP
4
5# Creation date: 2007-02-20 19:51:06
6# Authors: don
7
8use strict;
9use warnings;
10use Test;
11
12# main
13{
14    BEGIN { plan tests => 5 }
15
16    BEGIN { $ENV{PERL_JSON_BACKEND} = 0; }
17
18use JSON::PP;
19
20    my $data;
21
22    #    my $expected_str = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var3":"val3"}';
23
24    my $expected_str1 = '{"var1":"val1","var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}]}';
25    my $expected_str2 = '{"var2":["first_element",{"sub_element":"sub_val","sub_element2":"sub_val2"}],"var1":"val1"}';
26    my $expected_str3 = '{"var2":["first_element",{"sub_element2":"sub_val2","sub_element":"sub_val"}],"var1":"val1"}';
27    my $expected_str4 = '{"var1":"val1","var2":["first_element",{"sub_element2":"sub_val2","sub_element":"sub_val"}]}';
28
29    my $json_obj = JSON::PP->new->allow_nonref (1);
30    my $json_str;
31    # print STDERR "\n" . $json_str . "\n\n";
32
33    my $expected_str;
34
35    $data = 'stuff';
36    $json_str = $json_obj->encode($data);
37    ok($json_str eq '"stuff"');
38
39    $data = "stu\nff";
40    $json_str = $json_obj->encode($data);
41    ok($json_str eq '"stu\nff"');
42
43    $data = [ 1, 2, 3 ];
44    $expected_str = '[1,2,3]';
45    $json_str = $json_obj->encode($data);
46
47    ok($json_str eq $expected_str);
48
49    $data = { var1 => 'val1', var2 => 'val2' };
50    $json_str = $json_obj->encode($data);
51
52    ok($json_str eq '{"var1":"val1","var2":"val2"}'
53       or $json_str eq '{"var2":"val2","var1":"val1"}');
54
55    $data = { var1 => 'val1',
56              var2 => [ 'first_element',
57                        { sub_element => 'sub_val', sub_element2 => 'sub_val2' },
58                      ],
59              #                 var3 => 'val3',
60            };
61
62    $json_str = $json_obj->encode($data);
63
64    ok($json_str eq $expected_str1 or $json_str eq $expected_str2
65       or $json_str eq $expected_str3 or $json_str eq $expected_str4);
66}
67
68exit 0;
69
70###############################################################################
71# Subroutines
72
73