Skip to content

Commit ea7f7be

Browse files
author
Marcin Czarnecki
committed
Add end to end tests for False types
1 parent 62f7bb4 commit ea7f7be

File tree

4 files changed

+53
-0
lines changed

4 files changed

+53
-0
lines changed

src/GraphNavigator/DeserializationGraphNavigator.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ public function accept($data, ?array $type = null)
128128

129129
case 'bool':
130130
case 'boolean':
131+
case 'false':
132+
case 'true':
131133
return $this->visitor->visitBoolean($data, $type);
132134

133135
case 'double':

tests/Fixtures/DataFalse.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace JMS\Serializer\Tests\Fixtures;
6+
7+
class DataFalse
8+
{
9+
public function __construct(
10+
public false $data
11+
) {
12+
}
13+
}

tests/Fixtures/DataTrue.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace JMS\Serializer\Tests\Fixtures;
6+
7+
class DataTrue
8+
{
9+
public true $data;
10+
}

tests/Serializer/JsonSerializationTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use JMS\Serializer\SerializationContext;
1616
use JMS\Serializer\Tests\Fixtures\Author;
1717
use JMS\Serializer\Tests\Fixtures\AuthorList;
18+
use JMS\Serializer\Tests\Fixtures\DataFalse;
1819
use JMS\Serializer\Tests\Fixtures\DiscriminatedAuthor;
1920
use JMS\Serializer\Tests\Fixtures\DiscriminatedComment;
2021
use JMS\Serializer\Tests\Fixtures\FirstClassMapCollection;
@@ -151,6 +152,8 @@ protected static function getContent($key)
151152
$outputs['data_float'] = '{"data":1.236}';
152153
$outputs['data_bool'] = '{"data":false}';
153154
$outputs['data_string'] = '{"data":"foo"}';
155+
$outputs['data_true'] = '{"data":true}';
156+
$outputs['data_false'] = '{"data":false}';
154157
$outputs['data_author'] = '{"data":{"full_name":"foo"}}';
155158
$outputs['data_comment'] = '{"data":{"author":{"full_name":"foo"},"text":"bar"}}';
156159
$outputs['data_discriminated_author'] = '{"data":{"full_name":"foo","objectType":"author"}}';
@@ -480,6 +483,31 @@ public function testSerializingUnionProperties()
480483
self::assertEquals(static::getContent('data_string'), $serialized);
481484
}
482485

486+
public function testFalseDataType()
487+
{
488+
if (PHP_VERSION_ID < 80200) {
489+
$this->markTestSkipped('False type requires PHP 8.2');
490+
491+
return;
492+
}
493+
494+
self::assertEquals(
495+
static::getContent('data_false'),
496+
$this->serialize(new DataFalse(false)),
497+
);
498+
499+
self::assertEquals(
500+
new DataFalse(false),
501+
$this->deserialize(static::getContent('data_false'), DataFalse::class),
502+
);
503+
504+
//What should we expect here?
505+
self::assertEquals(
506+
null,
507+
$this->deserialize(static::getContent('data_true'), DataFalse::class),
508+
);
509+
}
510+
483511
public function testDeserializingComplexDiscriminatedUnionProperties()
484512
{
485513
if (PHP_VERSION_ID < 80000) {

0 commit comments

Comments
 (0)