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