<?php 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")); require join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), "php", 'Attacker.php')); require join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), "php", 'BookReader.php')); require join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), "php", 'Character.php')); require join(DIRECTORY_SEPARATOR, array(dirname(__FILE__), "php", 'Movie.php')); 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)); } } } } function main() { $assert = new Assert(); $fbb = new Google\FlatBuffers\FlatBufferBuilder(1); $charTypes = [ Character::Belle, Character::MuLan, Character::BookFan, ]; Attacker::startAttacker($fbb); Attacker::addSwordAttackDamage($fbb, 5); $attackerOffset = Attacker::endAttacker($fbb); $charTypesOffset = Movie::createCharactersTypeVector($fbb, $charTypes); $charsOffset = Movie::createCharactersVector( $fbb, [ BookReader::createBookReader($fbb, 7), $attackerOffset, BookReader::createBookReader($fbb, 2), ] ); Movie::startMovie($fbb); Movie::addCharactersType($fbb, $charTypesOffset); Movie::addCharacters($fbb, $charsOffset); Movie::finishMovieBuffer($fbb, Movie::endMovie($fbb)); $buf = Google\FlatBuffers\ByteBuffer::wrap($fbb->dataBuffer()->data()); $movie = Movie::getRootAsMovie($buf); $assert->strictEqual($movie->getCharactersTypeLength(), count($charTypes)); $assert->strictEqual($movie->getCharactersLength(), $movie->getCharactersTypeLength()); for ($i = 0; $i < count($charTypes); ++$i) { $assert->strictEqual($movie->getCharactersType($i), $charTypes[$i]); } $bookReader7 = $movie->getCharacters(0, new BookReader()); $assert->strictEqual($bookReader7->getBooksRead(), 7); $attacker = $movie->getCharacters(1, new Attacker()); $assert->strictEqual($attacker->getSwordAttackDamage(), 5); $bookReader2 = $movie->getCharacters(2, new BookReader()); $assert->strictEqual($bookReader2->getBooksRead(), 2); } 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); }