mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-18 14:08:19 +00:00
6691be1d90
Also fix memory leak in Net.Ipv4AndIpv6Work Rust tests fail to link when building in san directory, works in source directory.
51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include <base/system.h>
|
|
|
|
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);
|
|
}
|