Skip to content

Commit 6f4a1e4

Browse files
committed
Added unit test for empty ListTag type preservation
1 parent b2d1b91 commit 6f4a1e4

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

tests/phpunit/tag/ListTagTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
namespace pocketmine\nbt\tag;
2525

2626
use PHPUnit\Framework\TestCase;
27+
use pocketmine\nbt\BigEndianNbtSerializer;
2728
use pocketmine\nbt\NBT;
29+
use pocketmine\nbt\TreeRoot;
2830
use function array_fill;
2931
use function array_key_first;
3032
use function array_keys;
@@ -145,4 +147,19 @@ public function testDelete() : void{
145147
self::assertSame([0, 2], $list->getAllValues());
146148
self::assertSame([0, 1], array_keys($list->getValue()));
147149
}
150+
151+
/**
152+
* Tests that empty lists remember their original type from deserialization
153+
* Previously we were discarding these, creating problems for read/write integrity testing
154+
*/
155+
public function testEmptyBinarySymmetry() : void{
156+
$list = new ListTag([], NBT::TAG_Byte);
157+
158+
$serializer = new BigEndianNbtSerializer();
159+
$list2 = $serializer->read($serializer->write(new TreeRoot($list)))->getTag();
160+
161+
self::assertInstanceOf(ListTag::class, $list2);
162+
self::assertSame($list->getTagType(), $list2->getTagType());
163+
self::assertSame($list->getCount(), $list2->getCount());
164+
}
148165
}

0 commit comments

Comments
 (0)