/* $Id: inet_aton-t.c 5061 2001-12-12 09:21:17Z rra $ */
/* inet_aton test suite. */
#include "config.h"
#include "clibrary.h"
#include <netinet/in.h>
int test_inet_aton(const char *, struct in_addr *);
static void
test_addr(int n, const char *string, unsigned long addr)
{
bool success, okay;
struct in_addr in;
success = test_inet_aton(string, &in);
okay = (success && in.s_addr == htonl(addr));
printf("%sok %d\n", okay ? "" : "not ", n);
if (!okay && !success) printf(" success: %d\n", success);
if (!okay && in.s_addr != htonl(addr))
printf(" want: %lx\n saw: %lx\n", (unsigned long) htonl(addr),
(unsigned long) in.s_addr);
}
static void
test_fail(int n, const char *string)
{
struct in_addr in;
int success;
in.s_addr = htonl(0x01020304UL);
success = test_inet_aton(string, &in);
success = (success == 0 && in.s_addr == htonl(0x01020304UL));
printf("%sok %d\n", success ? "" : "not ", n);
}
int
main(void)
{
puts("46");
test_addr( 1, "0.0.0.0", 0);
test_addr( 2, "127.0.0.000000", 0x7f000000UL);
test_addr( 3, "255.255.255.255", 0xffffffffUL);
test_addr( 4, "172.200.232.199", 0xacc8e8c7UL);
test_addr( 5, "1.2.3.4", 0x01020304UL);
test_addr( 6, "0x0.0x0.0x0.0x0", 0);
test_addr( 7, "0x7f.0x000.0x0.0x00", 0x7f000000UL);
test_addr( 8, "0xff.0xFf.0xFF.0xff", 0xffffffffUL);
test_addr( 9, "0xAC.0xc8.0xe8.0xC7", 0xacc8e8c7UL);
test_addr(10, "0xAa.0xbB.0xCc.0xdD", 0xaabbccddUL);
test_addr(11, "0xEe.0xfF.0.0x00000", 0xeeff0000UL);
test_addr(12, "0x1.0x2.0x00003.0x4", 0x01020304UL);
test_addr(13, "000000.00.000.00", 0);
test_addr(14, "0177.0", 0x7f000000UL);
test_addr(15, "0377.0377.0377.0377", 0xffffffffUL);
test_addr(16, "0254.0310.0350.0307", 0xacc8e8c7UL);
test_addr(17, "00001.02.3.00000004", 0x01020304UL);
test_addr(18, "16909060", 0x01020304UL);
test_addr(19, "172.062164307", 0xacc8e8c7UL);
test_addr(20, "172.0xc8.0xe8c7", 0xacc8e8c7UL);
test_addr(21, "127.1", 0x7f000001UL);
test_addr(22, "0xffffffff", 0xffffffffUL);
test_addr(23, "127.0xffffff", 0x7fffffffUL);
test_addr(24, "127.127.0xffff", 0x7f7fffffUL);
test_fail(25, "");
test_fail(26, "Donald Duck!");
test_fail(27, "a127.0.0.1");
test_fail(28, "aaaabbbb");
test_fail(29, "0x100000000");
test_fail(30, "0xfffffffff");
test_fail(31, "127.0xfffffff");
test_fail(32, "127.376926742");
test_fail(33, "127.127.01452466");
test_fail(34, "127.127.127.0x100");
test_fail(35, "256.0");
test_fail(36, "127.0378.127.127");
test_fail(37, "127.127.0x100.127");
test_fail(38, "127.0.o.1");
test_fail(39, "127.127.127.127v");
test_fail(40, "ef.127.127.127");
test_fail(41, "0128.127.127.127");
test_fail(42, "0xeg.127");
test_fail(43, ".127.127");
test_fail(44, "127.127.");
test_fail(45, "127..127");
test_fail(46, "de.ad.be.ef");
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1