2 Copyright (C) 1994-2007 Frans Slothouber, Jacco van Weert, Petteri Kettunen,
3 Bernd Koesling, Thomas Aglassinger, Anthon Pang, Stefan Kost, David Druffner,
4 Sasha Vasko, Kai Hofmann, Thierry Pierron, Friedrich Haase, and Gergely Budai.
6 This file is part of ROBODoc
8 ROBODoc is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 /****h* ROBODoc/Test_Generator
26 * The generator for test output.
28 * The purpose of this generator is to create output that is easily
29 * scanable by the system test scripts. This to make it easier to
30 * write tests for ROBODoc.
32 * This generator produces output in utf-8 encoding.
34 * This generator is experimental.
37 * $Id: test_generator.c,v 1.10 2007/07/10 19:13:52 gumpu Exp $
45 #include "test_generator.h"
51 char *RB_TEST_Get_Default_Extension(
57 void RB_TEST_Generate_String(
62 int l = strlen( a_string );
65 for ( i = 0; i < l; ++i )
68 RB_TEST_Generate_Char( dest_doc, c );
72 /* TODO Documentation */
74 void RB_TEST_Generate_Label(
79 int l = strlen( name );
82 fprintf( dest_doc, "<label>" );
83 for ( i = 0; i < l; ++i )
86 if ( utf8_isalnum( c ) )
88 RB_TEST_Generate_Char( dest_doc, c );
94 sprintf( buf, "%02x", c );
95 RB_TEST_Generate_Char( dest_doc, buf[0] );
96 RB_TEST_Generate_Char( dest_doc, buf[1] );
99 fprintf( dest_doc, "</label>" );
103 /****f* Generator/RB_TEST_Generate_Char
105 * RB_TEST_Generate_Char
107 * void RB_TEST_Generate_Char( FILE * dest_doc, int c )
109 * Switchboard to RB_TEST_Generate_Char
113 void RB_TEST_Generate_Char(
120 RB_FputcLatin1ToUtf8( dest_doc, c );
127 void RB_TEST_Generate_Header_Start(
129 struct RB_header *cur_header )
131 fprintf( dest_doc, "<header name=\"" );
132 RB_TEST_Generate_String( dest_doc, cur_header->name );
133 fprintf( dest_doc, "\" header_module=\"" );
134 RB_TEST_Generate_String( dest_doc, cur_header->module_name );
135 fprintf( dest_doc, "\"" );
136 fprintf( dest_doc, " header_function_name=\"" );
137 RB_TEST_Generate_String( dest_doc, cur_header->function_name );
138 fprintf( dest_doc, "\" >\n" );
141 void RB_TEST_Generate_Header_End(
143 struct RB_header *cur_header )
147 fprintf( dest_doc, "</header>\n" );
150 void RB_TEST_Generate_Link(
158 /* TODO print the other stuff too! */
162 fprintf( dest, "<link labelname=\"%s\" linkname=\"", labelname );
163 RB_TEST_Generate_String( dest, linkname );
164 fprintf( dest, "\" />\n" );
167 void RB_TEST_Generate_Doc_Start(
175 if ( course_of_action.do_headless )
177 /* The user does not want the document head. */
181 fprintf( dest_doc, "<doc_start src_name=\"%s\" name=\"%s\">\n",
187 void RB_TEST_Generate_Doc_End(
193 if ( course_of_action.do_footless )
195 /* The user does not want the foot of the
201 fprintf( dest_doc, "%s", "</doc_start>\n" );
206 void RB_TEST_Generate_Item_Name(
210 fprintf( dest_doc, "<item id=\"" );
211 RB_TEST_Generate_String( dest_doc, name );
212 fprintf( dest_doc, "\">\n" );
215 void RB_TEST_Generate_Item_Begin(
218 fprintf( dest_doc, "<item_body>\n" );
222 void RB_TEST_Generate_Item_End(
225 fprintf( dest_doc, "</item_body>\n</item>\n" );
229 void RB_TEST_Generate_BeginSection(
234 fprintf( dest_doc, "<section depth=\"%d\">", depth );
235 RB_TEST_Generate_String( dest_doc, name );
236 fprintf( dest_doc, "\n" );
239 void RB_TEST_Generate_EndSection(
246 fprintf( dest_doc, "</section>" );
247 RB_TEST_Generate_String( dest_doc, name );
248 fprintf( dest_doc, "\n" );
252 void RB_TEST_Generate_False_Link(
256 fprintf( dest_doc, "<false_link>" );
257 RB_TEST_Generate_String( dest_doc, name );
258 fprintf( dest_doc, "</false_link>" );
263 void TEST_Generate_Begin_Paragraph(
266 fprintf( dest_doc, "<para>\n" );
269 void TEST_Generate_End_Paragraph(
272 fprintf( dest_doc, "</para>\n" );
276 void TEST_Generate_Begin_Preformatted(
279 fprintf( dest_doc, "<pre>\n" );
282 void TEST_Generate_End_Preformatted(
285 fprintf( dest_doc, "</pre>\n" );
289 void TEST_Generate_Begin_List(
292 fprintf( dest_doc, "<list>\n" );
295 void TEST_Generate_End_List(
298 fprintf( dest_doc, "</list>\n" );
301 void TEST_Generate_Begin_List_Item(
304 fprintf( dest_doc, "<list_item>\n" );
307 void TEST_Generate_End_List_Item(
310 fprintf( dest_doc, "</list_item>\n" );