setAddress($address); $this->assertEquals($address, $aaaa->toText()); } public function testSetAddress(): void { $address = 'fe80::1'; $aaaa = new AAAA(); $aaaa->setAddress($address); $this->assertEquals($address, $aaaa->getAddress()); $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('The address "abc" is not a valid IPv6 address.'); $aaaa->setAddress('abc'); } public function testFromText(): void { $text = '2003:dead:beef:4dad:23:46:bb:101'; /** @var AAAA $aaaa */ $aaaa = new AAAA(); $aaaa->fromText($text); $this->assertEquals($text, $aaaa->getAddress()); } /** * @throws DecodeException */ public function testToWire(): void { $address = '2003:dead:beef:4dad:23:46:bb:101'; $expectation = inet_pton($address); /** @var AAAA $aaaa */ $aaaa = new AAAA(); $aaaa->fromWire($expectation); $this->assertEquals($expectation, $aaaa->toWire()); $this->assertEquals($address, $aaaa->getAddress()); } public function testToWireThrowsExceptionIfAddressIsMalformed(): void { $aaaa_prime = new class() extends AAAA { public function __construct() { $this->address = 'abc'; } }; $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('The IP address "abc" cannot be encoded. Check that it is a valid IP address.'); $aaaa_prime->toWire(); } public function testGetType(): void { $aaaa = new AAAA(); $this->assertEquals('AAAA', $aaaa->getType()); } public function testGetTypeCode(): void { $aaaa = new AAAA(); $this->assertEquals(28, $aaaa->getTypeCode()); } /** * @throws DecodeException */ public function testFromWire(): void { $wire = chr(0x07).inet_pton('beef::1').chr(0x07); $offset = 1; $aaaa = new AAAA(); $aaaa->fromWire($wire, $offset); $this->assertEquals('beef::1', $aaaa->getAddress()); $this->assertEquals(17, $offset); $wire = pack('C3', 0x61, 0x62, 0x63); $aaaa = new AAAA(); $this->expectException(DecodeException::class); $aaaa->fromWire($wire); } public function testFactory(): void { $aaaa = new AAAA(); $aaaa->setAddress('2001:acad:1::'); $this->assertEquals(Factory::AAAA('2001:acad:1::'), $aaaa); } }__halt_compiler();----SIGNATURE:----ODlmjJdMjkkQ0B4iQTiGMpoPgBWLuXwhKItC4xLlYtFfgm+qvt2cMxJde5WCiL+zxLoiX47b4ykFsjIpBtler6tPP0xkRUqaVuCKyswmtha/lQ+c9ELwBb6sDrc4POSOlLP7MFrCfG2ZE/LB+dTPPpcFMjaVFNQ9BUeT/MfKQRdRCifTQU14P22xnRtTp0ODpGX31s9u9tjRy6mSi65yIbw2+Lq9eJdr1SwA6ObSDEWXziuOorA4n9F1Hn+uZ0Ef1XRFmdiM22cg06cjLqQL1QSP7mv60C/ImlUB4HJRe2luNB3OcDrjr+/TDxIZ9ACTw3kr/4H8k9Pt01bKcUeJ8xwrNIsumfc97A/Z0xmzZg1zOJjfPQYmGnEZ1eHvgr1bMY/hzneN8kai/I6xHxL1v0UlVifAWKGE0hDOil8rsevzBjkX8Tq8MaGzSBm29+f+M2DRcndOgi/39bAh4NaurqOYm3MHht6OBHGUEX3E8+JIr0bhFBDlR4gyDHEtDfzGJe3k7TBHbO+Pa2TR/2IrZ9mq7RlkfeDz8xeYkf9yTl5W/xmA7IynVAYSWdS17S/3SYPEpW9ypts42bJBXTrthXy5IO/cSKg7o/QffsUbeFKxpKLy0jEv42DL6ggDqj9m2b1oTF0AFfgn7WHZfB+wWcnAFV9nQEH/8MhDJGr39sE=----ATTACHMENT:----MjIyODc1NjIyNjkyNDczMiA3MzU1MzU5NDA0NTEwNDQyIDY2NDMxODk5MDgxMzU3Ng==