<?php
namespace BitWasp\Buffertools\Tests\Types;
use BitWasp\Buffertools\Tests\BinaryTest;
use BitWasp\Buffertools\Types\VarInt;
use BitWasp\Buffertools\Types\Vector;
use BitWasp\Buffertools\Buffer;
use BitWasp\Buffertools\Parser;
use Mdanter\Ecc\EccFactory;
class VectorTest extends BinaryTest
{
public function testVector()
{
$math = EccFactory::getAdapter();
$varint = new VarInt($math);
$vector = new Vector(
$varint,
function () {
return;
}
);
$buffer = Buffer::hex('010203040506070809000a0b0c0d0e0f');
$array = [$buffer, $buffer, $buffer];
$this->assertEquals('03' . $buffer->getHex() . $buffer->getHex() . $buffer->getHex(), bin2hex($vector->write($array)));
}
/**
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Vector::write() must be supplied with an array
*/
public function testWriteInvalid()
{
$math = EccFactory::getAdapter();
$varint = new VarInt($math);
$vector = new Vector(
$varint,
function () {
return;
}
);
$buffer = Buffer::hex('010203040506070809000a0b0c0d0e0f');
$vector->write($buffer);
}
public function testReadVector()
{
$math = EccFactory::getAdapter();
$varint = new VarInt($math);
$vector = new Vector(
$varint,
function (Parser $parser) {
return $parser->readBytes(16);
}
);
$eBuffer = Buffer::hex('010203040506070809000a0b0c0d0e0f');
$hex = '03010203040506070809000a0b0c0d0e0f010203040506070809000a0b0c0d0e0f010203040506070809000a0b0c0d0e0f';
$buffer = Buffer::hex($hex);
$parser = new Parser($buffer);
$array = $vector->read($parser);
foreach ($array as $item) {
$this->assertEquals($eBuffer->getBinary(), $item->getBinary());
}
}
}