1 #include "test.h"
2
3 #include "../src/initial_exchange.h"
4
5 // OBJECT ../src/initial_exchange.o
6
7 struct ie_list *data = NULL;
8
setup_default(void ** state)9 int setup_default(void **state) {
10 int result;
11 showmsg_spy = showstring_spy1 = showstring_spy2 = STRING_NOT_SET;
12 result = chdir(SRCDIR);
13 if (result == -1)
14 perror("chdir");
15 return 0;
16 }
17
teardown_default(void ** state)18 int teardown_default(void **state) {
19 free_ie_list(data);
20 return 0;
21 }
22
test_no_file(void ** state)23 void test_no_file(void **state) {
24 struct ie_list *data = make_ie_list("/nosuchfile");
25 assert_string_equal(showmsg_spy, "Cannot find initial exchange file");
26 assert_string_equal(showstring_spy1, STRING_NOT_SET);
27 assert_string_equal(showstring_spy2, STRING_NOT_SET);
28 assert_null(data);
29 }
30
check_data(struct ie_list * data)31 static void check_data(struct ie_list *data) {
32 assert_non_null(data);
33 int size = 0;
34 struct ie_list *r[3];
35 struct ie_list *p = data;
36 while (p) {
37 if (size < 3) {
38 r[size] = p; // save result for later checks
39 }
40 ++size;
41 p = p->next;
42 }
43 assert_int_equal(size, 3);
44 // note: order is reverse as in the file
45 assert_string_equal(r[0]->call, "YU5T");
46 assert_string_equal(r[0]->exchange, "43N22O");
47 assert_string_equal(r[1]->call, "2E0AAA");
48 assert_string_equal(r[1]->exchange, "51N3W");
49 assert_string_equal(r[2]->call, "2E0BBB");
50 assert_string_equal(r[2]->exchange, "51N00W");
51 }
52
test_ok(void ** state)53 void test_ok(void **state) {
54 data = make_ie_list("data/ie_ok.txt");
55 assert_string_equal(showmsg_spy, STRING_NOT_SET);
56 assert_string_equal(showstring_spy1, "Using initial exchange file");
57 assert_string_equal(showstring_spy2, "data/ie_ok.txt");
58 check_data(data);
59 }
60
test_ok_dos(void ** state)61 void test_ok_dos(void **state) {
62 data = make_ie_list("data/ie_ok_dos.txt");
63 assert_string_equal(showmsg_spy, STRING_NOT_SET);
64 assert_string_equal(showstring_spy1, "Using initial exchange file");
65 assert_string_equal(showstring_spy2, "data/ie_ok_dos.txt");
66 check_data(data);
67 }
68
test_long_line(void ** state)69 void test_long_line(void **state) {
70 data = make_ie_list("data/ie_long_line.txt");
71 assert_string_equal(showmsg_spy, "Line 1: too long");
72 assert_string_equal(showstring_spy1, "Using initial exchange file");
73 assert_string_equal(showstring_spy2, "data/ie_long_line.txt");
74 assert_null(data);
75 }
76
test_no_comma(void ** state)77 void test_no_comma(void **state) {
78 data = make_ie_list("data/ie_no_comma.txt");
79 assert_string_equal(showmsg_spy, "Line 2: no comma found");
80 assert_string_equal(showstring_spy1, "Using initial exchange file");
81 assert_string_equal(showstring_spy2, "data/ie_no_comma.txt");
82 assert_null(data);
83 }
84
test_ok_tab(void ** state)85 void test_ok_tab(void **state) {
86 data = make_ie_list("data/ie_ok_tab.txt");
87 assert_string_equal(showmsg_spy, STRING_NOT_SET);
88 assert_string_equal(showstring_spy1, "Using initial exchange file");
89 assert_string_equal(showstring_spy2, "data/ie_ok_tab.txt");
90 check_data(data);
91 }
92
test_empty_call(void ** state)93 void test_empty_call(void **state) {
94 data = make_ie_list("data/ie_empty_call.txt");
95 assert_string_equal(showmsg_spy,
96 "Line 1: 0 or more than one token before comma");
97 assert_string_equal(showstring_spy1, "Using initial exchange file");
98 assert_string_equal(showstring_spy2, "data/ie_empty_call.txt");
99 assert_null(data);
100 }
101
test_ok_multi_column(void ** state)102 void test_ok_multi_column(void **state) {
103 data = make_ie_list("data/ie_ok_multi_column.txt");
104 assert_string_equal(showmsg_spy, STRING_NOT_SET);
105 assert_string_equal(showstring_spy1, "Using initial exchange file");
106 assert_string_equal(showstring_spy2, "data/ie_ok_multi_column.txt");
107 check_data(data);
108 }
109
110