1use strict;
2use warnings;
3use Test::More;
4use HTTP::Entity::Parser::JSON;
5use Hash::MultiValue;
6use utf8;
7
8my $parser = HTTP::Entity::Parser::JSON->new();
9$parser->add('{');
10$parser->add('"hoge":["fuga","hige","\u306b\u307b\u3093\u3054"],');
11$parser->add('"moji":{"kanji":{"ji":"\u5b57"}},');
12$parser->add('"\u306b\u307b\u3093\u3054":"\u65e5\u672c\u8a9e",');
13$parser->add('"shallow":[{"deeper": "sunk"}],');
14$parser->add('"moge":"muga"');
15$parser->add('}');
16
17my ($params, $uploads) = $parser->finalize();
18is_deeply(Hash::MultiValue->new(@$params)->as_hashref_mixed,
19  +{
20    'hoge'     => [ 'fuga', 'hige', Encode::encode_utf8('にほんご') ],
21    'moge'     => 'muga',
22    'moji'     => { 'kanji' => { 'ji' => Encode::encode_utf8('字') } },
23    'shallow'  => [ { 'deeper' => 'sunk' } ],
24    Encode::encode_utf8('にほんご') => Encode::encode_utf8('日本語'),
25  });
26is_deeply $uploads, [];
27
28done_testing;
29
30