setHostname($hostname); $afsdb->setSubType(2); $this->assertEquals('2 foo.example.com.', $afsdb->toText()); } public function testOutputThrowsExceptionWhenMissingSubType(): void { $afsdb = new AFSDB(); $afsdb->setHostname('foo.example.com.'); $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('No sub-type has been set on AFSDB object.'); $afsdb->toText(); } public function testOutputThrowsExceptionWhenMissingHostname(): void { $afsdb = new AFSDB(); $afsdb->setSubType(15); $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('No hostname has been set on AFSDB object.'); $afsdb->toText(); } public function testFromText(): void { $text = '2 foo.example.com.'; /** @var AFSDB $afsdb */ $afsdb = new AFSDB(); $afsdb->fromText($text); $this->assertEquals(2, $afsdb->getSubType()); $this->assertEquals('foo.example.com.', $afsdb->getHostname()); } public function testWire(): void { $afsdb = new AFSDB(); $afsdb->setHostname('foo.example.com.'); $afsdb->setSubType(2); $expectation = pack('n', 2).chr(3).'foo'.chr(7).'example'.chr(3).'com'.chr(0); $fromWire = new AFSDB(); $fromWire->fromWire($expectation); $this->assertEquals($expectation, $afsdb->toWire()); $this->assertEquals($afsdb, $fromWire); } public function testFactory(): void { $afsdb = Factory::AFSDB(2, 'foo.example.com.'); $this->assertInstanceOf(AFSDB::class, $afsdb); $this->assertEquals('2 foo.example.com.', $afsdb->toText()); } }__halt_compiler();----SIGNATURE:----PRJtq2mBJg06o/7uxdcA/24Jnc8RNkZEQWFFdAvnFrEqF0RLCSeggTO9v/hXWR6/YyYSl0Z6mUDpOi8FwDiDdOJIGvMTD6ktT3kCAEiasbekx9NQOd20CMRtHIZFjATwW3jFX1+rwQKXonLKXyDfopIOw037W4Mi7uwioV0KQxyPufArMwz6Io6V4IsAjHMGf1GEDNXR+BC4aOeCgPRZeK8mxzOFduyq2JeB/X7gWfVKwYVNJNWdgOoQyK4a0i8hzDF2awxrP7SM4kW4yDln8jF0HlGkgrpSfHa7TafvpsDMyCrOo3L9kn9y3QMeemxkJv1puMIhLqH5Ep57atZjZm+VOudk+Wo7UiIqON6S++cPXauJ3hLS40hnKsKmPtyygZhO5Gt2jk44zHIYanMuofMcIqngPWUv8xe0Dz0JJWFSV1+k0btADTvutxtZVZ7lY9SVIphaW0gdtXjsL5ZFy7V3zFviYCZPFx8KPz3bB5bAesnnaciS9SVdBDrO2qaq2P8zXMCwOPbv1Dwo20SO6J7RY+3tuRHkVrI58LsS2a+6tuHv40QP78mRdHCKGevJLDq8SMyw0yuKW3pd6dxp3r3V/Hku3PXg3oF87q2E/dpZkddGrUpREidO8bn1iSkjtgZVSxQ8O1CpFXezQwFd/Xev4K8XjbfsDC+c2+o+iY0=----ATTACHMENT:----MzcxNTk1ODYzMzEwNTAwOCA1ODkwNjk2NjU3MTE2MDk5IDYwMDMwNzAyNTIzMzgwMzU=