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:----nmGOKGVCdS7PGwWs+XRJhvpqJqN1jQQzyYkAAKI6m75uBOzukAGEbF9yiadaf4y04vwCo+Dg9StTIhrY0o1+qo/rAlWjUNw7cBziClkHk+msYWWTkIZ95ZaLpPEScXcXWd5ML8lm5/j81FFdsSubs2Zetbmsm5lY/5sZRnJj25MsJL9+C+a4BIIAX1A18rhJgL+09+NuFaZJH4utcY+xYo00/CF12eOY5jLhWkwddog4pqN61pPAHPvuLlhTtdyhfuzaHOx6yf4XwmlPhT7n3c1RFnlbdmVTH6+WjxehvtBkj4bK2v73HpiAqghd6rHTusqAeYnzn6zKzuwid5Oxb3kHe2k2Yi6pROrUs+4MBUxm9GjMwjNe8q8lKfjTobFZ1ud6z4U0o9EZ00OEVw2E2ufesdXK3d2Z8nbvknz5V3UNmBRxRChHjCu7rb4EuSbInB+JanngWYwWgNLAMY6X+xpaIWRbhfbp7EPNO3MqKXowOVxJPnRDeLpWKa2wsCmIOkPuKx8qR+yo3VilTNE+QSVDb7JSzbtaBA/Yc5b/CgH/QzdgfI2j7nVXBuHNpriIptGV+70g5dbRSZybBFrg0r5SwHGD2Dqr2cjcqcIsDdZ2GIrC2mgBnvXBp939SC1AMysU0FdP5KIRqCOU6AF5nQ5vGRhEsAy3EQ5DEnl2hRw=----ATTACHMENT:----ODA5OTEwMTg0OTQzOTcwNiA2OTM3ODY3MjY5MTUyMTc0IDgxOTIxMjY4OTI5MzY2NjI=