createMemoryParser(hex2bin( "00" )); $this->assertEquals(0, $parser->readTimestamp()); $parser = $this->createMemoryParser(hex2bin( "B9FF" )); $this->assertEquals(16366, $parser->readTimestamp()); $parser = $this->createMemoryParser(hex2bin( "BAFFA0" )); $this->assertEquals(2637806, $parser->readTimestamp()); $parser = $this->createMemoryParser(hex2bin( "BBFFA004" )); $this->assertEquals(19415022, $parser->readTimestamp()); } public function testReadVariableLengthNumber() { $parser = $this->createMemoryParser(hex2bin( "00" )); $this->assertEquals(0, $parser->readVariableLengthNumber()); $parser = $this->createMemoryParser(hex2bin( "0A" )); $this->assertEquals(5, $parser->readVariableLengthNumber()); $parser = $this->createMemoryParser(hex2bin( "FA16" )); $this->assertEquals(1469, $parser->readVariableLengthNumber()); } public function testReadPlayerID() { $parser = $this->createMemoryParser(hex2bin( "03" )); $this->assertEquals(3, $parser->readPlayerID()); $parser = $this->createMemoryParser(hex2bin( "06" )); $this->assertEquals(6, $parser->readPlayerID()); } public function testReadBit() { $parser = $this->createMemoryParser(hex2bin( "01" )); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(0, $parser->readBit()); $this->assertEquals(0, $parser->readBit()); $this->assertEquals(0, $parser->readBit()); $this->assertEquals(0, $parser->readBit()); $this->assertEquals(0, $parser->readBit()); $this->assertEquals(0, $parser->readBit()); $this->assertEquals(0, $parser->readBit()); $parser = $this->createMemoryParser(hex2bin( "FF" )); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(1, $parser->readBit()); $this->assertEquals(1, $parser->readBit()); } public function testReadBits() { $parser = $this->createMemoryParser(hex2bin( "01" )); $this->assertEquals(1, $parser->readBits(2)); $this->assertEquals(0, $parser->readBits(2)); $this->assertEquals(0, $parser->readBits(2)); $this->assertEquals(0, $parser->readBits(2)); $parser = $this->createMemoryParser(hex2bin( "FF" )); $this->assertEquals(3, $parser->readBits(2)); $this->assertEquals(3, $parser->readBits(2)); $this->assertEquals(3, $parser->readBits(2)); $this->assertEquals(3, $parser->readBits(2)); } public function testReadBitsMultiByteAligned() { // multi byte (aligned) $parser = $this->createMemoryParser(hex2bin( "00FF" )); $this->assertEquals(0xFF00, $parser->readBits(16)); } public function testReadBitsMultiByteNotAligned() { // multi byte (not aligned) $parser = $this->createMemoryParser(hex2bin( "FFAA" )); $this->assertEquals(15, $parser->readBits(4)); $this->assertEquals(2735, $parser->readBits(12)); } }