mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-11 14:05:35 +00:00
while this is a bit hacky outside of the protocol namespace, it makes it much easier to use the protocol library for alternative purposes, such as for a client or MITM proxy. It also removes all but one remaining core dependency of the protocol library, making it very close to being able to be separated from the server core entirely.
61 lines
2.2 KiB
PHP
61 lines
2.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
*
|
|
* ____ _ _ __ __ _ __ __ ____
|
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* @author PocketMine Team
|
|
* @link http://www.pocketmine.net/
|
|
*
|
|
*
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace pocketmine\mcpe\protocol\serializer;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use pocketmine\network\mcpe\convert\GlobalItemTypeDictionary;
|
|
use pocketmine\network\mcpe\protocol\PacketDecodeException;
|
|
use pocketmine\network\mcpe\protocol\PacketPool;
|
|
use pocketmine\network\mcpe\protocol\serializer\PacketBatch;
|
|
use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext;
|
|
use pocketmine\network\mcpe\protocol\TestPacket;
|
|
use function array_fill;
|
|
|
|
class PacketBatchTest extends TestCase{
|
|
|
|
public function testDecodeTooBig() : void{
|
|
$limit = 10;
|
|
$decoderContext = new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary());
|
|
$write = PacketBatch::fromPackets($decoderContext, ...array_fill(0, $limit + 1, new TestPacket()));
|
|
$read = new PacketBatch($write->getBuffer());
|
|
$this->expectException(PacketDecodeException::class);
|
|
$readCount = 0;
|
|
foreach($read->getPackets(PacketPool::getInstance(), $decoderContext, $limit) as $packet){
|
|
$readCount++;
|
|
}
|
|
}
|
|
|
|
public function testDecodeAtLimit() : void{
|
|
$limit = 10;
|
|
$decoderContext = new PacketSerializerContext(GlobalItemTypeDictionary::getInstance()->getDictionary());
|
|
$write = PacketBatch::fromPackets($decoderContext, ...array_fill(0, $limit, new TestPacket()));
|
|
$read = new PacketBatch($write->getBuffer());
|
|
$readCount = 0;
|
|
foreach($read->getPackets(PacketPool::getInstance(), $decoderContext, $limit) as $packet){
|
|
$readCount++;
|
|
}
|
|
self::assertSame($limit, $readCount);
|
|
}
|
|
}
|