<?php
$fmt = "%-12s %-20s %-20s %-10s %-5s\n";
function json_cmp($x, $y)
{
global $fmt;
$error = array("-", "FAIL");
printf($fmt,
var_export($x, true),
str_replace("\n", "", var_export($y, true)),
str_replace("\n", "", var_export(json_decode($x), true)),
$error[json_last_error() > 0],
$error[json_decode($x) !== $y]
);
}
printf($fmt, "JSON", "Expected", "Actual", "JSON_ERROR", "PASS");
printf("----------------------------------------------------------------------
\n");
// works
json_cmp("true", true);
// fails - is actually true
json_cmp("tRue", NULL);
// fails - is actually NULL
json_cmp("true ", true);
// works
json_cmp("[true ] ", array(true));
json_cmp("[ true ] ", array(true));
json_cmp("[true] ", array(true));
// works, even though the non-array version fails
json_cmp("[tRue]", NULL);
json_cmp("0", 0);
json_cmp("1", 1);
json_cmp("false", false);
json_cmp("'foo'", NULL);
json_cmp('"foo"', "foo");
json_cmp('1.123', 1.123);
json_cmp('1.123 ', 1.123);
json_cmp(' 1.123', 1.123);
json_cmp('42', 42);
json_cmp('42 ', 42);
json_cmp(' 42', 42);
json_cmp(".123", 0.123);
preferences:
37.39 ms | 402 KiB | 5 Q