createMemoryBitStream(hex2bin( "01" )); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(0, $stream->readBit()); $this->assertEquals(0, $stream->readBit()); $this->assertEquals(0, $stream->readBit()); $this->assertEquals(0, $stream->readBit()); $this->assertEquals(0, $stream->readBit()); $this->assertEquals(0, $stream->readBit()); $this->assertEquals(0, $stream->readBit()); $stream = $this->createMemoryBitStream(hex2bin( "FF" )); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(1, $stream->readBit()); $this->assertEquals(1, $stream->readBit()); } public function testReadBits() { $stream = $this->createMemoryBitStream(hex2bin( "01" )); $this->assertEquals(1, $stream->readBits(2)); $this->assertEquals(0, $stream->readBits(2)); $this->assertEquals(0, $stream->readBits(2)); $this->assertEquals(0, $stream->readBits(2)); $stream = $this->createMemoryBitStream(hex2bin( "FF" )); $this->assertEquals(3, $stream->readBits(2)); $this->assertEquals(3, $stream->readBits(2)); $this->assertEquals(3, $stream->readBits(2)); $this->assertEquals(3, $stream->readBits(2)); } public function testReadBitsMultiByteAligned() { // multi byte (aligned) $stream = $this->createMemoryBitStream(hex2bin( "00FF" )); $this->assertEquals(0xFF00, $stream->readBits(16)); } public function testReadBitsMultiByteNotAligned() { // multi byte (not aligned) $stream = $this->createMemoryBitStream(hex2bin( "FFAA" )); $this->assertEquals(15, $stream->readBits(4)); $this->assertEquals(2735, $stream->readBits(12)); } }