/
AbstractNormalizerTestCase.php
67 lines (53 loc) 路 1.62 KB
/
AbstractNormalizerTestCase.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
declare(strict_types=1);
/**
* Copyright (c) 2018-2022 Andreas M枚ller
*
* For the full copyright and license information, please view
* the LICENSE.md file that was distributed with this source code.
*
* @see https://github.com/ergebnis/json-normalizer
*/
namespace Ergebnis\Json\Normalizer\Test\Unit;
use Ergebnis\Json\Normalizer\Test;
use Ergebnis\Json\Printer;
use PHPUnit\Framework;
/**
* @internal
*/
abstract class AbstractNormalizerTestCase extends Framework\TestCase
{
use Test\Util\Helper;
final protected function className(): string
{
$className = \preg_replace(
'/Test$/',
'',
\str_replace(
'Ergebnis\\Json\\Normalizer\\Test\\Unit\\',
'Ergebnis\\Json\\Normalizer\\',
static::class,
),
);
if (!\is_string($className)) {
throw new \RuntimeException(\sprintf(
'Unable to deduce source class name from test class name "%s".',
static::class,
));
}
return $className;
}
final protected static function assertJsonStringEqualsJsonStringNormalized(
string $expected,
string $actual
): void {
$printer = new Printer\Printer();
$normalize = static function (string $json) use ($printer): string {
self::assertJson($json);
$normalized = \json_encode(\json_decode($json));
self::assertIsString($normalized);
return $printer->print($normalized);
};
self::assertSame($normalize($expected), $normalize($actual));
}
}