<?php declare(strict_types = 0); /* ** Zabbix ** Copyright (C) 2001-2025 Zabbix SIA ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ require_once __DIR__.'/../../../include/js.inc.php'; use PHPUnit\Framework\TestCase; class zbxjsvalueTest extends TestCase { public static function dataProvider() { $return_as_object = true; return [ [ $return_as_object, true, 'true' ], [ !$return_as_object, true, 'true' ], [ $return_as_object, null, 'null' ], [ !$return_as_object, null, 'null' ], [ $return_as_object, -10, '-10' ], [ !$return_as_object, -10, '-10' ], [ $return_as_object, 100, '100' ], [ !$return_as_object, 100, '100' ], [ $return_as_object, [], '{}' ], [ !$return_as_object, [], '[]' ], [ $return_as_object, '', "''" ], [ !$return_as_object, '', "''" ], [ $return_as_object, ['key-with-dash' => 'value'], '{"key-with-dash":\'value\'}' ], [ !$return_as_object, ['key-with-dash' => 'value'], '{"key-with-dash":\'value\'}' ], [ $return_as_object, ['key-with-quotes-\'"' => 'value'], '{"key-with-quotes-\\\'\\"":\'value\'}' ], [ !$return_as_object, ['key-with-quotes-\'"' => 'value'], '{"key-with-quotes-\\\'\\"":\'value\'}' ], [ $return_as_object, [-1 => ['agent_string', 'another_string']], '{"-1":{"0":\'agent_string\',"1":\'another_string\'}}' ], [ !$return_as_object, // JSON implementation will return slightly different result : // {"-1":[\'agent_string\',\'another_string\']} [-1 => ['agent_string', 'another_string']], '[[\'agent_string\',\'another_string\']]' ] ]; } /** * @dataProvider dataProvider * * @param bool $as_object * @param array|string|int|bool $source * @param string $expected */ public function testZbxJsvalue($as_object, $source, $expected) { $encoded = zbx_jsvalue($source, $as_object); $this->assertSame($expected, $encoded); } }