<?php
namespace BitWasp\Buffertools\Tests\Types;
use BitWasp\Buffertools\Tests\BinaryTest;
use BitWasp\Buffertools\Types\VarInt;
use BitWasp\Buffertools\Types\VarString;
use BitWasp\Buffertools\Buffer;
use BitWasp\Buffertools\Parser;
use Mdanter\Ecc\EccFactory;
class VarStringTest extends BinaryTest
{
public function testGetVarString()
{
$strings = array(
'',
'00',
'00010203040506070809',
'00010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102030405060708090001020304050607080900010203040506070809000102',
);
$math = EccFactory::getAdapter();
$varstring = new VarString(new VarInt($math));
foreach ($strings as $string) {
$binary = $varstring->write(Buffer::hex($string));
$parser = new Parser(new Buffer($binary));
$original = $varstring->read($parser);
$this->assertSame($string, $original->getHex());
}
}
/**
* @expectedException \BitWasp\Buffertools\Exceptions\ParserOutOfRange
* @expectedExceptionMessage Insufficient data remaining for VarString
*/
public function testAbortsWithInvalidVarIntLength()
{
$math = EccFactory::getAdapter();
$buffer = new Buffer("\x05\x00");
$varstring = new VarString(new VarInt($math));
$varstring->read(new Parser($buffer));
}
/**
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Must provide a buffer
*/
public function testFailsWithoutBuffer()
{
$math = EccFactory::getAdapter();
$varstring = new VarString(new VarInt($math));
$varstring->write('');
}
}