35 TEST_CASE(
"UDPSocket's 'send' method accepts a vector of bytes and an address.",
40 fakeit::Mock<UDPSocket> mock_socket(udp);
44 void(std::vector<uint8_t>::const_iterator,
45 std::vector<uint8_t>::const_iterator,
48 std::vector<uint8_t> vec = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
50 socket.
send(vec, addr);
54 void(std::vector<uint8_t>::const_iterator,
55 std::vector<uint8_t>::const_iterator,
57 [&](
auto a,
auto b,
auto c)
59 return a == vec.begin() && b == vec.end() && c == addr;
64 TEST_CASE(
"UDPSocket's 'send' method accepts two vector iterators and an " 65 "address.",
"[UDPSocket]")
69 fakeit::Mock<UDPSocket> mock_socket(udp);
70 std::vector<uint8_t> send_vec;
74 void(
const std::vector<uint8_t> &,
const IPAddress &))).AlwaysDo(
81 std::vector<uint8_t> vec = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
83 socket.
send(vec.begin(), vec.end(), addr);
87 void(
const std::vector<uint8_t> &,
const IPAddress &))).Once();
88 REQUIRE(vec == send_vec);
92 TEST_CASE(
"UDPSocket's 'receive' method takes a timeout and returns a vector " 93 "of bytes and the IP address that sent them.",
"[UDPSocket]")
97 fakeit::Mock<UDPSocket> mock_socket(udp);
100 mock_socket, receive,
101 IPAddress(std::back_insert_iterator<std::vector<uint8_t>>,
102 const std::chrono::nanoseconds &))).AlwaysDo(
106 std::vector<uint8_t> vec = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
107 std::copy(vec.begin(), vec.end(), a);
111 std::vector<uint8_t> vec_compare = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
112 std::chrono::nanoseconds timeout = 1ms;
113 auto [data, addr] = socket.
receive(timeout);
114 REQUIRE(data == vec_compare);
115 REQUIRE(addr ==
IPAddress(
"192.168.0.0"));
118 mock_socket, receive,
119 IPAddress(std::back_insert_iterator<std::vector<uint8_t>>,
120 const std::chrono::nanoseconds &)).Matching(
129 TEST_CASE(
"UDPSocket's 'receive' method takes a back inserter and a timeout " 130 "and returns the IP address that sent the bytes written to the " 131 "back inserter.",
"[UDPSocket]")
134 using receive_type = std::pair<std::vector<uint8_t>,
IPAddress>(
135 const std::chrono::nanoseconds &);
137 fakeit::Mock<UDPSocket> mock_socket(udp);
140 mock_socket, receive, receive_type)).AlwaysDo([](
auto a)
143 std::vector<uint8_t> vec = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
144 return std::pair<std::vector<uint8_t>,
IPAddress>(
148 std::vector<uint8_t> vec_compare = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
149 std::chrono::nanoseconds timeout = 1ms;
150 std::vector<uint8_t> data;
151 auto addr = socket.
receive(std::back_inserter(data), timeout);
152 REQUIRE(data == vec_compare);
153 REQUIRE(addr ==
IPAddress(
"192.168.0.0"));
156 mock_socket, receive, receive_type).Matching([](
auto a)
std::string str(const T &object)
virtual std::pair< std::vector< uint8_t >, IPAddress > receive(const std::chrono::nanoseconds &timeout=std::chrono::nanoseconds::zero())
virtual void send(const std::vector< uint8_t > &data, const IPAddress &address)
TEST_CASE("UDPSocket's 'send' method accepts a vector of bytes and an address.", "[UDPSocket]")