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