| <?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); | |
| } |