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:----WM+XhaTHdSkQKx8guNYHCN7GpHU/KKBhPqs8b2omSsZwJUayaAn3fQGbJ5gadiIzJ3lq2nmMLFNNwVK85Jjq7GaxRaCsKOvUpOq2MWdJhd+megHTYtCkCYQBcp2UXxjz48UZEZoJviMwQq1ZwdURM895l6c/xlzLvAxxTngKz68iCKUIv3UbdBJQJWZIwQJk8hRxJaPq4/ALqo/tyY+00I1K+/5BmwGMDbxqI5e/TkI2JlmQXo0bj1pIzTPkmyyZi1iwSgBI68X6aY9hsLREzpr/VjShM0gf3LjOQaw1cUCzqJf6xKqEvjOddQcuXmIwGirQtY/gYQOxrjMFN6GfDZEqhGcc2yCuGPc2WEtQoDzNC0Anvnl62QfxToFc0jQnWf4vSDn2b/VAXL63wGYoCCsdc+jqw9ifzw/h7h41zNNteUlUiKkmnj7Kb4VSu/QjNd6TiSJ0iZnqyyQifygHSm4wH/bd7fXLH3GWfeLOzt9fliIPFnb/ZlY5wlHQzq/64uizedyiWZyhBYcGmtX60tzmtz/kFPQ4i46w1qgwbIbt6pEnXSTZsILmaQuFV+eA0H3IpYGngB01r3qE1XLn0zKNa5QO4OtWQ+/dWXrLhtdafUqaIgrfmrAYXH8wE/bO4/xdcXFajW3iiDHBwp2wXIcix1JLuhfHbbeKzguifXc=----ATTACHMENT:----ODE3NDM4NzA0MjQxMjI1NCA5OTk2MDI5ODg3MzIyMDU1IDg3OTUyOTkwNzkwNDE5NDQ=