BiliHelper-personal/packages/flintstone/tests/Formatter/JsonFormatterTest.php
2025-02-18 16:13:22 +08:00

74 lines
1.6 KiB
PHP

<?php
use Flintstone\Formatter\JsonFormatter;
class JsonFormatterTest extends \PHPUnit\Framework\TestCase
{
/**
* @var JsonFormatter
*/
private $formatter;
protected function setUp(): void
{
$this->formatter = new JsonFormatter();
}
/**
* @test
* @dataProvider validData
*/
public function encodesValidData($originalValue, $encodedValue)
{
$this->assertSame($encodedValue, $this->formatter->encode($originalValue));
}
/**
* @test
* @dataProvider validData
*/
public function decodesValidData($originalValue, $encodedValue)
{
$this->assertSame($originalValue, $this->formatter->decode($encodedValue));
}
/**
* @test
*/
public function decodesAnObject()
{
$originalValue = (object)['foo' => 'bar'];
$formatter = new JsonFormatter(false);
$encodedValue = $formatter->encode($originalValue);
$this->assertEquals($originalValue, $formatter->decode($encodedValue));
}
/**
* @test
*/
public function encodingInvalidDataThrowsException()
{
$this->expectException(\Flintstone\Exception::class);
$this->formatter->encode(chr(241));
}
/**
* @test
*/
public function decodingInvalidDataThrowsException()
{
$this->expectException(\Flintstone\Exception::class);
$this->formatter->decode('{');
}
public function validData(): array
{
return [
[null, 'null'],
[1, '1'],
['foo', '"foo"'],
[["test", "new\nline"], '["test","new\nline"]'],
];
}
}