Initial commit.
[qa-tools:testrunner-lite.git] / tests / unit / ut_testresultlogger.c
1 /*
2  * This file is part of testrunner-lite
3  *
4  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5  *
6  * Contact: Sampo Saaristo <ext-sampo.2.saaristo@nokia.com>
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * version 2.1 as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  *
22  */
23
24 /* ------------------------------------------------------------------------- */
25 /* INCLUDE FILES */
26 #include <stdlib.h>
27 #include <check.h>
28 #include <string.h>
29
30 #include "testresultlogger.h"
31 #include "testdefinitionparser.h"
32 #include "testdefinitiondatatypes.h"
33 #include "testrunnerlite.h"
34 #include "testrunnerlitetestscommon.h"
35 #include "hwinfo.h"
36
37 /* ------------------------------------------------------------------------- */
38 /* EXTERNAL DATA STRUCTURES */
39 /* None */
40
41 /* ------------------------------------------------------------------------- */
42 /* EXTERNAL GLOBAL VARIABLES */
43 /* None */
44
45 /* ------------------------------------------------------------------------- */
46 /* EXTERNAL FUNCTION PROTOTYPES */
47 /* None */
48
49 /* ------------------------------------------------------------------------- */
50 /* GLOBAL VARIABLES */
51 /* None */
52
53 /* ------------------------------------------------------------------------- */
54 /* CONSTANTS */
55 /* None */
56
57 /* ------------------------------------------------------------------------- */
58 /* MACROS */
59 /* None */
60
61 /* ------------------------------------------------------------------------- */
62 /* LOCAL GLOBAL VARIABLES */
63 td_suite *suite;
64 td_set   *set;
65 char  *suite_description;
66 /* ------------------------------------------------------------------------- */
67 /* LOCAL CONSTANTS AND MACROS */
68 /* None */
69
70 /* ------------------------------------------------------------------------- */
71 /* MODULE DATA STRUCTURES */
72 /* None */
73
74 /* ------------------------------------------------------------------------- */
75 /* LOCAL FUNCTION PROTOTYPES */
76 /* ------------------------------------------------------------------------- */
77 LOCAL void ut_test_suite (td_suite *);
78 /* ------------------------------------------------------------------------- */
79 LOCAL void ut_test_suite_description (char *); 
80 /* ------------------------------------------------------------------------- */
81 LOCAL void ut_test_set (td_set *);     
82 /* ------------------------------------------------------------------------- */
83 /* FORWARD DECLARATIONS */
84 /* None */
85
86 /* ------------------------------------------------------------------------- */
87 /* ==================== LOCAL FUNCTIONS ==================================== */
88 /* ------------------------------------------------------------------------- */
89 LOCAL void ut_test_suite (td_suite *s)
90 {
91     if (suite)
92         td_suite_delete (suite);
93     suite = s;
94 }
95 /* ------------------------------------------------------------------------- */
96 LOCAL void ut_test_suite_description (char *desc)
97 {
98     if (suite_description)
99         free (suite_description);
100     suite_description = desc;
101             
102 }
103 /* ------------------------------------------------------------------------- */
104 LOCAL void ut_test_set (td_set *s)
105 {
106     if (set)
107         td_set_delete (set);
108     set = s;
109 }
110 /* ------------------------------------------------------------------------- */
111 START_TEST (test_logger_init_inv_args)
112
113     testrunner_lite_options test_opts;
114     hw_info hwinfo;
115     
116     memset (&hwinfo, 0x0, sizeof (hw_info));
117     memset (&test_opts, 0x0, sizeof (testrunner_lite_options));
118
119     fail_unless (init_result_logger(&test_opts, &hwinfo));
120     test_opts.output_type = OUTPUT_TYPE_XML;
121     fail_unless (init_result_logger(&test_opts, &hwinfo));
122     test_opts.output_type = OUTPUT_TYPE_TXT;
123     fail_unless (init_result_logger(&test_opts, &hwinfo));
124     
125 END_TEST
126 /* ------------------------------------------------------------------------- */
127 START_TEST (test_logger_write_xml)
128
129     td_parser_callbacks cbs;
130     testrunner_lite_options test_opts;
131     hw_info hwinfo;
132     
133
134     suite = NULL;
135     set = NULL;
136     
137     td_reader_close();
138     
139     memset (&cbs, 0x0, sizeof (cbs));
140     memset (&test_opts, 0x0, sizeof (testrunner_lite_options));
141     memset (&hwinfo, 0x0, sizeof (hw_info));
142
143     test_opts.input_filename = malloc (strlen(TESTDATA_VALID_XML_1)+1);
144     strcpy (test_opts.input_filename, TESTDATA_VALID_XML_1);
145     cbs.test_suite = ut_test_suite;
146     cbs.test_suite_description = ut_test_suite_description;
147     cbs.test_set = ut_test_set;
148
149     fail_if (td_register_callbacks (&cbs));
150     fail_if (td_reader_init(&test_opts));
151     
152     while (td_next_node() == 0);
153     
154     fail_unless (suite != NULL);
155     fail_unless (set != NULL);
156
157     test_opts.output_type = OUTPUT_TYPE_XML;
158     test_opts.output_filename = "/dev/null";
159     fail_if (init_result_logger (&test_opts, &hwinfo));
160     fail_if (write_pre_suite_tag (suite));
161     fail_if (write_post_suite_tag ());
162     fail_if (write_pre_set_tag (set));
163     fail_if (write_post_set_tag (set));
164
165     td_suite_delete (suite);
166     suite = NULL;
167     td_set_delete (set);
168     set = NULL;
169
170 END_TEST
171 /* ------------------------------------------------------------------------- */
172 START_TEST (test_logger_write_txt)
173
174     td_parser_callbacks cbs;
175     testrunner_lite_options test_opts;
176     hw_info hwinfo;
177     
178
179     suite = NULL;
180     set = NULL;
181     
182     td_reader_close();
183     
184     memset (&cbs, 0x0, sizeof (cbs));
185     memset (&test_opts, 0x0, sizeof (testrunner_lite_options));
186     memset (&hwinfo, 0x0, sizeof (hw_info));
187
188     test_opts.input_filename = malloc (strlen(TESTDATA_VALID_XML_1)+1);
189     strcpy (test_opts.input_filename, TESTDATA_VALID_XML_1);
190     cbs.test_suite = ut_test_suite;
191     cbs.test_suite_description = ut_test_suite_description;
192     cbs.test_set = ut_test_set;
193
194     fail_if (td_register_callbacks (&cbs));
195     fail_if (td_reader_init(&test_opts));
196     
197     while (td_next_node() == 0);
198     
199     fail_unless (suite != NULL);
200     fail_unless (set != NULL);
201
202     test_opts.output_type = OUTPUT_TYPE_XML;
203     test_opts.output_filename = "/dev/null";
204     fail_if (init_result_logger (&test_opts, &hwinfo));
205     fail_if (write_pre_suite_tag (suite));
206     fail_if (write_post_suite_tag ());
207     fail_if (write_pre_set_tag (set));
208     fail_if (write_post_set_tag (set));
209
210     td_suite_delete (suite);
211     suite = NULL;
212     td_set_delete (set);
213     set = NULL;
214
215 END_TEST
216 /* ------------------------------------------------------------------------- */
217 /* ======================== FUNCTIONS ====================================== */
218 /* ------------------------------------------------------------------------- */
219 Suite *make_testresultlogger_suite (void)
220 {
221     /* Create suite. */
222     Suite *s = suite_create ("testresultlogger");
223
224     /* Create test cases and add to suite. */
225     TCase *tc;
226
227     tc = tcase_create ("Test logger init with invalid arguments.");
228     tcase_add_test (tc, test_logger_init_inv_args);
229     suite_add_tcase (s, tc);
230
231     tc = tcase_create ("Test logger write methods to xml.");
232     tcase_add_test (tc, test_logger_write_xml);
233     suite_add_tcase (s, tc);
234
235     tc = tcase_create ("Test logger write methods to text file.");
236     tcase_add_test (tc, test_logger_write_txt);
237     suite_add_tcase (s, tc);
238
239
240     return s;
241 }
242
243 /* ================= OTHER EXPORTED FUNCTIONS ============================== */
244 /* None */
245
246 /* ------------------------------------------------------------------------- */
247 /* End of file */