| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * Test: Nette\Utils\Json::encode()
- */
- declare(strict_types=1);
- use Nette\Utils\Json;
- use Tester\Assert;
- require __DIR__ . '/../bootstrap.php';
- Assert::same('"ok"', Json::encode('ok'));
- Assert::exception(
- fn() => Json::encode(["bad utf\xFF"]),
- Nette\Utils\JsonException::class,
- 'Malformed UTF-8 characters, possibly incorrectly encoded',
- );
- Assert::exception(function () {
- $arr = ['recursive'];
- $arr[] = &$arr;
- Json::encode($arr);
- }, Nette\Utils\JsonException::class, '%a?%ecursion detected');
- // default JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES
- Assert::same("\"/I\u{F1}t\u{EB}rn\u{E2}ti\u{F4}n\u{E0}liz\u{E6}ti\u{F8}n\"", Json::encode("/I\u{F1}t\u{EB}rn\u{E2}ti\u{F4}n\u{E0}liz\u{E6}ti\u{F8}n"));
- Assert::same('"\u2028\u2029"', Json::encode("\u{2028}\u{2029}"));
- // ESCAPE_UNICODE
- Assert::same('"/I\u00f1t\u00ebrn\u00e2ti\u00f4n\u00e0liz\u00e6ti\u00f8n"', Json::encode("/I\u{F1}t\u{EB}rn\u{E2}ti\u{F4}n\u{E0}liz\u{E6}ti\u{F8}n", Json::ESCAPE_UNICODE));
- Assert::same('"\u2028\u2029"', Json::encode("\u{2028}\u{2029}", Json::ESCAPE_UNICODE));
- Assert::same('"\u2028\u2029"', Json::encode("\u{2028}\u{2029}", asciiSafe: true));
- // JSON_PRETTY_PRINT
- Assert::same("[\n 1,\n 2,\n 3\n]", Json::encode([1, 2, 3], Json::PRETTY));
- Assert::same("[\n 1,\n 2,\n 3\n]", Json::encode([1, 2, 3], pretty: true));
- // force objects
- Assert::same('{"0":1,"1":2,"2":3}', Json::encode([1, 2, 3], forceObjects: true));
- // HTML-safe
- Assert::same('"\u003C \u0022 \u0027 \u003E \u0026"', Json::encode("< \" ' > &", htmlSafe: true));
- Assert::exception(
- fn() => Json::encode(NAN),
- Nette\Utils\JsonException::class,
- 'Inf and NaN cannot be JSON encoded',
- );
- // JSON_PRESERVE_ZERO_FRACTION
- Assert::same(defined('JSON_PRESERVE_ZERO_FRACTION') ? '1.0' : '1', Json::encode(1.0));
- // JSON_* constants support
- Assert::same('"\u003Ca\u003E"', Json::encode('<a>', JSON_HEX_TAG));
|