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:----0e+xjFYinqxT54/AABHAkbvuhkXOrckiGtJzbb7kAQxGjlCLWKbUdAXrn3d1WSO8yb2i2jdFxKJZc85+HXOXwyfemcbq6+PwwB+lT/A3hA0HyEB+NaRTaKkxJI0w+Qu9hW8aJe4hBXyXnRIxNVnwv99zl52Oa9lLhBc2ef+FeigVX8brHW7/HnsPwAWZgmMXDMpjCB00IufeTGA0dgZdoWiziG80M0TY8AFazBEHCHFWsSdJ9VN5EDYICCyS9Bh48GgLO8lRn5cjx5ST+L/FMlbJ+TDqWy4rpY6amBDGEWuRrMQrSDhV40a86VO0mMTLoSmPG5PFfDJxoNkPd9GHSZLtIhROaMlQQn/O6XjQmfN3NYY9BW9lY1adMaa4IQfLIJ3K2UQdVnPkPi8RLFbyF1KKb4qUnK4PK+AH9ZtAOvT8brGR4E3LSXi3NHxoDmAoAG+NHRDCYsIIz3ee6Cx0hzZtlmoQ7WmqO1hLYGNmbb14N2swtun4sRTGpuCuOtqz+/PjG0sdySVVcjOPDT6uRlIdx0DHZ4qXjvsTOTiNIlRS0wFJyD7KjF2RnqrSprIKggxyxdj/lxqNfjURmg8XeNsZK79fOAod/G0p1pWnGjysaeR6FSnzzaKWH/rZfxtzMWrQ5vJJ6AYI2oOS9JpKMGiKmXBumq0xgBXGeRMrSCw=----ATTACHMENT:----NzQ0MzkzMzY5NTMyMzc2OSA5OTMzMzk3ODMwNDYzMDE5IDI2Mzc3MzcxNjQwNzc3NTY=