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