NAME Test::JSON::Type - Test JSON data with types. SYNOPSIS use Test::JSON::Type; is_json_type($json, $json_expected, $test_name); SUBROUTINES "is_json_type" is_json_type($json, $json_expected, $test_name); This decodes $json and $json_expected JSON strings to Perl structure and return data type structure. And compare these structures, if are same. Result is success or failure of this comparison. In case of failure print difference in test. ERRORS is_json_type(): JSON string isn't valid. Error: %s JSON string to compare is required. Expected JSON string isn't valid. Error: %s Expected JSON string to compare is required. EXAMPLE1 use strict; use warnings; use Test::JSON::Type; use Test::More 'tests' => 2; my $json_blank1 = '{}'; my $json_blank2 = '{}'; is_json_type($json_blank1, $json_blank2, 'Blank JSON strings.'); my $json_struct1 = <<'END'; { "bool": true, "float": 0.23, "int": 1, "null": null, "string": "bar" } END my $json_struct2 = <<'END'; { "bool": false, "float": 1.23, "int": 2, "null": null, "string": "foo" } END is_json_type($json_struct1, $json_struct2, 'Structured JSON strings.'); # Output: # 1..2 # ok 1 - Blank JSON strings. # ok 2 - Structured JSON strings. EXAMPLE2 use strict; use warnings; use Test::JSON::Type; use Test::More 'tests' => 1; my $json_struct_err1 = <<'END'; { "int": 1, "string": "1" } END my $json_struct_err2 = <<'END'; { "int": 1, "string": 1 } END is_json_type($json_struct_err1, $json_struct_err2, 'Structured JSON strings with error.'); # Output: # 1..1 # not ok 1 - Structured JSON strings with error. # # Failed test 'Structured JSON strings with error.' # # at ./ex2.pl line 21. # # +----+--------------------------------+-----------------------------+ # # | Elt|Got |Expected | # # +----+--------------------------------+-----------------------------+ # # | 0|{ |{ | # # | 1| int => 'JSON_TYPE_INT', | int => 'JSON_TYPE_INT', | # # * 2| string => 'JSON_TYPE_STRING' | string => 'JSON_TYPE_INT' * # # | 3|} |} | # # +----+--------------------------------+-----------------------------+ # # Looks like you failed 1 test of 1. EXAMPLE3 use strict; use warnings; use Test::JSON::Type; use Test::More 'tests' => 1; my $json_struct_err1 = <<'END'; { "int": 1, "array": ["1", 1] } END my $json_struct_err2 = <<'END'; { "int": 1, "array": 1 } END is_json_type($json_struct_err1, $json_struct_err2, 'Structured JSON strings with error.'); # Output: # 1..1 # not ok 1 - Structured JSON strings with error. # # Failed test 'Structured JSON strings with error.' # # at ./ex3.pl line 21. # # +----+--------------------------+----+-----------------------------+ # # | Elt|Got | Elt|Expected | # # +----+--------------------------+----+-----------------------------+ # # | 0|{ | 0|{ | # # * 1| array => [ * 1| array => 'JSON_TYPE_INT', * # # * 2| 'JSON_TYPE_STRING', * | | # # * 3| 'JSON_TYPE_INT' * | | # # * 4| ], * | | # # | 5| int => 'JSON_TYPE_INT' | 2| int => 'JSON_TYPE_INT' | # # | 6|} | 3|} | # # +----+--------------------------+----+-----------------------------+ # # Looks like you failed 1 test of 1. DEPENDENCIES Cpanel::JSON::XS, Cpanel::JSON::XS::Type, English, Error::Pure, Readonly, Test::Builder::Module, Test::Differences. SEE ALSO Test::JSON Test JSON data Test::JSON::More JSON Test Utility REPOSITORY AUTHOR Michal Josef Špaček LICENSE AND COPYRIGHT © 2021-2022 Michal Josef Špaček BSD 2-Clause License VERSION 0.01