aRdata = new A(); } public function testGetType(): void { $this->assertEquals('A', $this->aRdata->getType()); } public function testSetAddress(): void { $address = '192.168.1.1'; $this->aRdata->setAddress($address); $this->assertEquals($address, $this->aRdata->getAddress()); $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('The address "abc" is not a valid IPv4 address.'); $this->aRdata->setAddress('abc'); } public function testOutput(): void { $address = '192.168.1.1'; $this->aRdata->setAddress($address); $this->assertEquals($address, $this->aRdata->toText()); $this->assertEquals($address, $this->aRdata->toText()); } public function testFromText(): void { $text = '200.100.50.1'; /** @var A $a */ $a = new A(); $a->fromText($text); $this->assertEquals($text, $a->getAddress()); } /** * @throws DecodeException */ public function testWire(): void { $address = '200.100.50.1'; $expectation = inet_pton($address); /** @var A $a */ $a = new A(); $a->fromWire($expectation); $this->assertEquals($expectation, $a->toWire()); $this->assertEquals($address, $a->getAddress()); } public function testToWireThrowsExceptionIfAddressIsMalformed(): void { $a_prime = new class() extends A { 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.'); $a_prime->toWire(); } /** * @throws DecodeException */ public function testFromWire(): void { $wire = pack('C6', 0x07, 0xC0, 0xFF, 0x01, 0x01, 0x07); //⍾192.255.1.1⍾ $offset = 1; /** @var A $a */ $a = new A(); $a->fromWire($wire, $offset); $this->assertEquals('192.255.1.1', $a->getAddress()); $this->assertEquals(chr(0x07), $wire[$offset]); $wire = pack('C3', 0x61, 0x62, 0x63); $a = new A(); $this->expectException(DecodeException::class); $a->fromWire($wire); } }__halt_compiler();----SIGNATURE:----IV7XEucejcRpB0EZ5b8+cVvwOUTNQKHwUH4VggVwbr6hRIso41MX61AWMWBqNKo7MXuhUCan3pwcsG24w3ZhqrgEzELE/CW7Y9ifM9nPn6oSVDlCZeiLPuD2jWH09juxlHH5T8U1IZkhQuO/La0qttFByv696udmKvQk0yt7/1fObvqcPyugHkCK75FGOk2VMufMRzif2682t2TGihieQnOaMv1ALn+QKuYNtukzGrw3KmVBoc3vIGRRLC3IlQBFEleB9gQgS00iJ3bHZNHNQQ22KKGt5Q7WAQUgqlvRe+vPg8w1Sg/7OWE8EXtjgiIXzNWUd28ZkS1tkMLv7qvOPmGauL3pQPRLzlaKsBl7RzujoDrXFPardZeUJg6qH3Ma4V1Ong4E5tf4Q7IlWiMQeVaEcxavxYKFPHvMgg45CxuLuK+J5ecdhTPE04sayw7D3MI1iWeHAcTHWsiUFiAVFTPLpbxyKQDHj7qKPGEjtKj+uhmVzUmO+0VhRowYEhznukUtYLTYtwqwMTacFEI4A5gpdmhIZoyUomRHmkF/HWCnFom20OLLT26pxQGYWyX2lZuPiTJydoVwFCK/WZwjnzoUe7RixlFzJyoJn744rLVHg2Su1fMD8bNP5qVTMeoNUXBrfrhZfKLZiwvp1n0PNzP0ru1vlhqqUTbKvP54lZ4=----ATTACHMENT:----NDMwOTc1MTQ1MDE5NTU0OCAzMjMxNTc4MDg5MTA0NDY1IDg5MTI3OTg3MTA4NDUzMDQ=