1 #include "test.h"
2
3 #include "../src/cabrillo_utils.h"
4 #include "../src/readcabrillo.h"
5
6 // OBJECT ../src/cabrillo_utils.o
7 // OBJECT ../src/readcabrillo.o
8 // OBJECT ../src/bands.o
9
10 /* test stubs and dummies */
11 int do_cabrillo = 0; /* actually converting cabrillo file to Tlf log */
12 extern struct tm *time_ptr;
13 struct tm time_ptr_cabrillo;
14
15 int qsoflags_for_qtc[MAX_QSOS];
16 extern freq_t freq;
17
addcall()18 void addcall() { }
store_qso()19 void store_qso() { }
cleanup_qso()20 void cleanup_qso() { }
make_qtc_logline(struct read_qtc_t qtc_line,char * fname)21 void make_qtc_logline(struct read_qtc_t qtc_line, char *fname) { }
getgrid(char * comment)22 char *getgrid(char *comment) { return comment; }
checkexchange(int x)23 void checkexchange(int x) { }
24
25 /* some spies */
26 int bandinx_spy;
27
makelogline()28 void makelogline() {
29 bandinx_spy = bandinx;
30 }
31
32 char formatfile[100];
33
setup(void ** state)34 int setup(void **state) {
35 strcpy(formatfile, TOP_SRCDIR);
36 strcat(formatfile, "/share/cabrillo.fmt");
37 return 0;
38 }
39
40 /* export non public protoypes for test */
41 int starts_with(char *line, char *start);
42 void cab_qso_to_tlf(char *line, struct cabrillo_desc *cabdesc);
43 extern struct read_qtc_t qtc_line; /* make global for testability */
44
45 /* Test of helper functions */
test_starts_with_succeed(void ** state)46 void test_starts_with_succeed(void **state) {
47 char line[] = "Test string";
48
49 assert_int_equal(starts_with(line, "Test"), 1);
50 }
51
test_starts_with_fails(void ** state)52 void test_starts_with_fails(void **state) {
53 char line[] = "Test string";
54
55 assert_int_equal(starts_with(line, "Tes "), 0);
56 }
57
58
59 /* tests for cabrillo_utils.c */
test_translateItem(void ** state)60 void test_translateItem(void **state) {
61 assert_int_equal(translate_item_name(""), NO_ITEM);
62 assert_int_equal(translate_item_name("NONSENSE"), NO_ITEM);
63 assert_int_equal(translate_item_name("FREQ"), FREQ);
64 assert_int_equal(translate_item_name("QTC"), QTC);
65 }
66
test_freeCabfmt(void ** state)67 void test_freeCabfmt(void **state) {
68 /* please test with valgrind that all memory is correctly given back */
69
70 // no desc given
71 struct cabrillo_desc *desc = NULL;
72 free_cabfmt(desc);
73
74 // empty desc given
75 desc = g_new0(struct cabrillo_desc, 1);
76 free_cabfmt(desc);
77
78 // only QSO entries
79 desc = g_new0(struct cabrillo_desc, 1);
80 desc->name = strdup("hallo");
81 desc->item_array = g_ptr_array_new();
82 desc->item_count = 0;
83 free_cabfmt(desc);
84 //
85 // QSO and QTC entries
86 desc = g_new0(struct cabrillo_desc, 1);
87 desc->name = strdup("hallo");
88 desc->item_array = g_ptr_array_new();
89 desc->item_count = 0;
90 desc->qtc_item_array = g_ptr_array_new();
91 desc->qtc_item_count = 0;
92 free_cabfmt(desc);
93 }
94
test_parseLine(void ** state)95 void test_parseLine(void **state) {
96 struct line_item *line;
97
98 line = parse_line_entry("");
99 assert_int_equal(line->tag, NO_ITEM);
100 g_free(line);
101
102 line = parse_line_entry("hallo");
103 assert_int_equal(line->tag, NO_ITEM);
104 g_free(line);
105
106 line = parse_line_entry("DATE,10");
107 assert_int_equal(line->tag, DATE);
108 assert_int_equal(line->len, 10);
109 g_free(line);
110 }
111
test_readCabrilloFormatUniversal(void ** state)112 void test_readCabrilloFormatUniversal(void **state) {
113 struct cabrillo_desc *desc;
114 desc = read_cabrillo_format(formatfile, "UNIVERSAL");
115 assert_non_null(desc);
116 assert_string_equal(desc->name, "UNIVERSAL");
117 assert_int_equal(desc->item_count, 10);
118 assert_non_null(desc->item_array);
119 assert_int_equal(desc->qtc_item_count, 0);
120 assert_null(desc->qtc_item_array);
121 free_cabfmt(desc);
122 }
123
test_readCabrilloFormatWAE(void ** state)124 void test_readCabrilloFormatWAE(void **state) {
125 struct cabrillo_desc *desc;
126 desc = read_cabrillo_format(formatfile, "WAEDC");
127 assert_non_null(desc);
128 assert_string_equal(desc->name, "WAEDC");
129 assert_int_equal(desc->item_count, 10);
130 assert_non_null(desc->item_array);
131 assert_int_equal(desc->qtc_item_count, 8);
132 assert_non_null(desc->qtc_item_array);
133 free_cabfmt(desc);
134 }
135
test_readCabrilloFileNotFound(void ** state)136 void test_readCabrilloFileNotFound(void **state) {
137 struct cabrillo_desc *desc;
138 char formatfile1[100];
139 strcpy(formatfile1, TOP_SRCDIR);
140 strcat(formatfile1, "/share/cabrillo1.fmt");
141 desc = read_cabrillo_format(formatfile1, "WAEDC");
142 assert_null(desc);
143 }
144
test_readCabrilloFormatNotFound(void ** state)145 void test_readCabrilloFormatNotFound(void **state) {
146 struct cabrillo_desc *desc;
147 desc = read_cabrillo_format(formatfile, "NOT_IN_FILE");
148 assert_null(desc);
149 }
150
151
152 /* tests for readcabrillo */
test_cabToTlf_ParseQSO(void ** state)153 void test_cabToTlf_ParseQSO(void **state) {
154 struct cabrillo_desc *desc;
155 desc = read_cabrillo_format(formatfile, "UNIVERSAL");
156 bandinx_spy = 0;
157 cab_qso_to_tlf("QSO: 7002 RY 2016-08-13 0033 HA2OS 589 0008 K6ND 599 044",
158 desc);
159 assert_int_equal(bandinx_spy, 3);
160 assert_int_equal((int)freq, 7002000);
161 assert_int_equal(trxmode, DIGIMODE);
162 assert_string_equal(hiscall, "K6ND");
163 assert_string_equal(my_rst, "589");
164 assert_string_equal(his_rst, "599");
165 assert_string_equal(comment, "044");
166 assert_int_equal(time_ptr_cabrillo.tm_hour, 00);
167 assert_int_equal(time_ptr_cabrillo.tm_min, 33);
168 assert_int_equal(time_ptr_cabrillo.tm_year, 2016 - 1900); /* year-1900 */
169 assert_int_equal(time_ptr_cabrillo.tm_mon, 8 - 1); /* 0-11 */
170 assert_int_equal(time_ptr_cabrillo.tm_mday, 13);
171 }
172
test_cabToTlf_ParseXQSO(void ** state)173 void test_cabToTlf_ParseXQSO(void **state) {
174 struct cabrillo_desc *desc;
175 desc = read_cabrillo_format(formatfile, "UNIVERSAL");
176 bandinx_spy = 0;
177 cab_qso_to_tlf("X-QSO: 7002 PH 2016-08-13 0033 HA2OS 589 0008 K6ND 599 044",
178 desc);
179 assert_int_equal(bandinx_spy, 3);
180 assert_int_equal((int)freq, 7002000);
181 assert_int_equal(trxmode, SSBMODE);
182 assert_string_equal(hiscall, "K6ND");
183 assert_string_equal(my_rst, "589");
184 assert_string_equal(his_rst, "599");
185 assert_string_equal(comment, "044");
186 assert_int_equal(time_ptr_cabrillo.tm_hour, 00);
187 assert_int_equal(time_ptr_cabrillo.tm_min, 33);
188 assert_int_equal(time_ptr_cabrillo.tm_year, 2016 - 1900); /* year-1900 */
189 assert_int_equal(time_ptr_cabrillo.tm_mon, 8 - 1); /* 0-11 */
190 assert_int_equal(time_ptr_cabrillo.tm_mday, 13);
191 }
192
test_cabToTlf_ParseQTC(void ** state)193 void test_cabToTlf_ParseQTC(void **state) {
194 struct cabrillo_desc *desc;
195 desc = read_cabrillo_format(formatfile, "WAEDC");
196 qtcdirection = SEND;
197 bandinx_spy = 0;
198 cab_qso_to_tlf("QTC: 14084 CW 2016-11-12 1214 HA2OS 13/10 K4GM 0230 DL6UHD 074",
199 desc);
200 assert_int_equal((int)qtc_line.freq, 14084000);
201 assert_string_equal(qtc_line.mode, "CW ");
202 assert_int_equal(time_ptr_cabrillo.tm_hour, 12);
203 assert_int_equal(time_ptr_cabrillo.tm_min, 14);
204 assert_int_equal(time_ptr_cabrillo.tm_year, 2016 - 1900); /* year-1900 */
205 assert_int_equal(time_ptr_cabrillo.tm_mon, 11 - 1); /* 0-11 */
206 assert_int_equal(time_ptr_cabrillo.tm_mday, 12);
207 assert_string_equal(qtc_line.call, "K4GM");
208 assert_int_equal(qtc_line.qtchead_serial, 13);
209 assert_int_equal(qtc_line.qtchead_count, 10);
210 assert_string_equal(qtc_line.qtc_time, "0230");
211 assert_string_equal(qtc_line.qtc_call, "DL6UHD");
212 assert_int_equal(qtc_line.qtc_serial, 74);
213 }
214
215 #if 0
216 static void test_cabToTlf_KeepUnrelated(void **state) {
217 struct cabrillo_desc *desc;
218 desc = read_cabrillo_format("../share/cabrillo.fmt", "UNIVERSAL");
219
220 bandinx = 0;
221 strcpy(qsonrstr, "1234");
222 qsonum = 1234;
223
224 cab_qso_to_tlf("QSO: 7002 RY 2016-08-13 0033 HA2OS 589 0008 K6ND 599 044",
225 desc);
226
227 assert_string_equal(qsonrstr, "1234");
228 assert_int_equal(qsonum, 1234);
229 assert_int_equal(bandinx, 0);
230 }
231 #endif
232
233
234