mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-11 15:37:27 +00:00
25
tests/MyGame/Example/Any.php
Normal file
25
tests/MyGame/Example/Any.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
// automatically generated, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
class Any
|
||||
{
|
||||
const NONE = 0;
|
||||
const Monster = 1;
|
||||
const TestSimpleTableWithEnum = 2;
|
||||
|
||||
private static $names = array(
|
||||
"NONE",
|
||||
"Monster",
|
||||
"TestSimpleTableWithEnum",
|
||||
);
|
||||
|
||||
public static function Name($e)
|
||||
{
|
||||
if (!isset(self::$names[$e])) {
|
||||
throw new \Exception();
|
||||
}
|
||||
return self::$names[$e];
|
||||
}
|
||||
}
|
||||
25
tests/MyGame/Example/Color.php
Normal file
25
tests/MyGame/Example/Color.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
// automatically generated, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
class Color
|
||||
{
|
||||
const Red = 1;
|
||||
const Green = 2;
|
||||
const Blue = 8;
|
||||
|
||||
private static $names = array(
|
||||
"Red",
|
||||
"Green",
|
||||
"Blue",
|
||||
);
|
||||
|
||||
public static function Name($e)
|
||||
{
|
||||
if (!isset(self::$names[$e])) {
|
||||
throw new \Exception();
|
||||
}
|
||||
return self::$names[$e];
|
||||
}
|
||||
}
|
||||
759
tests/MyGame/Example/Monster.php
Normal file
759
tests/MyGame/Example/Monster.php
Normal file
@@ -0,0 +1,759 @@
|
||||
<?php
|
||||
// automatically generated, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
use \Google\FlatBuffers\Struct;
|
||||
use \Google\FlatBuffers\Table;
|
||||
use \Google\FlatBuffers\ByteBuffer;
|
||||
use \Google\FlatBuffers\FlatBufferBuilder;
|
||||
|
||||
/// an example documentation comment: monster object
|
||||
class Monster extends Table
|
||||
{
|
||||
/**
|
||||
* @param ByteBuffer $bb
|
||||
* @return Monster
|
||||
*/
|
||||
public static function getRootAsMonster(ByteBuffer $bb)
|
||||
{
|
||||
$obj = new Monster();
|
||||
return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
|
||||
}
|
||||
|
||||
public static function MonsterIdentifier()
|
||||
{
|
||||
return "MONS";
|
||||
}
|
||||
|
||||
public static function MonsterBufferHasIdentifier(ByteBuffer $buf)
|
||||
{
|
||||
return self::__has_identifier($buf, self::MonsterIdentifier());
|
||||
}
|
||||
|
||||
public static function MonsterExtension()
|
||||
{
|
||||
return "mon";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $_i offset
|
||||
* @param ByteBuffer $_bb
|
||||
* @return Monster
|
||||
**/
|
||||
public function init($_i, ByteBuffer $_bb)
|
||||
{
|
||||
$this->bb_pos = $_i;
|
||||
$this->bb = $_bb;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getPos()
|
||||
{
|
||||
$obj = new Vec3();
|
||||
$o = $this->__offset(4);
|
||||
return $o != 0 ? $obj->init($o + $this->bb_pos, $this->bb) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return short
|
||||
*/
|
||||
public function getMana()
|
||||
{
|
||||
$o = $this->__offset(6);
|
||||
return $o != 0 ? $this->bb->getShort($o + $this->bb_pos) : 150;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return short
|
||||
*/
|
||||
public function getHp()
|
||||
{
|
||||
$o = $this->__offset(8);
|
||||
return $o != 0 ? $this->bb->getShort($o + $this->bb_pos) : 100;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
$o = $this->__offset(10);
|
||||
return $o != 0 ? $this->__string($o + $this->bb_pos) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int offset
|
||||
* @return byte
|
||||
*/
|
||||
public function getInventory($j)
|
||||
{
|
||||
$o = $this->__offset(14);
|
||||
return $o != 0 ? $this->bb->getByte($this->__vector($o) + $j * 1) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getInventoryLength()
|
||||
{
|
||||
$o = $this->__offset(14);
|
||||
return $o != 0 ? $this->__vector_len($o) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return sbyte
|
||||
*/
|
||||
public function getColor()
|
||||
{
|
||||
$o = $this->__offset(16);
|
||||
return $o != 0 ? $this->bb->getSbyte($o + $this->bb_pos) : \MyGame\Example\Color::Blue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return byte
|
||||
*/
|
||||
public function getTestType()
|
||||
{
|
||||
$o = $this->__offset(18);
|
||||
return $o != 0 ? $this->bb->getByte($o + $this->bb_pos) : \MyGame\Example\Any::NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returnint
|
||||
*/
|
||||
public function getTest($obj)
|
||||
{
|
||||
$o = $this->__offset(20);
|
||||
return $o != 0 ? $this->__union($obj, $o) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returnVectorOffset
|
||||
*/
|
||||
public function getTest4($j)
|
||||
{
|
||||
$o = $this->__offset(22);
|
||||
$obj = new Test();
|
||||
return $o != 0 ? $obj->init($this->__vector($o) + $j *4, $this->bb) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTest4Length()
|
||||
{
|
||||
$o = $this->__offset(22);
|
||||
return $o != 0 ? $this->__vector_len($o) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int offset
|
||||
* @return string
|
||||
*/
|
||||
public function getTestarrayofstring($j)
|
||||
{
|
||||
$o = $this->__offset(24);
|
||||
return $o != 0 ? $this->__string($this->__vector($o) + $j * 4) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTestarrayofstringLength()
|
||||
{
|
||||
$o = $this->__offset(24);
|
||||
return $o != 0 ? $this->__vector_len($o) : 0;
|
||||
}
|
||||
|
||||
/// an example documentation comment: this will end up in the generated code
|
||||
/// multiline too
|
||||
/**
|
||||
* @returnVectorOffset
|
||||
*/
|
||||
public function getTestarrayoftables($j)
|
||||
{
|
||||
$o = $this->__offset(26);
|
||||
$obj = new Monster();
|
||||
return $o != 0 ? $obj->init($this->__indirect($this->__vector($o) + $j * 4), $this->bb) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTestarrayoftablesLength()
|
||||
{
|
||||
$o = $this->__offset(26);
|
||||
return $o != 0 ? $this->__vector_len($o) : 0;
|
||||
}
|
||||
|
||||
public function getEnemy()
|
||||
{
|
||||
$obj = new Monster();
|
||||
$o = $this->__offset(28);
|
||||
return $o != 0 ? $obj->init($o + $this->bb_pos, $this->bb) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int offset
|
||||
* @return byte
|
||||
*/
|
||||
public function getTestnestedflatbuffer($j)
|
||||
{
|
||||
$o = $this->__offset(30);
|
||||
return $o != 0 ? $this->bb->getByte($this->__vector($o) + $j * 1) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTestnestedflatbufferLength()
|
||||
{
|
||||
$o = $this->__offset(30);
|
||||
return $o != 0 ? $this->__vector_len($o) : 0;
|
||||
}
|
||||
|
||||
public function getTestempty()
|
||||
{
|
||||
$obj = new Stat();
|
||||
$o = $this->__offset(32);
|
||||
return $o != 0 ? $obj->init($o + $this->bb_pos, $this->bb) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function getTestbool()
|
||||
{
|
||||
$o = $this->__offset(34);
|
||||
return $o != 0 ? $this->bb->getBool($o + $this->bb_pos) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTesthashs32Fnv1()
|
||||
{
|
||||
$o = $this->__offset(36);
|
||||
return $o != 0 ? $this->bb->getInt($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return uint
|
||||
*/
|
||||
public function getTesthashu32Fnv1()
|
||||
{
|
||||
$o = $this->__offset(38);
|
||||
return $o != 0 ? $this->bb->getUint($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return long
|
||||
*/
|
||||
public function getTesthashs64Fnv1()
|
||||
{
|
||||
$o = $this->__offset(40);
|
||||
return $o != 0 ? $this->bb->getLong($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ulong
|
||||
*/
|
||||
public function getTesthashu64Fnv1()
|
||||
{
|
||||
$o = $this->__offset(42);
|
||||
return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTesthashs32Fnv1a()
|
||||
{
|
||||
$o = $this->__offset(44);
|
||||
return $o != 0 ? $this->bb->getInt($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return uint
|
||||
*/
|
||||
public function getTesthashu32Fnv1a()
|
||||
{
|
||||
$o = $this->__offset(46);
|
||||
return $o != 0 ? $this->bb->getUint($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return long
|
||||
*/
|
||||
public function getTesthashs64Fnv1a()
|
||||
{
|
||||
$o = $this->__offset(48);
|
||||
return $o != 0 ? $this->bb->getLong($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ulong
|
||||
*/
|
||||
public function getTesthashu64Fnv1a()
|
||||
{
|
||||
$o = $this->__offset(50);
|
||||
return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int offset
|
||||
* @return bool
|
||||
*/
|
||||
public function getTestarrayofbools($j)
|
||||
{
|
||||
$o = $this->__offset(52);
|
||||
return $o != 0 ? $this->bb->getBool($this->__vector($o) + $j * 1) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTestarrayofboolsLength()
|
||||
{
|
||||
$o = $this->__offset(52);
|
||||
return $o != 0 ? $this->__vector_len($o) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return void
|
||||
*/
|
||||
public static function startMonster(FlatBufferBuilder $builder)
|
||||
{
|
||||
$builder->StartObject(25);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return Monster
|
||||
*/
|
||||
public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools)
|
||||
{
|
||||
$builder->startObject(25);
|
||||
self::addPos($builder, $pos);
|
||||
self::addMana($builder, $mana);
|
||||
self::addHp($builder, $hp);
|
||||
self::addName($builder, $name);
|
||||
self::addInventory($builder, $inventory);
|
||||
self::addColor($builder, $color);
|
||||
self::addTestType($builder, $test_type);
|
||||
self::addTest($builder, $test);
|
||||
self::addTest4($builder, $test4);
|
||||
self::addTestarrayofstring($builder, $testarrayofstring);
|
||||
self::addTestarrayoftables($builder, $testarrayoftables);
|
||||
self::addEnemy($builder, $enemy);
|
||||
self::addTestnestedflatbuffer($builder, $testnestedflatbuffer);
|
||||
self::addTestempty($builder, $testempty);
|
||||
self::addTestbool($builder, $testbool);
|
||||
self::addTesthashs32Fnv1($builder, $testhashs32_fnv1);
|
||||
self::addTesthashu32Fnv1($builder, $testhashu32_fnv1);
|
||||
self::addTesthashs64Fnv1($builder, $testhashs64_fnv1);
|
||||
self::addTesthashu64Fnv1($builder, $testhashu64_fnv1);
|
||||
self::addTesthashs32Fnv1a($builder, $testhashs32_fnv1a);
|
||||
self::addTesthashu32Fnv1a($builder, $testhashu32_fnv1a);
|
||||
self::addTesthashs64Fnv1a($builder, $testhashs64_fnv1a);
|
||||
self::addTesthashu64Fnv1a($builder, $testhashu64_fnv1a);
|
||||
self::addTestarrayofbools($builder, $testarrayofbools);
|
||||
$o = $builder->endObject();
|
||||
$builder->required($o, 10); // name
|
||||
return $o;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int
|
||||
* @return void
|
||||
*/
|
||||
public static function addPos(FlatBufferBuilder $builder, $pos)
|
||||
{
|
||||
$builder->addStructX(0, $pos, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param short
|
||||
* @return void
|
||||
*/
|
||||
public static function addMana(FlatBufferBuilder $builder, $mana)
|
||||
{
|
||||
$builder->addShortX(1, $mana, 150);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param short
|
||||
* @return void
|
||||
*/
|
||||
public static function addHp(FlatBufferBuilder $builder, $hp)
|
||||
{
|
||||
$builder->addShortX(2, $hp, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param StringOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addName(FlatBufferBuilder $builder, $name)
|
||||
{
|
||||
$builder->addOffsetX(3, $name, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param VectorOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addInventory(FlatBufferBuilder $builder, $inventory)
|
||||
{
|
||||
$builder->addOffsetX(5, $inventory, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param array offset array
|
||||
* @return int vector offset
|
||||
*/
|
||||
public static function createInventoryVector(FlatBufferBuilder $builder, array $data)
|
||||
{
|
||||
$builder->startVector(1, count($data), 1);
|
||||
for ($i = count($data) - 1; $i >= 0; $i--) {
|
||||
$builder->addByte($data[$i]);
|
||||
}
|
||||
return $builder->endVector();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int $numElems
|
||||
* @return void
|
||||
*/
|
||||
public static function startInventoryVector(FlatBufferBuilder $builder, $numElems)
|
||||
{
|
||||
$builder->startVector(1, $numElems, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param sbyte
|
||||
* @return void
|
||||
*/
|
||||
public static function addColor(FlatBufferBuilder $builder, $color)
|
||||
{
|
||||
$builder->addSbyteX(6, $color, 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param byte
|
||||
* @return void
|
||||
*/
|
||||
public static function addTestType(FlatBufferBuilder $builder, $testType)
|
||||
{
|
||||
$builder->addByteX(7, $testType, 0);
|
||||
}
|
||||
|
||||
public static function addTest(FlatBufferBuilder $builder, $offset)
|
||||
{
|
||||
$builder->addOffsetX(8, $offset, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param VectorOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addTest4(FlatBufferBuilder $builder, $test4)
|
||||
{
|
||||
$builder->addOffsetX(9, $test4, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param array offset array
|
||||
* @return int vector offset
|
||||
*/
|
||||
public static function createTest4Vector(FlatBufferBuilder $builder, array $data)
|
||||
{
|
||||
$builder->startVector(4, count($data), 2);
|
||||
for ($i = count($data) - 1; $i >= 0; $i--) {
|
||||
$builder->addOffset($data[$i]);
|
||||
}
|
||||
return $builder->endVector();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int $numElems
|
||||
* @return void
|
||||
*/
|
||||
public static function startTest4Vector(FlatBufferBuilder $builder, $numElems)
|
||||
{
|
||||
$builder->startVector(4, $numElems, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param VectorOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addTestarrayofstring(FlatBufferBuilder $builder, $testarrayofstring)
|
||||
{
|
||||
$builder->addOffsetX(10, $testarrayofstring, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param array offset array
|
||||
* @return int vector offset
|
||||
*/
|
||||
public static function createTestarrayofstringVector(FlatBufferBuilder $builder, array $data)
|
||||
{
|
||||
$builder->startVector(4, count($data), 4);
|
||||
for ($i = count($data) - 1; $i >= 0; $i--) {
|
||||
$builder->addOffset($data[$i]);
|
||||
}
|
||||
return $builder->endVector();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int $numElems
|
||||
* @return void
|
||||
*/
|
||||
public static function startTestarrayofstringVector(FlatBufferBuilder $builder, $numElems)
|
||||
{
|
||||
$builder->startVector(4, $numElems, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param VectorOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addTestarrayoftables(FlatBufferBuilder $builder, $testarrayoftables)
|
||||
{
|
||||
$builder->addOffsetX(11, $testarrayoftables, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param array offset array
|
||||
* @return int vector offset
|
||||
*/
|
||||
public static function createTestarrayoftablesVector(FlatBufferBuilder $builder, array $data)
|
||||
{
|
||||
$builder->startVector(4, count($data), 4);
|
||||
for ($i = count($data) - 1; $i >= 0; $i--) {
|
||||
$builder->addOffset($data[$i]);
|
||||
}
|
||||
return $builder->endVector();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int $numElems
|
||||
* @return void
|
||||
*/
|
||||
public static function startTestarrayoftablesVector(FlatBufferBuilder $builder, $numElems)
|
||||
{
|
||||
$builder->startVector(4, $numElems, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int
|
||||
* @return void
|
||||
*/
|
||||
public static function addEnemy(FlatBufferBuilder $builder, $enemy)
|
||||
{
|
||||
$builder->addOffsetX(12, $enemy, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param VectorOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addTestnestedflatbuffer(FlatBufferBuilder $builder, $testnestedflatbuffer)
|
||||
{
|
||||
$builder->addOffsetX(13, $testnestedflatbuffer, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param array offset array
|
||||
* @return int vector offset
|
||||
*/
|
||||
public static function createTestnestedflatbufferVector(FlatBufferBuilder $builder, array $data)
|
||||
{
|
||||
$builder->startVector(1, count($data), 1);
|
||||
for ($i = count($data) - 1; $i >= 0; $i--) {
|
||||
$builder->addByte($data[$i]);
|
||||
}
|
||||
return $builder->endVector();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int $numElems
|
||||
* @return void
|
||||
*/
|
||||
public static function startTestnestedflatbufferVector(FlatBufferBuilder $builder, $numElems)
|
||||
{
|
||||
$builder->startVector(1, $numElems, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int
|
||||
* @return void
|
||||
*/
|
||||
public static function addTestempty(FlatBufferBuilder $builder, $testempty)
|
||||
{
|
||||
$builder->addOffsetX(14, $testempty, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param bool
|
||||
* @return void
|
||||
*/
|
||||
public static function addTestbool(FlatBufferBuilder $builder, $testbool)
|
||||
{
|
||||
$builder->addBoolX(15, $testbool, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashs32Fnv1(FlatBufferBuilder $builder, $testhashs32Fnv1)
|
||||
{
|
||||
$builder->addIntX(16, $testhashs32Fnv1, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param uint
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashu32Fnv1(FlatBufferBuilder $builder, $testhashu32Fnv1)
|
||||
{
|
||||
$builder->addUintX(17, $testhashu32Fnv1, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param long
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashs64Fnv1(FlatBufferBuilder $builder, $testhashs64Fnv1)
|
||||
{
|
||||
$builder->addLongX(18, $testhashs64Fnv1, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param ulong
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashu64Fnv1(FlatBufferBuilder $builder, $testhashu64Fnv1)
|
||||
{
|
||||
$builder->addUlongX(19, $testhashu64Fnv1, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashs32Fnv1a(FlatBufferBuilder $builder, $testhashs32Fnv1a)
|
||||
{
|
||||
$builder->addIntX(20, $testhashs32Fnv1a, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param uint
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashu32Fnv1a(FlatBufferBuilder $builder, $testhashu32Fnv1a)
|
||||
{
|
||||
$builder->addUintX(21, $testhashu32Fnv1a, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param long
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashs64Fnv1a(FlatBufferBuilder $builder, $testhashs64Fnv1a)
|
||||
{
|
||||
$builder->addLongX(22, $testhashs64Fnv1a, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param ulong
|
||||
* @return void
|
||||
*/
|
||||
public static function addTesthashu64Fnv1a(FlatBufferBuilder $builder, $testhashu64Fnv1a)
|
||||
{
|
||||
$builder->addUlongX(23, $testhashu64Fnv1a, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param VectorOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addTestarrayofbools(FlatBufferBuilder $builder, $testarrayofbools)
|
||||
{
|
||||
$builder->addOffsetX(24, $testarrayofbools, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param array offset array
|
||||
* @return int vector offset
|
||||
*/
|
||||
public static function createTestarrayofboolsVector(FlatBufferBuilder $builder, array $data)
|
||||
{
|
||||
$builder->startVector(1, count($data), 1);
|
||||
for ($i = count($data) - 1; $i >= 0; $i--) {
|
||||
$builder->addBool($data[$i]);
|
||||
}
|
||||
return $builder->endVector();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param int $numElems
|
||||
* @return void
|
||||
*/
|
||||
public static function startTestarrayofboolsVector(FlatBufferBuilder $builder, $numElems)
|
||||
{
|
||||
$builder->startVector(1, $numElems, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return int table offset
|
||||
*/
|
||||
public static function endMonster(FlatBufferBuilder $builder)
|
||||
{
|
||||
$o = $builder->endObject();
|
||||
$builder->required($o, 10); // name
|
||||
return $o;
|
||||
}
|
||||
|
||||
public static function finishMonsterBuffer(FlatBufferBuilder $builder, $offset)
|
||||
{
|
||||
$builder->finish($offset, "MONS");
|
||||
}
|
||||
}
|
||||
136
tests/MyGame/Example/Stat.php
Normal file
136
tests/MyGame/Example/Stat.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
// automatically generated, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
use \Google\FlatBuffers\Struct;
|
||||
use \Google\FlatBuffers\Table;
|
||||
use \Google\FlatBuffers\ByteBuffer;
|
||||
use \Google\FlatBuffers\FlatBufferBuilder;
|
||||
|
||||
class Stat extends Table
|
||||
{
|
||||
/**
|
||||
* @param ByteBuffer $bb
|
||||
* @return Stat
|
||||
*/
|
||||
public static function getRootAsStat(ByteBuffer $bb)
|
||||
{
|
||||
$obj = new Stat();
|
||||
return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
|
||||
}
|
||||
|
||||
public static function StatIdentifier()
|
||||
{
|
||||
return "MONS";
|
||||
}
|
||||
|
||||
public static function StatBufferHasIdentifier(ByteBuffer $buf)
|
||||
{
|
||||
return self::__has_identifier($buf, self::StatIdentifier());
|
||||
}
|
||||
|
||||
public static function StatExtension()
|
||||
{
|
||||
return "mon";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $_i offset
|
||||
* @param ByteBuffer $_bb
|
||||
* @return Stat
|
||||
**/
|
||||
public function init($_i, ByteBuffer $_bb)
|
||||
{
|
||||
$this->bb_pos = $_i;
|
||||
$this->bb = $_bb;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getId()
|
||||
{
|
||||
$o = $this->__offset(4);
|
||||
return $o != 0 ? $this->__string($o + $this->bb_pos) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return long
|
||||
*/
|
||||
public function getVal()
|
||||
{
|
||||
$o = $this->__offset(6);
|
||||
return $o != 0 ? $this->bb->getLong($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ushort
|
||||
*/
|
||||
public function getCount()
|
||||
{
|
||||
$o = $this->__offset(8);
|
||||
return $o != 0 ? $this->bb->getUshort($o + $this->bb_pos) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return void
|
||||
*/
|
||||
public static function startStat(FlatBufferBuilder $builder)
|
||||
{
|
||||
$builder->StartObject(3);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return Stat
|
||||
*/
|
||||
public static function createStat(FlatBufferBuilder $builder, $id, $val, $count)
|
||||
{
|
||||
$builder->startObject(3);
|
||||
self::addId($builder, $id);
|
||||
self::addVal($builder, $val);
|
||||
self::addCount($builder, $count);
|
||||
$o = $builder->endObject();
|
||||
return $o;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param StringOffset
|
||||
* @return void
|
||||
*/
|
||||
public static function addId(FlatBufferBuilder $builder, $id)
|
||||
{
|
||||
$builder->addOffsetX(0, $id, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param long
|
||||
* @return void
|
||||
*/
|
||||
public static function addVal(FlatBufferBuilder $builder, $val)
|
||||
{
|
||||
$builder->addLongX(1, $val, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param ushort
|
||||
* @return void
|
||||
*/
|
||||
public static function addCount(FlatBufferBuilder $builder, $count)
|
||||
{
|
||||
$builder->addUshortX(2, $count, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return int table offset
|
||||
*/
|
||||
public static function endStat(FlatBufferBuilder $builder)
|
||||
{
|
||||
$o = $builder->endObject();
|
||||
return $o;
|
||||
}
|
||||
}
|
||||
53
tests/MyGame/Example/Test.php
Normal file
53
tests/MyGame/Example/Test.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
// automatically generated, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
use \Google\FlatBuffers\Struct;
|
||||
use \Google\FlatBuffers\Table;
|
||||
use \Google\FlatBuffers\ByteBuffer;
|
||||
use \Google\FlatBuffers\FlatBufferBuilder;
|
||||
|
||||
class Test extends Struct
|
||||
{
|
||||
/**
|
||||
* @param int $_i offset
|
||||
* @param ByteBuffer $_bb
|
||||
* @return Test
|
||||
**/
|
||||
public function init($_i, ByteBuffer $_bb)
|
||||
{
|
||||
$this->bb_pos = $_i;
|
||||
$this->bb = $_bb;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return short
|
||||
*/
|
||||
public function GetA()
|
||||
{
|
||||
return $this->bb->getShort($this->bb_pos + 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return sbyte
|
||||
*/
|
||||
public function GetB()
|
||||
{
|
||||
return $this->bb->getSbyte($this->bb_pos + 2);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return int offset
|
||||
*/
|
||||
public static function createTest(FlatBufferBuilder $builder, $a, $b)
|
||||
{
|
||||
$builder->prep(2, 4);
|
||||
$builder->pad(1);
|
||||
$builder->putSbyte($b);
|
||||
$builder->putShort($a);
|
||||
return $builder->offset();
|
||||
}
|
||||
}
|
||||
99
tests/MyGame/Example/TestSimpleTableWithEnum.php
Normal file
99
tests/MyGame/Example/TestSimpleTableWithEnum.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
// automatically generated, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
use \Google\FlatBuffers\Struct;
|
||||
use \Google\FlatBuffers\Table;
|
||||
use \Google\FlatBuffers\ByteBuffer;
|
||||
use \Google\FlatBuffers\FlatBufferBuilder;
|
||||
|
||||
class TestSimpleTableWithEnum extends Table
|
||||
{
|
||||
/**
|
||||
* @param ByteBuffer $bb
|
||||
* @return TestSimpleTableWithEnum
|
||||
*/
|
||||
public static function getRootAsTestSimpleTableWithEnum(ByteBuffer $bb)
|
||||
{
|
||||
$obj = new TestSimpleTableWithEnum();
|
||||
return ($obj->init($bb->getInt($bb->getPosition()) + $bb->getPosition(), $bb));
|
||||
}
|
||||
|
||||
public static function TestSimpleTableWithEnumIdentifier()
|
||||
{
|
||||
return "MONS";
|
||||
}
|
||||
|
||||
public static function TestSimpleTableWithEnumBufferHasIdentifier(ByteBuffer $buf)
|
||||
{
|
||||
return self::__has_identifier($buf, self::TestSimpleTableWithEnumIdentifier());
|
||||
}
|
||||
|
||||
public static function TestSimpleTableWithEnumExtension()
|
||||
{
|
||||
return "mon";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $_i offset
|
||||
* @param ByteBuffer $_bb
|
||||
* @return TestSimpleTableWithEnum
|
||||
**/
|
||||
public function init($_i, ByteBuffer $_bb)
|
||||
{
|
||||
$this->bb_pos = $_i;
|
||||
$this->bb = $_bb;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return sbyte
|
||||
*/
|
||||
public function getColor()
|
||||
{
|
||||
$o = $this->__offset(4);
|
||||
return $o != 0 ? $this->bb->getSbyte($o + $this->bb_pos) : \MyGame\Example\Color::Green;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return void
|
||||
*/
|
||||
public static function startTestSimpleTableWithEnum(FlatBufferBuilder $builder)
|
||||
{
|
||||
$builder->StartObject(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return TestSimpleTableWithEnum
|
||||
*/
|
||||
public static function createTestSimpleTableWithEnum(FlatBufferBuilder $builder, $color)
|
||||
{
|
||||
$builder->startObject(1);
|
||||
self::addColor($builder, $color);
|
||||
$o = $builder->endObject();
|
||||
return $o;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @param sbyte
|
||||
* @return void
|
||||
*/
|
||||
public static function addColor(FlatBufferBuilder $builder, $color)
|
||||
{
|
||||
$builder->addSbyteX(0, $color, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FlatBufferBuilder $builder
|
||||
* @return int table offset
|
||||
*/
|
||||
public static function endTestSimpleTableWithEnum(FlatBufferBuilder $builder)
|
||||
{
|
||||
$o = $builder->endObject();
|
||||
return $o;
|
||||
}
|
||||
}
|
||||
96
tests/MyGame/Example/Vec3.php
Normal file
96
tests/MyGame/Example/Vec3.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
// automatically generated, do not modify
|
||||
|
||||
namespace MyGame\Example;
|
||||
|
||||
use \Google\FlatBuffers\Struct;
|
||||
use \Google\FlatBuffers\Table;
|
||||
use \Google\FlatBuffers\ByteBuffer;
|
||||
use \Google\FlatBuffers\FlatBufferBuilder;
|
||||
|
||||
class Vec3 extends Struct
|
||||
{
|
||||
/**
|
||||
* @param int $_i offset
|
||||
* @param ByteBuffer $_bb
|
||||
* @return Vec3
|
||||
**/
|
||||
public function init($_i, ByteBuffer $_bb)
|
||||
{
|
||||
$this->bb_pos = $_i;
|
||||
$this->bb = $_bb;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function GetX()
|
||||
{
|
||||
return $this->bb->getFloat($this->bb_pos + 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function GetY()
|
||||
{
|
||||
return $this->bb->getFloat($this->bb_pos + 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function GetZ()
|
||||
{
|
||||
return $this->bb->getFloat($this->bb_pos + 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return double
|
||||
*/
|
||||
public function GetTest1()
|
||||
{
|
||||
return $this->bb->getDouble($this->bb_pos + 16);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return sbyte
|
||||
*/
|
||||
public function GetTest2()
|
||||
{
|
||||
return $this->bb->getSbyte($this->bb_pos + 24);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Test
|
||||
*/
|
||||
public function getTest3()
|
||||
{
|
||||
$obj = new Test();
|
||||
$obj->init($this->bb_pos + 26, $this->bb);
|
||||
return $obj;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return int offset
|
||||
*/
|
||||
public static function createVec3(FlatBufferBuilder $builder, $x, $y, $z, $test1, $test2, $test3_a, $test3_b)
|
||||
{
|
||||
$builder->prep(16, 32);
|
||||
$builder->pad(2);
|
||||
$builder->prep(2, 4);
|
||||
$builder->pad(1);
|
||||
$builder->putSbyte($test3_b);
|
||||
$builder->putShort($test3_a);
|
||||
$builder->pad(1);
|
||||
$builder->putSbyte($test2);
|
||||
$builder->putDouble($test1);
|
||||
$builder->pad(4);
|
||||
$builder->putFloat($z);
|
||||
$builder->putFloat($y);
|
||||
$builder->putFloat($x);
|
||||
return $builder->offset();
|
||||
}
|
||||
}
|
||||
2
tests/generate_code.bat
Normal file
2
tests/generate_code.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
..\flatc.exe -c -j -n -g -b -p --php -s --gen-mutable --no-includes monster_test.fbs monsterdata_test.json
|
||||
..\flatc.exe -b --schema monster_test.fbs
|
||||
@@ -1,2 +1,2 @@
|
||||
../flatc -c -j -n -g -b -p -s --gen-mutable --no-includes monster_test.fbs monsterdata_test.json
|
||||
../flatc -c -j -n -g -b -p -s --php --gen-mutable --no-includes monster_test.fbs monsterdata_test.json
|
||||
../flatc -b --schema monster_test.fbs
|
||||
|
||||
609
tests/phpTest.php
Normal file
609
tests/phpTest.php
Normal file
@@ -0,0 +1,609 @@
|
||||
<?php
|
||||
// manual load for testing. please use PSR style autoloader when you use flatbuffers.
|
||||
require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "Constants.php"));
|
||||
require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "ByteBuffer.php"));
|
||||
require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "FlatbufferBuilder.php"));
|
||||
require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "Table.php"));
|
||||
require join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "php", "Struct.php"));
|
||||
foreach (glob(join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), "MyGame", "Example", "*.php"))) as $file) {
|
||||
require $file;
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
/// Begin Test
|
||||
$assert = new Assert();
|
||||
|
||||
// First, let's test reading a FlatBuffer generated by C++ code:
|
||||
// This file was generated from monsterdata_test.json
|
||||
|
||||
// Now test it:
|
||||
$data = file_get_contents('monsterdata_test.mon');
|
||||
$bb = Google\FlatBuffers\ByteBuffer::wrap($data);
|
||||
test_buffer($assert, $bb);
|
||||
|
||||
// Second, let's create a FlatBuffer from scratch in JavaScript, and test it also.
|
||||
// We use an initial size of 1 to exercise the reallocation algorithm,
|
||||
// normally a size larger than the typical FlatBuffer you generate would be
|
||||
// better for performance.
|
||||
$fbb = new Google\FlatBuffers\FlatBufferBuilder(1);
|
||||
|
||||
// We set up the same values as monsterdata.json:
|
||||
$str = $fbb->createString("MyMonster");
|
||||
|
||||
$inv = \MyGame\Example\Monster::CreateInventoryVector($fbb, array(0, 1, 2, 3, 4));
|
||||
|
||||
$fred = $fbb->createString('Fred');
|
||||
\MyGame\Example\Monster::StartMonster($fbb);
|
||||
\MyGame\Example\Monster::AddName($fbb, $fred);
|
||||
$mon2 = \MyGame\Example\Monster::EndMonster($fbb);
|
||||
|
||||
\MyGame\Example\Monster::StartTest4Vector($fbb, 2);
|
||||
\MyGame\Example\Test::CreateTest($fbb, 10, 20);
|
||||
\MyGame\Example\Test::CreateTest($fbb, 30, 40);
|
||||
$test4 = $fbb->endVector();
|
||||
|
||||
$testArrayOfString = \MyGame\Example\Monster::CreateTestarrayofstringVector($fbb, array(
|
||||
$fbb->createString('test1'),
|
||||
$fbb->createString('test2')
|
||||
));
|
||||
|
||||
\MyGame\Example\Monster::StartMonster($fbb);
|
||||
\MyGame\Example\Monster::AddPos($fbb, \MyGame\Example\Vec3::CreateVec3($fbb,
|
||||
1.0, 2.0, 3.0, //float
|
||||
3.0, // double
|
||||
\MyGame\Example\Color::Green,
|
||||
5, //short
|
||||
6));
|
||||
\MyGame\Example\Monster::AddHp($fbb, 80);
|
||||
\MyGame\Example\Monster::AddName($fbb, $str);
|
||||
\MyGame\Example\Monster::AddInventory($fbb, $inv);
|
||||
\MyGame\Example\Monster::AddTestType($fbb, \MyGame\Example\Any::Monster);
|
||||
\MyGame\Example\Monster::AddTest($fbb, $mon2);
|
||||
\MyGame\Example\Monster::AddTest4($fbb, $test4);
|
||||
\MyGame\Example\Monster::AddTestarrayofstring($fbb, $testArrayOfString);
|
||||
\MyGame\Example\Monster::AddTestbool($fbb, false);
|
||||
$mon = \MyGame\Example\Monster::EndMonster($fbb);
|
||||
|
||||
\MyGame\Example\Monster::FinishMonsterBuffer($fbb, $mon);
|
||||
|
||||
// Test it:
|
||||
test_buffer($assert, $fbb->dataBuffer());
|
||||
|
||||
testByteBuffer($assert);
|
||||
fuzzTest1($assert);
|
||||
// testUnicode($assert);
|
||||
|
||||
echo 'FlatBuffers php test: completed successfully' . PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
main();
|
||||
exit(0);
|
||||
} catch(Exception $e) {
|
||||
printf("Fatal error: Uncaught exception '%s' with message '%s. in %s:%d\n", get_class($e), $e->getMessage(), $e->getFile(), $e->getLine());
|
||||
printf("Stack trace:\n");
|
||||
echo $e->getTraceAsString() . PHP_EOL;
|
||||
printf(" thrown in in %s:%d\n", $e->getFile(), $e->getLine());
|
||||
|
||||
die(-1);
|
||||
}
|
||||
|
||||
function test_buffer(Assert $assert, Google\FlatBuffers\ByteBuffer $bb) {
|
||||
|
||||
$assert->ok(MyGame\Example\Monster::MonsterBufferHasIdentifier($bb));
|
||||
$monster = \MyGame\Example\Monster::GetRootAsMonster($bb);
|
||||
|
||||
$assert->strictEqual($monster->GetHp(), 80);
|
||||
$assert->strictEqual($monster->GetMana(), 150); // default
|
||||
|
||||
$assert->strictEqual($monster->GetName(), 'MyMonster');
|
||||
|
||||
$pos = $monster->GetPos();
|
||||
$assert->strictEqual($pos->GetX(), 1.0);
|
||||
$assert->strictEqual($pos->GetY(), 2.0);
|
||||
$assert->strictEqual($pos->GetZ(), 3.0);
|
||||
|
||||
$assert->Equal($pos->GetTest1(), 3.0);
|
||||
$assert->strictEqual($pos->GetTest2(), \MyGame\Example\Color::Green);
|
||||
|
||||
$t = $pos->GetTest3();
|
||||
$assert->strictEqual($t->GetA(), 5);
|
||||
$assert->strictEqual($t->GetB(), 6);
|
||||
$assert->strictEqual($monster->GetTestType(), \MyGame\Example\Any::Monster);
|
||||
|
||||
$monster2 = new \MyGame\Example\Monster();
|
||||
$assert->strictEqual($monster->GetTest($monster2) != null, true);
|
||||
$assert->strictEqual($monster2->GetName(), 'Fred');
|
||||
|
||||
$assert->strictEqual($monster->GetInventoryLength(), 5);
|
||||
$invsum = 0;
|
||||
for ($i = 0; $i < $monster->GetInventoryLength(); $i++) {
|
||||
$invsum += $monster->GetInventory($i);
|
||||
}
|
||||
$assert->strictEqual($invsum, 10);
|
||||
|
||||
|
||||
$test_0 = $monster->GetTest4(0);
|
||||
$test_1 = $monster->GetTest4(1);
|
||||
$assert->strictEqual($monster->GetTest4Length(), 2);
|
||||
$assert->strictEqual($test_0->GetA() + $test_0->GetB() + $test_1->GetA() + $test_1->GetB(), 100);
|
||||
|
||||
$assert->strictEqual($monster->GetTestarrayofstringLength(), 2);
|
||||
$assert->strictEqual($monster->GetTestarrayofstring(0), 'test1');
|
||||
$assert->strictEqual($monster->GetTestarrayofstring(1), 'test2');
|
||||
$assert->strictEqual($monster->GetTestbool(), false);
|
||||
}
|
||||
|
||||
//function testUnicode(Assert $assert) {
|
||||
// // missing unicode_test.mon, implemented later
|
||||
// $correct = file_get_contents('unicode_test.mon');
|
||||
// $json = json_decode(file_get_contents('unicode_test.json'));
|
||||
//
|
||||
// // Test reading
|
||||
// $bb = flatbuffers\ByteBuffer::Wrap($correct);
|
||||
// $monster = \MyGame\Example\Monster::GetRootAsMonster($bb);
|
||||
// $assert->strictEqual($monster->GetName(), $json["name"]);
|
||||
//
|
||||
// //$assert->deepEqual(new Buffer(monster.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(json.name));
|
||||
// //assert.strictEqual(monster.testarrayoftablesLength(), json.testarrayoftables.length);
|
||||
// foreach ($json["testarrayoftables"]as $i => $table) {
|
||||
// $value = $monster->GetTestArrayOfTables($i);
|
||||
// $assert->strictEqual($value->GetName(), $table["name"]);
|
||||
// //assert.deepEqual(new Buffer(value.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(table.name));
|
||||
// }
|
||||
// $assert->strictEqual($monster->GetTestarrayofstringLength(), $json["testarrayofstring"]["length"]);
|
||||
// foreach ($json["testarrayofstring"] as $i => $string) {
|
||||
// $assert->strictEqual($monster->GetTestarrayofstring($i), $string);
|
||||
// //assert.deepEqual(new Buffer(monster.testarrayofstring(i, flatbuffers.Encoding.UTF8_BYTES)), new Buffer(string));
|
||||
// }
|
||||
//
|
||||
// // Test writing
|
||||
// $fbb = new FlatBuffers\FlatBufferBuilder(1);
|
||||
// $name = $fbb->CreateString($json["name"]);
|
||||
// $testarrayoftablesOffsets = array_map(function($table) use($fbb) {
|
||||
// $name = $fbb->CreateString($table["name"]);
|
||||
// \MyGame\Example\Monster::StartMonster($fbb);
|
||||
// \MyGame\Example\Monster::AddName($fbb, $name);
|
||||
// return \MyGame\Example\Monster::EndMonster($fbb);
|
||||
// }, $json["testarrayoftables"]);
|
||||
// $testarrayoftablesOffset = \MyGame\Example\Monster::CreateTestarrayoftablesVector($fbb,
|
||||
// $testarrayoftablesOffsets);
|
||||
//// $testarrayofstringOffset = \MyGame\Example\Monster::CreateTestarrayofstringVector($fbb,
|
||||
//// $json["testarrayofstring"].map(function(string) { return fbb.createString(string); }));
|
||||
//
|
||||
// \MyGame\Example\Monster::startMonster($fbb);
|
||||
// \MyGame\Example\Monster::addTestarrayofstring($fbb, $testarrayoftablesOffset);
|
||||
// \MyGame\Example\Monster::addTestarrayoftables($fbb, $testarrayoftablesOffset);
|
||||
// \MyGame\Example\Monster::addName($fbb, $name);
|
||||
// \MyGame\Example\Monster::finishMonsterBuffer($fbb, \MyGame\Example\Monster::endMonster($fbb));
|
||||
// //;assert.deepEqual(new Buffer(fbb.asUint8Array()), correct);
|
||||
//}
|
||||
|
||||
// Low level stress/fuzz test: serialize/deserialize a variety of
|
||||
// different kinds of data in different combinations
|
||||
function fuzzTest1(Assert $assert)
|
||||
{
|
||||
|
||||
// Values we're testing against: chosen to ensure no bits get chopped
|
||||
// off anywhere, and also be different from eachother.
|
||||
$bool_val = true;
|
||||
$char_val = -127; // 0x81
|
||||
$uchar_val = 0xFF;
|
||||
$short_val = -32222; // 0x8222;
|
||||
$ushort_val = 0xFEEE;
|
||||
$int_val = 0x83333333 | 0;
|
||||
// for now
|
||||
$uint_val = 1;
|
||||
$long_val = 2;
|
||||
$ulong_val = 3;
|
||||
|
||||
// var uint_val = 0xFDDDDDDD;
|
||||
// var long_val = new flatbuffers.Long(0x44444444, 0x84444444);
|
||||
// var ulong_val = new flatbuffers.Long(0xCCCCCCCC, 0xFCCCCCCC);
|
||||
|
||||
$float_val = 3.14159;
|
||||
$double_val = 3.14159265359;
|
||||
|
||||
$test_values_max = 11;
|
||||
$fields_per_object = 4;
|
||||
// current implementation is not good at encoding.
|
||||
$num_fuzz_objects = 1000;
|
||||
$builder = new Google\FlatBuffers\FlatBufferBuilder(1);
|
||||
|
||||
// can't use same implementation due to PHP_INTMAX overflow issue.
|
||||
// we use mt_rand function to reproduce fuzzy test.
|
||||
mt_srand(48271);
|
||||
$objects = array();
|
||||
// Generate num_fuzz_objects random objects each consisting of
|
||||
// fields_per_object fields, each of a random type.
|
||||
for ($i = 0; $i < $num_fuzz_objects; $i++) {
|
||||
$builder->startObject($fields_per_object);
|
||||
for ($f = 0; $f < $fields_per_object; $f++) {
|
||||
$choice = mt_rand() % $test_values_max;
|
||||
switch ($choice) {
|
||||
case 0:
|
||||
$builder->addBoolX($f, $bool_val, 0);
|
||||
break;
|
||||
case 1:
|
||||
$builder->addByteX($f, $char_val, 0);
|
||||
break;
|
||||
case 2:
|
||||
$builder->addSbyteX($f, $uchar_val, 0);
|
||||
break;
|
||||
case 3:
|
||||
$builder->addShortX($f, $short_val, 0);
|
||||
break;
|
||||
case 4:
|
||||
$builder->addUshortX($f, $ushort_val, 0);
|
||||
break;
|
||||
case 5:
|
||||
$builder->addIntX($f, $int_val, 0);
|
||||
break;
|
||||
case 6:
|
||||
$builder->addUintX($f, $uint_val, 0);
|
||||
break;
|
||||
case 7:
|
||||
$builder->addLongX($f, $long_val, 0);
|
||||
break;
|
||||
case 8:
|
||||
$builder->addUlongX($f, $ulong_val, 0);
|
||||
break;
|
||||
case 9:
|
||||
$builder->addFloatX($f, $float_val, 0);
|
||||
break;
|
||||
case 10:
|
||||
$builder->addDoubleX($f, $double_val, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$objects[] = $builder->endObject();
|
||||
}
|
||||
$builder->prep(8, 0); // Align whole buffer.
|
||||
|
||||
mt_srand(48271); // Reset
|
||||
$builder->finish($objects[count($objects) - 1]);
|
||||
|
||||
$view = Google\FlatBuffers\ByteBuffer::wrap($builder->sizedByteArray());
|
||||
for ($i = 0; $i < $num_fuzz_objects; $i++) {
|
||||
$offset = $view->capacity() - $objects[$i];
|
||||
for ($f = 0; $f < $fields_per_object; $f++) {
|
||||
$choice = mt_rand() % $test_values_max;
|
||||
$vtable_offset = fieldIndexToOffset($f);
|
||||
$vtable = $offset - $view->getInt($offset);
|
||||
$assert->ok($vtable_offset < $view->getShort($vtable));
|
||||
$field_offset = $offset + $view->getShort($vtable + $vtable_offset);
|
||||
switch ($choice) {
|
||||
case 0:
|
||||
$assert->strictEqual(!!$view->getBool($field_offset), $bool_val);
|
||||
break;
|
||||
case 1:
|
||||
$assert->strictEqual($view->getSbyte($field_offset), $char_val);
|
||||
break;
|
||||
case 2:
|
||||
$assert->strictEqual($view->getByte($field_offset), $uchar_val);
|
||||
break;
|
||||
case 3:
|
||||
$assert->strictEqual($view->getShort($field_offset), $short_val);
|
||||
break;
|
||||
case 4:
|
||||
$assert->strictEqual($view->getUShort($field_offset), $ushort_val);
|
||||
break;
|
||||
case 5:
|
||||
$assert->strictEqual($view->getInt($field_offset), $int_val);
|
||||
break;
|
||||
case 6:
|
||||
$assert->strictEqual($view->getUint($field_offset), $uint_val);
|
||||
break;
|
||||
case 7:
|
||||
if (PHP_INT_SIZE <= 4) break;
|
||||
$assert->strictEqual($view->getLong($field_offset), $long_val);
|
||||
break;
|
||||
case 8:
|
||||
if (PHP_INT_SIZE <= 4) break;
|
||||
$assert->strictEqual($view->getUlong($field_offset), $ulong_val);
|
||||
break;
|
||||
case 9:
|
||||
$assert->strictEqual(floor($view->getFloat($field_offset)), floor($float_val));
|
||||
break;
|
||||
case 10:
|
||||
$assert->strictEqual($view->getDouble($field_offset), $double_val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function fieldIndexToOffset($field_id) {
|
||||
// Should correspond to what EndTable() below builds up.
|
||||
$fixed_fields = 2; // Vtable size and Object Size.
|
||||
return ($field_id + $fixed_fields) * 2;
|
||||
}
|
||||
|
||||
function testByteBuffer(Assert $assert) {
|
||||
|
||||
//Test: ByteBuffer_Length_MatchesBufferLength
|
||||
$buffer = str_repeat("\0", 100);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal($uut->capacity(), strlen($buffer));
|
||||
|
||||
//Test: ByteBuffer_PutBytePopulatesBufferAtZeroOffset
|
||||
$buffer = "\0";
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$uut->putByte(0, "\x63"); // 99
|
||||
$assert->Equal("\x63", $uut->_buffer[0]); // don't share buffer as php user might confuse reference.
|
||||
|
||||
//Test: ByteBuffer_PutByteCannotPutAtOffsetPastLength
|
||||
$buffer = "\0";
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putByte(1, "\x63"); // 99
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_PutShortPopulatesBufferCorrectly
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$uut->putShort(0, 1);
|
||||
|
||||
// Ensure Endiannes was written correctly
|
||||
$assert->Equal(chr(0x01), $uut->_buffer[0]);
|
||||
$assert->Equal(chr(0x00), $uut->_buffer[1]);
|
||||
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$uut->putShort(0, -32768);
|
||||
|
||||
// Ensure Endiannes was written correctly
|
||||
$assert->Equal(chr(0x00), $uut->_buffer[0]);
|
||||
$assert->Equal(chr(0x80), $uut->_buffer[1]);
|
||||
|
||||
//Test: ByteBuffer_PutShortCannotPutAtOffsetPastLength
|
||||
$buffer = "\0";
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putShort(2, "\x63"); // 99
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_PutShortChecksLength
|
||||
$buffer = "\0";
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putShort(0, "\x63"); // 99
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_PutShortChecksLengthAndOffset
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putShort(1, "\x63"); // 99
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_PutIntPopulatesBufferCorrectly
|
||||
$buffer = str_repeat("\0", 4);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$uut->putInt(0, 0x0A0B0C0D);
|
||||
$assert->Equal(chr(0x0D), $uut->_buffer[0]);
|
||||
$assert->Equal(chr(0x0C), $uut->_buffer[1]);
|
||||
$assert->Equal(chr(0x0B), $uut->_buffer[2]);
|
||||
$assert->Equal(chr(0x0A), $uut->_buffer[3]);
|
||||
|
||||
$buffer = str_repeat("\0", 4);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$uut->putInt(0, -2147483648);
|
||||
$assert->Equal(chr(0x00), $uut->_buffer[0]);
|
||||
$assert->Equal(chr(0x00), $uut->_buffer[1]);
|
||||
$assert->Equal(chr(0x00), $uut->_buffer[2]);
|
||||
$assert->Equal(chr(0x80), $uut->_buffer[3]);
|
||||
|
||||
//Test: ByteBuffer_PutIntCannotPutAtOffsetPastLength
|
||||
$buffer = str_repeat("\0", 4);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putInt(2, 0x0A0B0C0D);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_PutIntChecksLength
|
||||
$buffer = str_repeat("\0", 1);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putInt(0, 0x0A0B0C0D);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_PutIntChecksLengthAndOffset
|
||||
$buffer = str_repeat("\0", 4);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putInt(2, 0x0A0B0C0D);
|
||||
});
|
||||
|
||||
if (PHP_INT_SIZE > 4) {
|
||||
//Test: ByteBuffer_PutLongPopulatesBufferCorrectly
|
||||
$buffer = str_repeat("\0", 8);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$uut->putLong(0, 0x010203040A0B0C0D);
|
||||
$assert->Equal(chr(0x0D), $uut->_buffer[0]);
|
||||
$assert->Equal(chr(0x0C), $uut->_buffer[1]);
|
||||
$assert->Equal(chr(0x0B), $uut->_buffer[2]);
|
||||
$assert->Equal(chr(0x0A), $uut->_buffer[3]);
|
||||
$assert->Equal(chr(0x04), $uut->_buffer[4]);
|
||||
$assert->Equal(chr(0x03), $uut->_buffer[5]);
|
||||
$assert->Equal(chr(0x02), $uut->_buffer[6]);
|
||||
$assert->Equal(chr(0x01), $uut->_buffer[7]);
|
||||
|
||||
//Test: ByteBuffer_PutLongCannotPutAtOffsetPastLength
|
||||
$buffer = str_repeat("\0", 8);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putLong(2, 0x010203040A0B0C0D);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_PutLongCannotPutAtOffsetPastLength
|
||||
$buffer = str_repeat("\0", 1);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putLong(0, 0x010203040A0B0C0D);
|
||||
});
|
||||
|
||||
|
||||
//Test: ByteBuffer_PutLongChecksLengthAndOffset
|
||||
$buffer = str_repeat("\0", 8);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->putLong(2, 0x010203040A0B0C0D);
|
||||
});
|
||||
}
|
||||
|
||||
//Test: ByteBuffer_GetByteReturnsCorrectData
|
||||
$buffer = str_repeat("\0", 1);
|
||||
$buffer[0] = "\x63";
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal("\x63", $uut->get(0));
|
||||
|
||||
//Test: ByteBuffer_GetByteChecksOffset
|
||||
$buffer = str_repeat("\0", 1);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->get(1);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_GetShortReturnsCorrectData
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$buffer[0] = chr(0x01);
|
||||
$buffer[1] = chr(0x00);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal(1, $uut->getShort(0));
|
||||
|
||||
//Test: ByteBuffer_GetShortReturnsCorrectData (signed value)
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$buffer[0] = chr(0x00);
|
||||
$buffer[1] = chr(0x80);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal(-32768, $uut->getShort(0));
|
||||
|
||||
//Test: ByteBuffer_GetShortChecksOffset
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->getShort(2);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_GetShortChecksLength
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->getShort(1);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_GetIntReturnsCorrectData
|
||||
$buffer = str_repeat("\0", 4);
|
||||
$buffer[0] = chr(0x0D);
|
||||
$buffer[1] = chr(0x0C);
|
||||
$buffer[2] = chr(0x0B);
|
||||
$buffer[3] = chr(0x0A);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal(0x0A0B0C0D, $uut->getInt(0));
|
||||
|
||||
$buffer = str_repeat("\0", 4);
|
||||
$buffer[0] = chr(0x00);
|
||||
$buffer[1] = chr(0x00);
|
||||
$buffer[2] = chr(0x00);
|
||||
$buffer[3] = chr(0x80);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal(-2147483648, $uut->getInt(0));
|
||||
|
||||
//Test: ByteBuffer_GetIntChecksOffset
|
||||
$buffer = str_repeat("\0", 4);
|
||||
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->getInt(4);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_GetIntChecksLength
|
||||
$buffer = str_repeat("\0", 2);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->getInt(0);
|
||||
});
|
||||
|
||||
if (PHP_INT_SIZE > 4) {
|
||||
//Test: ByteBuffer_GetLongReturnsCorrectData
|
||||
$buffer = str_repeat("\0", 8);
|
||||
$buffer[0] = chr(0x0D);
|
||||
$buffer[1] = chr(0x0C);
|
||||
$buffer[2] = chr(0x0B);
|
||||
$buffer[3] = chr(0x0A);
|
||||
$buffer[4] = chr(0x04);
|
||||
$buffer[5] = chr(0x03);
|
||||
$buffer[6] = chr(0x02);
|
||||
$buffer[7] = chr(0x01);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal(0x010203040A0B0C0D, $uut->getLong(0));
|
||||
}
|
||||
|
||||
//Test: ByteBuffer_GetLongChecksOffset
|
||||
$buffer = str_repeat("\0", 8);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->getLong(8);
|
||||
});
|
||||
|
||||
//Test: ByteBuffer_GetLongChecksLength
|
||||
$buffer = str_repeat("\0", 7);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Throws(new OutOfRangeException(), function() use ($uut) {
|
||||
$uut->getLong(0);
|
||||
});
|
||||
|
||||
//Test: big endian
|
||||
$buffer = str_repeat("\0", 2);
|
||||
// 0xFF 0x00
|
||||
// Little Endian: 255
|
||||
// Big Endian: 65280
|
||||
$buffer[0] = chr(0xff);
|
||||
$buffer[1] = chr(0x00);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal(65280, $uut->readLittleEndian(0, 2, true));
|
||||
|
||||
$buffer = str_repeat("\0", 4);
|
||||
$buffer[0] = chr(0x0D);
|
||||
$buffer[1] = chr(0x0C);
|
||||
$buffer[2] = chr(0x0B);
|
||||
$buffer[3] = chr(0x0A);
|
||||
$uut = Google\FlatBuffers\ByteBuffer::wrap($buffer);
|
||||
$assert->Equal(0x0D0C0B0A, $uut->readLittleEndian(0, 4, true));
|
||||
|
||||
}
|
||||
|
||||
class Assert {
|
||||
public function ok($result, $message = "") {
|
||||
if (!$result){
|
||||
throw new Exception(!empty($message) ? $message : "{$result} is not true.");
|
||||
}
|
||||
}
|
||||
|
||||
public function Equal($result, $expected, $message = "") {
|
||||
if ($result != $expected) {
|
||||
throw new Exception(!empty($message) ? $message : "given the result {$result} is not equals as {$expected}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function strictEqual($result, $expected, $message = "") {
|
||||
if ($result !== $expected) {
|
||||
throw new Exception(!empty($message) ? $message : "given the result {$result} is not strict equals as {$expected}");
|
||||
}
|
||||
}
|
||||
|
||||
public function Throws($class, Callable $callback) {
|
||||
try {
|
||||
$callback();
|
||||
|
||||
throw new \Exception("passed statement don't throw an exception.");
|
||||
} catch (\Exception $e) {
|
||||
if (get_class($e) != get_class($class)) {
|
||||
throw new Exception("passed statement doesn't throw " . get_class($class) . ". throwws " . get_class($e));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user