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:----cgVoK1FJhx2Dj75a/beH1di1GlvFAxSI8/06UVkFM4aeYBTBS4MKM7grQSLidjIO5t1gZen6+abTRa3bZLlgZiry4JKnYQ4cWMB5c0LI3WBTfqM/AC9EdWuMiIhol/HbFH+I5GxvuUsrHzRtZ2uSebz6pAGXqnlgNHmgMhtmWz+JkHjWlQTaJWYSSMgELBzt5mK0C5BT1S882Ah1deL/Ljz9Peyw9UdpcLg4KbH5wOr4TdmHJlXPhKlpI1b4jedB4sNqaJpJPbaxcfX5cUt3wcBycWAP90l3d6iVxDm7gtOc3ukHIq0j0srwuqibTRCiDbnxD6Dikovs7bC0O42SjlgyeAzSUPlthLkzkagCrShhmygnsMsoPCZ2vpGtijuHK/pvDQWBQsnsmnb8Cc+3hNRNmk9ADfVykujEvXqn8ZgftiNov1eGPZCHF4oBBfEiuUdFmTwQ+7wCe/d6/CFX6Hmcw88w3yRgnoSr2EigmyvduOwBz72wov3eckbfwRpWQ1QFyy5MmBP2+td5WybnnyZtg+oxXN5Rd+QpV9kmAT+02r874/HPcuLzhj0mok4w/EWTUNWMLgN6+rXvUO3UJ9kAwZR0PuA/YzMmF3g5qM6J/HKptfRX9RMq8Rhh8Y1ahJbD+1eWGPMOuguRy9rxaKvlzUhpdm3Vu4XW2FY2ChU=----ATTACHMENT:----NzU3OTA4NTMyMTg3MDkzMyA1MzQ5MzQ3Njg4Njk4MDkgMjM2NTY1NjE3MDU5NDc1Nw==