socket-util.c

Socket helper utils
git clone git://git.finwo.net/lib/socket-util.c
Log | Files | Refs | README | LICENSE

sockaddr_to_string.test.c (1643B)


      1 #include <arpa/inet.h>
      2 #include <netinet/in.h>
      3 #include <stdlib.h>
      4 #include <string.h>
      5 #include "socket-util.h"
      6 #include "test.h"
      7 
      8 void test_sockaddr_to_string_ipv4() {
      9     struct sockaddr_in addr;
     10     memset(&addr, 0, sizeof(addr));
     11     addr.sin_family = AF_INET;
     12     inet_pton(AF_INET, "192.168.1.1", &addr.sin_addr);
     13     addr.sin_port = htons(8080);
     14 
     15     char buf[INET6_ADDRSTRLEN + 8];
     16     sockaddr_to_string((struct sockaddr *)&addr, buf, sizeof(buf));
     17 
     18     ASSERT_STRING_EQUALS("192.168.1.1:8080", buf);
     19 }
     20 
     21 void test_sockaddr_to_string_ipv6() {
     22     struct sockaddr_in6 addr;
     23     memset(&addr, 0, sizeof(addr));
     24     addr.sin6_family = AF_INET6;
     25     inet_pton(AF_INET6, "::1", &addr.sin6_addr);
     26     addr.sin6_port = htons(3000);
     27 
     28     char buf[INET6_ADDRSTRLEN + 8];
     29     sockaddr_to_string((struct sockaddr *)&addr, buf, sizeof(buf));
     30 
     31     ASSERT_STRING_EQUALS("[::1]:3000", buf);
     32 }
     33 
     34 void test_sockaddr_to_string_ipv6_full() {
     35     struct sockaddr_in6 addr;
     36     memset(&addr, 0, sizeof(addr));
     37     addr.sin6_family = AF_INET6;
     38     inet_pton(AF_INET6, "2001:db8::1", &addr.sin6_addr);
     39     addr.sin6_port = htons(443);
     40 
     41     char buf[INET6_ADDRSTRLEN + 8];
     42     sockaddr_to_string((struct sockaddr *)&addr, buf, sizeof(buf));
     43 
     44     ASSERT_STRING_EQUALS("[2001:db8::1]:443", buf);
     45 }
     46 
     47 void test_sockaddr_to_string_null() {
     48     char buf[64] = "initial";
     49     sockaddr_to_string(NULL, buf, sizeof(buf));
     50     ASSERT("null addr doesn't crash", 1);
     51 }
     52 
     53 int main() {
     54     RUN(test_sockaddr_to_string_ipv4);
     55     RUN(test_sockaddr_to_string_ipv6);
     56     RUN(test_sockaddr_to_string_ipv6_full);
     57     RUN(test_sockaddr_to_string_null);
     58     return TEST_REPORT();
     59 }