While developing this program logic to process the list of returned addresses it may be useful to carefully control the apr_sockaddr_info_get() results without having to muck with host files, resolver configuration files, or (shudder) the DNS server, especially if the test scenarios need to be replicated on multiple platforms.
I developed a small patch to APR to control resolution with an envvar. (The patch applies to r1165471 or so of the 1.4.x branch, and presumably to the recent 1.4.5 release.) With a build of APR which includes the patch, the environment variable APR_S_I_G can be set to a list of semicolon-delimited host definitions, each of which is a list of comma-delimited IPv4 or IPv6 numeric address strings, with square brackets around the IPv6 strings.
$ APR_S_I_G="myhost1=[::1],192.168.1.200;myhost2=[fe80::deadbeef],192.168.1.201" ./myproggie
A declaration of mixed IPv4 and IPv6 addresses will work only if the application passes APR_UNSPEC to apr_sockaddr_info_get(). If it passes a specific address family, declare a list of one or more addresses in that single address family.
Resolution proceeds normally if the hostname being resolved is not defined in the envvar.