Squashed 'third_party/flatbuffers/' content from commit acc9990ab
Change-Id: I48550d40d78fea996ebe74e9723a5d1f910de491
git-subtree-dir: third_party/flatbuffers
git-subtree-split: acc9990abd2206491480291b0f85f925110102ea
diff --git a/tests/phpUnionVectorTest.php b/tests/phpUnionVectorTest.php
new file mode 100644
index 0000000..4b5e258
--- /dev/null
+++ b/tests/phpUnionVectorTest.php
@@ -0,0 +1,109 @@
+<?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);
+}