@@ -256,6 +256,56 @@ public function testParseAAAAResponse()
256256 $ this ->assertSame ('2a00:1450:4009:809::200e ' , $ response ->answers [0 ]->data );
257257 }
258258
259+ public function testParseTXTResponse ()
260+ {
261+ $ data = "" ;
262+ $ data .= "04 69 67 6f 72 02 69 6f 00 " ; // answer: igor.io
263+ $ data .= "00 10 00 01 " ; // answer: type TXT, class IN
264+ $ data .= "00 01 51 80 " ; // answer: ttl 86400
265+ $ data .= "00 06 " ; // answer: rdlength 6
266+ $ data .= "05 68 65 6c 6c 6f " ; // answer: rdata length 5: hello
267+
268+ $ data = $ this ->convertTcpDumpToBinary ($ data );
269+
270+ $ response = new Message ();
271+ $ response ->header ->set ('anCount ' , 1 );
272+ $ response ->data = $ data ;
273+
274+ $ this ->parser ->parseAnswer ($ response );
275+
276+ $ this ->assertCount (1 , $ response ->answers );
277+ $ this ->assertSame ('igor.io ' , $ response ->answers [0 ]->name );
278+ $ this ->assertSame (Message::TYPE_TXT , $ response ->answers [0 ]->type );
279+ $ this ->assertSame (Message::CLASS_IN , $ response ->answers [0 ]->class );
280+ $ this ->assertSame (86400 , $ response ->answers [0 ]->ttl );
281+ $ this ->assertSame (array ('hello ' ), $ response ->answers [0 ]->data );
282+ }
283+
284+ public function testParseTXTResponseMultiple ()
285+ {
286+ $ data = "" ;
287+ $ data .= "04 69 67 6f 72 02 69 6f 00 " ; // answer: igor.io
288+ $ data .= "00 10 00 01 " ; // answer: type TXT, class IN
289+ $ data .= "00 01 51 80 " ; // answer: ttl 86400
290+ $ data .= "00 0C " ; // answer: rdlength 12
291+ $ data .= "05 68 65 6c 6c 6f 05 77 6f 72 6c 64 " ; // answer: rdata length 5: hello, length 5: world
292+
293+ $ data = $ this ->convertTcpDumpToBinary ($ data );
294+
295+ $ response = new Message ();
296+ $ response ->header ->set ('anCount ' , 1 );
297+ $ response ->data = $ data ;
298+
299+ $ this ->parser ->parseAnswer ($ response );
300+
301+ $ this ->assertCount (1 , $ response ->answers );
302+ $ this ->assertSame ('igor.io ' , $ response ->answers [0 ]->name );
303+ $ this ->assertSame (Message::TYPE_TXT , $ response ->answers [0 ]->type );
304+ $ this ->assertSame (Message::CLASS_IN , $ response ->answers [0 ]->class );
305+ $ this ->assertSame (86400 , $ response ->answers [0 ]->ttl );
306+ $ this ->assertSame (array ('hello ' , 'world ' ), $ response ->answers [0 ]->data );
307+ }
308+
259309 public function testParseResponseWithTwoAnswers ()
260310 {
261311 $ data = "" ;
0 commit comments