Skip to content

Commit 0b877b6

Browse files
committed
refactor: refactored tests
1 parent 52df0e5 commit 0b877b6

File tree

10 files changed

+102
-89
lines changed

10 files changed

+102
-89
lines changed

tests/BinariableTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
namespace PetrKnap\Binary;
66

77
use PHPUnit\Framework\Attributes\DataProvider;
8-
use PHPUnit\Framework\TestCase;
98

109
final class BinariableTest extends TestCase
1110
{
1211
public const BINARY = b'binary';
1312

1413
public function testNativeConversionWorks(): void
1514
{
16-
self::assertSame(
15+
self::assertBinarySame(
1716
self::BINARY,
1817
(string) self::getInstance(),
1918
);
@@ -27,7 +26,7 @@ public function testNativeComparisonWorks(): void
2726
#[DataProvider('unionTypeDataProvider')]
2827
public function testConversionHelperWorks(BinariableInterface|string $data): void
2928
{
30-
self::assertSame(
29+
self::assertBinarySame(
3130
self::BINARY,
3231
Binary::asBinary($data),
3332
);

tests/ByterTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
namespace PetrKnap\Binary;
66

77
use PHPUnit\Framework\Attributes\DataProvider;
8-
use PHPUnit\Framework\TestCase;
98

109
final class ByterTest extends TestCase
1110
{
@@ -43,7 +42,7 @@ public function testBiteThrowsWhenThereIsNotEnoughData(): void
4342

4443
public function testUnbitesBites(): void
4544
{
46-
self::assertSame(
45+
self::assertBinarySame(
4746
self::getData(),
4847
(new Byter())->unbite(hex2bin('0102'), hex2bin('030405')),
4948
);

tests/Coder/CoderTestCase.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace PetrKnap\Binary\Coder;
66

77
use LogicException;
8-
use PHPUnit\Framework\TestCase;
8+
use PetrKnap\Binary\TestCase;
99

1010
abstract class CoderTestCase extends TestCase
1111
{
@@ -25,9 +25,4 @@ public static function getEncodedData(): string
2525
}
2626
throw new LogicException('Empty data set.');
2727
}
28-
29-
final protected static function assertBinarySame(string $expected, string $actual): void
30-
{
31-
self::assertSame(bin2hex($expected), bin2hex($actual));
32-
}
3328
}

tests/DecoderTest.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,35 @@
44

55
namespace PetrKnap\Binary;
66

7-
use PHPUnit\Framework\TestCase;
8-
97
final class DecoderTest extends TestCase
108
{
119
public function testDecodesBase64(): void
1210
{
13-
self::assertSame(
11+
self::assertBinarySame(
1412
Coder\Base64Test::getDecodedData(),
1513
(new Decoder(Coder\Base64Test::getEncodedData()))->base64()->data,
1614
);
1715
}
1816

1917
public function testDecodesChecksum(): void
2018
{
21-
self::assertSame(
19+
self::assertBinarySame(
2220
Coder\ChecksumTest::getDecodedData(),
2321
(new Decoder(Coder\ChecksumTest::getEncodedData()))->checksum()->data,
2422
);
2523
}
2624

2725
public function testDecodesHex(): void
2826
{
29-
self::assertSame(
27+
self::assertBinarySame(
3028
Coder\HexTest::getDecodedData(),
3129
(new Decoder(Coder\HexTest::getEncodedData()))->hex()->data,
3230
);
3331
}
3432

3533
public function testDecodesZlib(): void
3634
{
37-
self::assertSame(
35+
self::assertBinarySame(
3836
Coder\ZlibTest::getDecodedData(),
3937
(new Decoder(Coder\ZlibTest::getEncodedData()))->zlib()->data,
4038
);

tests/EncoderTest.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,35 @@
44

55
namespace PetrKnap\Binary;
66

7-
use PHPUnit\Framework\TestCase;
8-
97
final class EncoderTest extends TestCase
108
{
119
public function testEncodesBase64(): void
1210
{
13-
self::assertSame(
11+
self::assertBinarySame(
1412
Coder\Base64Test::getEncodedData(),
1513
(new Encoder(Coder\Base64Test::getDecodedData()))->base64()->data,
1614
);
1715
}
1816

1917
public function testEncodesChecksum(): void
2018
{
21-
self::assertSame(
19+
self::assertBinarySame(
2220
Coder\ChecksumTest::getEncodedData(),
2321
(new Encoder(Coder\ChecksumTest::getDecodedData()))->checksum()->data,
2422
);
2523
}
2624

2725
public function testEncodesHex(): void
2826
{
29-
self::assertSame(
27+
self::assertBinarySame(
3028
Coder\HexTest::getEncodedData(),
3129
(new Encoder(Coder\HexTest::getDecodedData()))->hex()->data,
3230
);
3331
}
3432

3533
public function testEncodesZlib(): void
3634
{
37-
self::assertSame(
35+
self::assertBinarySame(
3836
Coder\ZlibTest::getEncodedData(),
3937
(new Encoder(Coder\ZlibTest::getDecodedData()))->zlib()->data,
4038
);

tests/Serializer/SelfSerializerTest.php

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,53 @@
44

55
namespace PetrKnap\Binary\Serializer;
66

7-
use PHPUnit\Framework\TestCase;
7+
use PetrKnap\Binary\TestCase;
8+
use stdClass;
89

910
final class SelfSerializerTest extends TestCase
1011
{
12+
private const SERIALIZED_INSTANCE_B64 = 'S7QysarOtDKwzrQyBGN/KwsrpeKSFOecxOJiJStDq+piK2MrpbT8fCVrMCspsUjJujbTygjINTQxtVLy3mK0cdW5LUYbgJgpyTm7Xptbe+mjSSLP5xx5lKSq7bz6VZJ2svbSLX9qVLMNtDU3epzcJbZkz41Td454nazuvngs9Pk2iVyGpG0qz99U5ea9Xdqv1mkzv/hJ4KRV2z6/Cve8dfKW9/Y/KwPPml24dudFYdH0m0+D1fM+ro+sfHxFVt/XO9W5Njo4jNeNTXUBc8/av2uyGZWAHjG29rOuBQA=';
13+
1114
public function testSerializationWorks(): void
1215
{
13-
self::assertEquals(
14-
SelfSerializingDataObject::BINARY_B64,
15-
base64_encode(SelfSerializingDataObject::getInstance()->toBinary()),
16+
self::assertBinarySame(
17+
base64_decode(self::SERIALIZED_INSTANCE_B64),
18+
self::getInstance()->toBinary(),
1619
);
1720
}
1821

1922
public function testUnserializationWorks(): void
2023
{
2124
self::assertEquals(
22-
SelfSerializingDataObject::getInstance(),
23-
SelfSerializingDataObject::fromBinary(base64_decode(SelfSerializingDataObject::BINARY_B64)),
25+
self::getInstance(),
26+
Some\SelfSerializer::fromBinary(base64_decode(self::SERIALIZED_INSTANCE_B64)),
2427
);
2528
}
29+
30+
private static function getInstance(): SelfSerializerInterface
31+
{
32+
$stdClass = new stdClass();
33+
$stdClass->foo = 'bar';
34+
35+
$instance = new Some\SelfSerializer(
36+
1,
37+
$stdClass,
38+
new Some\SelfSerializer(
39+
2,
40+
$stdClass,
41+
new Some\SelfSerializer(
42+
3,
43+
$stdClass,
44+
null,
45+
'value',
46+
),
47+
null,
48+
),
49+
null,
50+
);
51+
52+
$instance->innerInstance->innerInstance->variable = 'changed';
53+
54+
return $instance;
55+
}
2656
}

tests/Serializer/SelfSerializingDataObject.php

Lines changed: 0 additions & 58 deletions
This file was deleted.

tests/Serializer/SerializerTestCase.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
namespace PetrKnap\Binary\Serializer;
66

7-
use PHPUnit\Framework\TestCase;
7+
use PetrKnap\Binary\TestCase;
88
use stdClass;
99

1010
abstract class SerializerTestCase extends TestCase
1111
{
1212
public function testSerializesSerializable(): void
1313
{
14-
self::assertEquals(
14+
self::assertBinarySame(
1515
static::getSerialized(),
1616
static::getSerializer()->serialize(self::getSerializable()),
1717
);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PetrKnap\Binary\Serializer\Some;
6+
7+
use PetrKnap\Binary\Serializer\SelfSerializerInterface;
8+
use PetrKnap\Binary\Serializer\SelfSerializerTrait;
9+
use stdClass;
10+
11+
final class SelfSerializer implements SelfSerializerInterface
12+
{
13+
use SelfSerializerTrait;
14+
15+
public readonly self|null $innerInstance;
16+
17+
public function __construct(
18+
public readonly int $scalar,
19+
public readonly stdClass $serializable,
20+
self|string|null $innerInstance,
21+
public mixed $variable,
22+
) {
23+
$this->innerInstance = match (is_string($innerInstance)) {
24+
true => self::fromBinary($innerInstance),
25+
false => $innerInstance,
26+
};
27+
$this->referencesToConstructorArgs = [
28+
$this->scalar,
29+
$this->serializable,
30+
$this->innerInstance,
31+
&$this->variable,
32+
];
33+
}
34+
}

tests/TestCase.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PetrKnap\Binary;
6+
7+
use PHPUnit\Framework\TestCase as Base;
8+
9+
abstract class TestCase extends Base
10+
{
11+
/**
12+
* {@see self::assertSame()} but with internal conversion to hexadecimal
13+
*/
14+
final protected static function assertBinarySame(string $expected, string $actual): void
15+
{
16+
self::assertSame(bin2hex($expected), bin2hex($actual));
17+
}
18+
}

0 commit comments

Comments
 (0)