public function testEncodeDecodeValid() { $validData = array(array(20, 30), array(0, IntegerPair::MAX_32BIT_INTEGER_VALUE), array(IntegerPair::MAX_32BIT_INTEGER_VALUE, 0), array(IntegerPair::MAX_32BIT_INTEGER_VALUE, IntegerPair::MAX_32BIT_INTEGER_VALUE)); foreach ($validData as $i => $data) { // Test encode $integerPair = new IntegerPair($data[0], $data[1]); $encodedInteger = $integerPair->get64bitInteger(); $this->assertEquals($data[0], $integerPair->getIntegerA()); $this->assertEquals($data[1], $integerPair->getIntegerB()); $this->assertLessThanOrEqual(PHP_INT_MAX, $encodedInteger); $this->assertGreaterThanOrEqual(-(PHP_INT_MAX + 1), $encodedInteger); // Test decode $decodedPair = IntegerPair::unpack($encodedInteger); $this->assertEquals($data[0], $decodedPair->getIntegerA()); $this->assertEquals($data[1], $decodedPair->getIntegerB()); } }