110 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?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);
 | 
						|
}
 |