public function testEncodeDecodeValid() { $validData = array(array(20, 30, 40, 50), array(0, IntegerQuartet::MAX_16BIT_INTEGER_VALUE, 0, IntegerQuartet::MAX_16BIT_INTEGER_VALUE), array(IntegerQuartet::MAX_16BIT_INTEGER_VALUE, 0, IntegerQuartet::MAX_16BIT_INTEGER_VALUE, 0), array(IntegerQuartet::MAX_16BIT_INTEGER_VALUE, IntegerQuartet::MAX_16BIT_INTEGER_VALUE, IntegerQuartet::MAX_16BIT_INTEGER_VALUE, IntegerQuartet::MAX_16BIT_INTEGER_VALUE)); foreach ($validData as $i => $data) { // Test encode $integerQuartet = new IntegerQuartet($data[0], $data[1], $data[2], $data[3]); $encodedInteger = $integerQuartet->get64bitInteger(); $this->assertEquals($data[0], $integerQuartet->getIntegerA()); $this->assertEquals($data[1], $integerQuartet->getIntegerB()); $this->assertEquals($data[2], $integerQuartet->getIntegerC()); $this->assertEquals($data[3], $integerQuartet->getIntegerD()); $this->assertLessThanOrEqual(PHP_INT_MAX, $encodedInteger); $this->assertGreaterThanOrEqual(-(PHP_INT_MAX + 1), $encodedInteger); // Test decode $decodedQuartet = IntegerQuartet::unpack($encodedInteger); $this->assertEquals($data[0], $decodedQuartet->getIntegerA()); $this->assertEquals($data[1], $decodedQuartet->getIntegerB()); $this->assertEquals($data[2], $decodedQuartet->getIntegerC()); $this->assertEquals($data[3], $decodedQuartet->getIntegerD()); } }
<?php require "./vendor/autoload.php"; Header("Content-type: text/plain"); // INTEGER PAIR ------------------------------------------------ // Create an IntegerPair object with 2 integers (within the 32bit range) $integerPair = new \IntegerPacking\IntegerPair(20, 30); echo "Encoded Pair | " . $integerPair->get64bitInteger() . "\n"; // Prints the 64 bit integer that combines the 2 32bit integers // Creates a new IntegerPair object from the packed 64bit integer $otherIntegerPair = \IntegerPacking\IntegerPair::unpack($integerPair->get64bitInteger()); echo "Decoded Pair | A: " . $otherIntegerPair->getIntegerA() . " - B: " . $otherIntegerPair->getIntegerB(); // INTEGER QUARTET ------------------------------------------------ // Create an IntegerQuartet object with 4 integers (within the 16bit range) $integerQuartet = new \IntegerPacking\IntegerQuartet(20, 30, 40, 50); echo "Encoded Quartet | " . $integerPair->get64bitInteger() . "\n"; // Prints the 64 bit integer that combines the 4 16bit integers // Creates a new IntegerQuartet object from the packed 64bit integer $otherIntegerQuartet = \IntegerPacking\IntegerQuartet::unpack($integerQuartet->get64bitInteger()); echo "Decoded Quartet | A: " . $otherIntegerQuartet->getIntegerA() . " - B: " . $otherIntegerQuartet->getIntegerB() . " - C: " . $otherIntegerQuartet->getIntegerC() . " - D: " . $otherIntegerQuartet->getIntegerD();