about summary refs log tree commit diff stats
path: root/test/src/action_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/action_tests.c')
-rw-r--r--test/src/action_tests.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/test/src/action_tests.c b/test/src/action_tests.c new file mode 100644 index 0000000..997095d --- /dev/null +++ b/test/src/action_tests.c
@@ -0,0 +1,87 @@
1#include "../../src/libwifi.h"
2
3#include <errno.h>
4#include <stdio.h>
5#include <string.h>
6
7#define BCAST_MAC "\xff\xff\xff\xff\xff\xff"
8#define TO_MAC "\x00\x20\x91\xAA\xBB\xCC"
9const unsigned char to[] = TO_MAC;
10const unsigned char bcast[] = BCAST_MAC;
11
12int test_action_gen_full() {
13 struct libwifi_action action = {0};
14
15 int ret = libwifi_create_action(&action, bcast, to, ACTION_HT);
16 if (ret != 0) {
17 fprintf(stderr, "Failed to create action: %s\n", strerror(ret));
18 return ret;
19 }
20
21 int action_len = libwifi_get_action_length(&action);
22 if (action_len <= 0) {
23 fprintf(stderr, "Invalid action length: %d\n", action_len);
24 return action_len;
25 }
26
27 unsigned char *buf = malloc(action_len);
28 if (buf == NULL) {
29 fprintf(stderr, "Failed to allocate buffer\n");
30 return -1;
31 }
32
33 int dump_len = libwifi_dump_action(&action, buf, action_len);
34 if (dump_len <= 0) {
35 fprintf(stderr, "Failed to dump action\n");
36 return ret;
37 }
38
39 return 0;
40}
41
42int test_action_add_detail() {
43 struct libwifi_action action = {0};
44
45 int ret = libwifi_create_action(&action, bcast, to, ACTION_HT);
46 if (ret != 0) {
47 fprintf(stderr, "Failed to create action: %s\n", strerror(ret));
48 return ret;
49 }
50
51 ret = libwifi_add_action_detail(&action.fixed_parameters.details, (const unsigned char *) "HELLO WORLD", strlen("HELLO WORLD"));
52
53 int action_len = libwifi_get_action_length(&action);
54 if (action_len <= 0) {
55 fprintf(stderr, "Invalid action length: %d\n", action_len);
56 return action_len;
57 }
58
59 unsigned char *buf = malloc(action_len);
60 if (buf == NULL) {
61 fprintf(stderr, "Failed to allocate buffer\n");
62 return -1;
63 }
64
65 int dump_len = libwifi_dump_action(&action, buf, action_len);
66 if (dump_len <= 0) {
67 fprintf(stderr, "Failed to dump action\n");
68 return ret;
69 }
70
71 return 0;
72}
73
74int main(int argc, char **argv) {
75 if (argc < 2) {
76 printf("Specify test\n");
77 return -1;
78 }
79
80 if (strcmp(argv[1], "--action-gen-full") == 0) {
81 return test_action_gen_full();
82 } else if (strcmp(argv[1], "--action-gen-details") == 0) {
83 return test_action_add_detail();
84 }
85
86 return -1;
87}