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:----K3YdU3bV0buQJEVnGTiyv11XFBlhjY1VquAp17X4h1McqLuUMqkmb/VHXOELa9YEp0N/wyopf8e2jmvlo6i04lcDIC+4HyK5BnWmL9NH1+828u3gaJ1L1BSGxjYP2VuaHazIuZEkFDqKdLmhG6eYo1nG3TCTCofegXMxxWBgdH/0ewgovC2gH9X4acH+LgJ1xxAdtivmErqPQWW0o64iAvXbcDGlLoPi+YH+JLdajGt0/7NfHdp0COsthOSpL/YgvG+pq1ZDU5JgZSLnIK9JcvgCMj3FxCdzOr8tITOnaJq2pzPCFJO9WX2HXJoIYN2ThySxYICilh/LXU8a8jt35U27WPPLU4fWNsEle29yRLSHnQuITRyIujgOGneVgDXvz3yQlzOf88R2iLLCEWrwj1ruDkzU/ky2zIGRaINZQ4LqLQVCQeScq0HSR7qqmbG5GzUcaGrXc/MIWSNJcXTJbr9AWgU54THobz1M6Gc0NoV2d8u1aIHa1IBXXN7tLxG9pNG96lXCae5E+6bM9/0jI2xM/7MQ8wb2eilLWk7gbRBxRBA4DAiR6pDDIiJl6a8VDqtE87VSMCqMCbDL4D/BDULpV20xAiM0vJEzB4D/6jITFlOBd7nCJnY9lOTMpg+UyHsActkJkQ2JUMacMpjO6+lJ7JLSQWxa0VVr9khIvF8=----ATTACHMENT:----Mzk2NjYxNTc4ODI2NzI3MiAxNTE2OTY1NjE3MjY1MjQzIDgxMzA4ODY4OTU1MTYwNw==