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