The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;

use IO::Async::Test;
use IO::Async::Loop;

use IO::Async::Resolver::DNS;

my $loop = IO::Async::Loop->new;

testing_loop( $loop );

my $resolver = $loop->resolver;

{
   can_ok( $resolver, "res_query" );

   my $result;
   $resolver->res_query(
      dname => "www.cpan.org",
      type  => "A",
      on_resolved => sub {
         $result = shift;
      },
      on_error => sub { die "Test failed early - $_[-1]" },
   );

   wait_for { $result };

   isa_ok( $result, "Net::DNS::Packet", '$result from ->res_query isa Net::DNS::Packet' );
   # Lets not be too sensitive to what the answers actually are
   cmp_ok( scalar $result->answer, '>=', 1, '$result from ->res_query contains some answers' ) or
      diag( $result->string );
}

{
   can_ok( $resolver, "res_search" );

   my $result;
   $resolver->res_search(
      dname => "www.cpan.org",
      type  => "A",
      on_resolved => sub {
         $result = shift;
      },
      on_error => sub { die "Test failed early - $_[-1]" },
   );

   wait_for { $result };

   isa_ok( $result, "Net::DNS::Packet", '$result from ->res_search isa Net::DNS::Packet' );
   # Lets not be too sensitive to what the answers actually are
   cmp_ok( scalar $result->answer, '>=', 1, '$result from ->res_search contains some answers' ) or
      diag( $result->string );
}

done_testing;