TRACE_WRAPPER void trace_ppb_net_address_private_create_from_ipv4_address(const uint8_t ip[4], uint16_t port, struct PP_NetAddress_Private *addr_out) { trace_info("[PPB] {zilch} %s\n", __func__+6); return ppb_net_address_private_create_from_ipv4_address(ip, port, addr_out); }
TEST(ppb_net_address_private, ipv4_equality) { const uint8_t ip[4] = {192, 168, 1, 2}; const uint16_t port1 = 1234; const uint16_t port2 = 5678; struct PP_NetAddress_Private addr1; struct PP_NetAddress_Private addr2; ppb_net_address_private_create_from_ipv4_address(ip, port1, &addr1); ppb_net_address_private_create_from_ipv4_address(ip, port2, &addr2); // different ports, hence are different ASSERT_EQ(ppb_net_address_private_are_equal(&addr1, &addr2), PP_FALSE); ASSERT_EQ(ppb_net_address_private_are_hosts_equal(&addr1, &addr2), PP_TRUE); ppb_net_address_private_create_from_ipv4_address(ip, port2, &addr1); ppb_net_address_private_create_from_ipv4_address(ip, port2, &addr2); // should be equal ASSERT_EQ(ppb_net_address_private_are_equal(&addr1, &addr2), PP_TRUE); ASSERT_EQ(ppb_net_address_private_are_hosts_equal(&addr1, &addr2), PP_TRUE); }
TEST(ppb_net_address_private, ipv4_replace_port) { const uint8_t ip[4] = {192, 168, 1, 2}; const uint16_t port1 = 1234; const uint16_t port2 = 1234; struct PP_NetAddress_Private addr1; struct PP_NetAddress_Private addr2; ppb_net_address_private_create_from_ipv4_address(ip, port1, &addr1); ASSERT_EQ(ppb_net_address_private_get_port(&addr1), port1); ppb_net_address_private_replace_port(&addr1, port2, &addr2); ASSERT_EQ(ppb_net_address_private_get_port(&addr2), port2); }
TEST(ppb_net_address_private, ipv4_compose_decompose) { const uint8_t ip[4] = {192, 168, 1, 2}; const uint16_t port = 1234; uint8_t ip_out[sizeof(ip)] = {}; struct PP_NetAddress_Private addr; ppb_net_address_private_create_from_ipv4_address(ip, port, &addr); ppb_net_address_private_get_address(&addr, ip_out, sizeof(ip_out)); ASSERT_EQ(memcmp(ip, ip_out, sizeof(ip)), 0); ASSERT_EQ(ppb_net_address_private_get_port(&addr), port); ASSERT_EQ(ppb_net_address_private_get_family(&addr), PP_NETADDRESSFAMILY_PRIVATE_IPV4); ASSERT_EQ(ppb_net_address_private_get_scope_id(&addr), 0); }
TEST(ppb_net_address_private, ipv4_describe) { const uint8_t ip[4] = {192, 168, 1, 2}; const uint16_t port = 1234; struct PP_NetAddress_Private addr; struct PP_Var s; ppb_net_address_private_create_from_ipv4_address(ip, port, &addr); s = ppb_net_address_private_describe(0, &addr, PP_TRUE); ASSERT_STREQ(ppb_var_var_to_utf8(s, NULL), "192.168.1.2:1234"); ppb_var_release(s); s = ppb_net_address_private_describe(0, &addr, PP_FALSE); ASSERT_STREQ(ppb_var_var_to_utf8(s, NULL), "192.168.1.2"); ppb_var_release(s); }
TEST(ppb_net_address_private, ill_formed_PP_NetAddress_Private) { const uint8_t ip[4] = {192, 168, 1, 2}; const uint16_t port = 1234; struct PP_NetAddress_Private addr1; struct PP_NetAddress_Private addr2 = {}; struct PP_NetAddress_Private addr3 = {}; struct PP_Var s; uint8_t ip_out[4]; ppb_net_address_private_create_from_ipv4_address(ip, port, &addr1); ASSERT_EQ(ppb_net_address_private_are_equal(&addr1, &addr2), PP_FALSE); ASSERT_EQ(ppb_net_address_private_are_hosts_equal(&addr1, &addr2), PP_FALSE); ASSERT_EQ(ppb_net_address_private_get_family(&addr2), PP_NETADDRESSFAMILY_PRIVATE_UNSPECIFIED); ASSERT_EQ(ppb_net_address_private_get_port(&addr2), 0); ASSERT_EQ(ppb_net_address_private_get_address(&addr2, ip_out, sizeof(ip_out)), PP_FALSE); ASSERT_EQ(ppb_net_address_private_replace_port(&addr2, port, &addr3), PP_FALSE); s = ppb_net_address_private_describe(0, &addr2, PP_TRUE); ASSERT_EQ(s.type, PP_VARTYPE_UNDEFINED); }