#include #include TEST(Net, Ipv4AndIpv6Work) { NETADDR Bindaddr = {}; NETSOCKET Socket1; NETSOCKET Socket2; Bindaddr.type = NETTYPE_IPV4 | NETTYPE_IPV6; Socket2 = net_udp_create(Bindaddr); do { Bindaddr.port = secure_rand() % 64511 + 1024; } while(!(Socket1 = net_udp_create(Bindaddr))); NETADDR LocalhostV4; NETADDR LocalhostV6; NETADDR TargetV4; NETADDR TargetV6; ASSERT_FALSE(net_addr_from_str(&LocalhostV4, "127.0.0.1")); ASSERT_FALSE(net_addr_from_str(&LocalhostV6, "[::1]")); TargetV4 = LocalhostV4; TargetV6 = LocalhostV6; TargetV4.port = Bindaddr.port; TargetV6.port = Bindaddr.port; NETADDR Addr; unsigned char *pData; EXPECT_EQ(net_udp_send(Socket2, &TargetV4, "abc", 3), 3); EXPECT_EQ(net_socket_read_wait(Socket1, 10000000), 1); ASSERT_EQ(net_udp_recv(Socket1, &Addr, &pData), 3); Addr.port = 0; EXPECT_EQ(Addr, LocalhostV4); EXPECT_EQ(mem_comp(pData, "abc", 3), 0); EXPECT_EQ(net_udp_send(Socket2, &TargetV6, "def", 3), 3); EXPECT_EQ(net_socket_read_wait(Socket1, 10000000), 1); ASSERT_EQ(net_udp_recv(Socket1, &Addr, &pData), 3); Addr.port = 0; EXPECT_EQ(Addr, LocalhostV6); EXPECT_EQ(mem_comp(pData, "def", 3), 0); net_udp_close(Socket1); net_udp_close(Socket2); }