diff options
author | Anders Sundman <anders@4zm.org> | 2011-11-11 07:49:41 +0100 |
---|---|---|
committer | Anders Sundman <anders@4zm.org> | 2011-11-11 07:49:41 +0100 |
commit | 8c7658dfdf651e629da11c46affbebcd799b6a59 (patch) | |
tree | ed68ea6e508c1e51f069567e50792e047495bebb /src/test/test_addr.c | |
parent | 01e1dc0e6227a8d7e107e41cf19ac9c68d47e7b7 (diff) | |
download | tor-8c7658dfdf651e629da11c46affbebcd799b6a59.tar.gz tor-8c7658dfdf651e629da11c46affbebcd799b6a59.zip |
Unit tests for tor_inet_ntop
Diffstat (limited to 'src/test/test_addr.c')
-rw-r--r-- | src/test/test_addr.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/test/test_addr.c b/src/test/test_addr.c index 58e3e3dace..ec59e5bdfe 100644 --- a/src/test/test_addr.c +++ b/src/test/test_addr.c @@ -53,9 +53,17 @@ test_addr_basic(void) char tmpbuf[TOR_ADDR_BUF_LEN]; const char *ip = "176.192.208.224"; struct in_addr in; - tor_inet_pton(AF_INET, ip, &in); - tor_inet_ntop(AF_INET, &in, tmpbuf, sizeof(tmpbuf)); + + /* good round trip */ + test_eq(tor_inet_pton(AF_INET, ip, &in), 1); + test_eq_ptr(tor_inet_ntop(AF_INET, &in, tmpbuf, sizeof(tmpbuf)), &tmpbuf); test_streq(tmpbuf, ip); + + /* just enough buffer length */ + test_streq(tor_inet_ntop(AF_INET, &in, tmpbuf, strlen(ip) + 1), ip); + + /* too short buffer */ + test_eq_ptr(tor_inet_ntop(AF_INET, &in, tmpbuf, strlen(ip)), NULL); } done: @@ -179,6 +187,29 @@ test_addr_ip6_helpers(void) // struct in_addr b1, b2; /* Test tor_inet_ntop and tor_inet_pton: IPv6 */ + { + const char *ip = "2001::1234"; + const char *ip_ffff = "::ffff:192.168.1.2"; + + /* good round trip */ + test_eq(tor_inet_pton(AF_INET6, ip, &a1), 1); + test_eq_ptr(tor_inet_ntop(AF_INET6, &a1, buf, sizeof(buf)), &buf); + test_streq(buf, ip); + + /* good round trip - ::ffff:0:0 style */ + test_eq(tor_inet_pton(AF_INET6, ip_ffff, &a2), 1); + test_eq_ptr(tor_inet_ntop(AF_INET6, &a2, buf, sizeof(buf)), &buf); + test_streq(buf, ip_ffff); + + /* just long enough buffer (remember \0) */ + test_streq(tor_inet_ntop(AF_INET6, &a1, buf, strlen(ip)+1), ip); + test_streq(tor_inet_ntop(AF_INET6, &a2, buf, strlen(ip_ffff)+1), + ip_ffff); + + /* too short buffer (remember \0) */ + test_eq_ptr(tor_inet_ntop(AF_INET6, &a1, buf, strlen(ip)), NULL); + test_eq_ptr(tor_inet_ntop(AF_INET6, &a2, buf, strlen(ip_ffff)), NULL); + } /* ==== Converting to and from sockaddr_t. */ sin = (struct sockaddr_in *)&sa_storage; |