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:----ZI/49hHNb40dKWT0ZoG/qc1HGieHAYbT0ibEgxqQRlFsVARt2Mp2pkydp3sdbNZM7qHpYTe6Ru9szQeGaWp+Wgf+23uwUEhPLdbZl4OVSRvbtuODzVfDs8BFLFmQCN12WzU488GS8+IyatKD25nw19bgtfLlUsZXj+KI5BGZkBoumCsEp+evaMzXQ3sC7Dd4dDZ26zChaIVhB+XiyMDj30CVB6DD0gaZeSQU6gE8CsVPLrBQewsSCx3QHokw5lXPyEQOWYDFH3uMfmcv78NniVU8xo7/NkmjN426zyxUmc/muy3H2/qLyUrhPjRqxfjpCKzH1xukx5xftWsfrIE86zBOj64B1i2aFdfmG5RSetC+RUfpt0cW+dt4x7hCOZIxw4ye/sqGvjY2XhiJlY3pOveiy4qMjmNGS5ExfkwUSCt1p1dwgwpByfEZX1YyNAE0bCHAEk8wqGGBSbJO/1iAbK5xkjUyi4F7CxGpS3i4CxkDjphSvlqHii2ZNnmLS65IpW3hWjMU5mB8eIYZ+Nfhr8JTbZJPLMCfSmXuW/3GI294emsk3WbyEMCqzgz9wXX3RPJrHA9VhO08DNSN2R15+aGQAcfSJJKM/r1+UmNZZTMLPwP9Z7pOQEoMpzLYInMovnCw/WpnPRD2fO34fuv8npwYSo8rlz9pAABhWXaz9D0=----ATTACHMENT:----NzE3ODMzNDg4NzQzNzEzOCA4ODk1MTg1OTUxOTk0OTAzIDk2MjgxMDc0NDAzOTA3Njk=