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:----oiqzPhwWz+WxZS/d0xOFrEC/mllUR+f1BwKyBhzwk9B789gjrOYJiNwPPDO16GWUnru4+orILT4csVmEIOcOsWQgkN7nx2HjdKrk2Hcm95YHKn3dlVKquhQBw2kMt83DB1bEhpvll4xk4/0n8DGOCDikv4fwE2ErPJJGcoxQcCk9xk7UnnGmfJ6N7/Y9oXPPTR8UZ6hb/M1/iJefgayGvoSDBpy81kFXj+Y/OlQ/GiP5ihUzIE3SQovI18tduBYXMF7hiZxQL5v1ibv4F/BfhJW7PF7nYQhPdloeJHXxrJn2a3BnzhFTP4rJeZ4yu5Nx5tBHwNkKRmQq/QEz18565VQHp00z5mFBnnQvTKKJ3neJaOcnMZAI4eut0JHA0e/IsZ0kfu6bbT6xbIpItqjp5TZsSEcYlajV6eMdB6RSXSd2dbOFKTGjHvrO7OD6hyb5lQvlj7ADPTgQQhO3LJxc0w+T+7ZtPNpCuzX3Z3IFv/pTWYGh6U0kL1Y+88WMje75EmBhGBATrbC0MQOQAk4jREoxDReZPGPw6Vk9pdswREn2488DliyGKsQuePUZur3dS4dvSFivUqlU73qhYkrTC/OI5NjR3ieolNn98UsW42gDfMpk/4Jlr8LDYIYiGFv9igDN+avCsDAMBFIxW1A9+YnmbCHCN0CaHEYr54KCWMs=----ATTACHMENT:----NDUxOTU0MTk1MzY3MDIzMCAyMTY5MzE0ODc4NDIwNzMxIDM1NjYzNTYzMDM3MjYwMTM=