1 /*
2 * This file is part of RTRlib.
3 *
4 * This file is subject to the terms and conditions of the MIT license.
5 * See the file LICENSE in the top level directory for more details.
6 *
7 * Website: http://rtrlib.realmv6.org/
8 */
9
10 #include "rtrlib_unittests.h"
11 #include "rtrlib/rtr/packets_private.h"
12 #include "test_packets.h"
13
__wrap_tr_send_all(const struct tr_socket * socket,const void * pdu,const size_t len,const time_t timeout)14 int __wrap_tr_send_all(const struct tr_socket *socket,
15 const void *pdu, const size_t len,
16 const time_t timeout)
17 {
18 UNUSED(socket);
19 UNUSED(pdu);
20 UNUSED(len);
21 UNUSED(timeout);
22 return (int)mock();
23 }
24
__wrap_rtr_change_socket_state(struct rtr_socket * rtr_socket,const enum rtr_socket_state new_state)25 void __wrap_rtr_change_socket_state(struct rtr_socket *rtr_socket,
26 const enum rtr_socket_state new_state)
27 {
28 UNUSED(rtr_socket);
29 UNUSED(new_state);
30 }
31
test_rtr_send_reset_query(void ** state)32 static void test_rtr_send_reset_query(void **state)
33 {
34 struct rtr_socket socket;
35
36 UNUSED(state);
37
38 socket.connection_state_fp = NULL;
39
40 will_return(__wrap_tr_send_all, 0);
41 assert_int_equal(rtr_send_reset_query(&socket), RTR_ERROR);
42
43 will_return(__wrap_tr_send_all, 10);
44 assert_int_equal(rtr_send_reset_query(&socket), RTR_SUCCESS);
45 }
46
test_rtr_change_socket_state(void ** state)47 static void test_rtr_change_socket_state(void **state)
48 {
49 struct rtr_socket socket;
50
51 UNUSED(state);
52
53 socket.connection_state_fp = NULL;
54 socket.state = RTR_RESET;
55
56 __real_rtr_change_socket_state(&socket, RTR_SYNC);
57 assert_int_equal(socket.state, RTR_SYNC);
58
59 __real_rtr_change_socket_state(&socket, RTR_SYNC);
60 assert_int_equal(socket.state, RTR_SYNC);
61
62 __real_rtr_change_socket_state(&socket, RTR_SHUTDOWN);
63 assert_int_equal(socket.state, RTR_SHUTDOWN);
64
65 __real_rtr_change_socket_state(&socket, RTR_ESTABLISHED);
66 assert_int_equal(socket.state, RTR_SHUTDOWN);
67 }
68
main(void)69 int main(void)
70 {
71 const struct CMUnitTest tests[] = {
72 cmocka_unit_test(test_rtr_send_reset_query),
73 cmocka_unit_test(test_rtr_change_socket_state)
74 };
75 return cmocka_run_group_tests(tests, NULL, NULL);
76 }
77