xref: /minix3/external/bsd/atf/dist/tools/ui_test.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc //
2*0a6a1f1dSLionel Sambuc // Automated Testing Framework (atf)
3*0a6a1f1dSLionel Sambuc //
4*0a6a1f1dSLionel Sambuc // Copyright (c) 2009 The NetBSD Foundation, Inc.
5*0a6a1f1dSLionel Sambuc // All rights reserved.
6*0a6a1f1dSLionel Sambuc //
7*0a6a1f1dSLionel Sambuc // Redistribution and use in source and binary forms, with or without
8*0a6a1f1dSLionel Sambuc // modification, are permitted provided that the following conditions
9*0a6a1f1dSLionel Sambuc // are met:
10*0a6a1f1dSLionel Sambuc // 1. Redistributions of source code must retain the above copyright
11*0a6a1f1dSLionel Sambuc //    notice, this list of conditions and the following disclaimer.
12*0a6a1f1dSLionel Sambuc // 2. Redistributions in binary form must reproduce the above copyright
13*0a6a1f1dSLionel Sambuc //    notice, this list of conditions and the following disclaimer in the
14*0a6a1f1dSLionel Sambuc //    documentation and/or other materials provided with the distribution.
15*0a6a1f1dSLionel Sambuc //
16*0a6a1f1dSLionel Sambuc // THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17*0a6a1f1dSLionel Sambuc // CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18*0a6a1f1dSLionel Sambuc // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19*0a6a1f1dSLionel Sambuc // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20*0a6a1f1dSLionel Sambuc // IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21*0a6a1f1dSLionel Sambuc // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22*0a6a1f1dSLionel Sambuc // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23*0a6a1f1dSLionel Sambuc // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24*0a6a1f1dSLionel Sambuc // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25*0a6a1f1dSLionel Sambuc // IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26*0a6a1f1dSLionel Sambuc // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27*0a6a1f1dSLionel Sambuc // IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*0a6a1f1dSLionel Sambuc //
29*0a6a1f1dSLionel Sambuc 
30*0a6a1f1dSLionel Sambuc #include <cstring>
31*0a6a1f1dSLionel Sambuc #include <iostream>
32*0a6a1f1dSLionel Sambuc 
33*0a6a1f1dSLionel Sambuc #include <atf-c++.hpp>
34*0a6a1f1dSLionel Sambuc 
35*0a6a1f1dSLionel Sambuc #include "env.hpp"
36*0a6a1f1dSLionel Sambuc #include "ui.hpp"
37*0a6a1f1dSLionel Sambuc 
38*0a6a1f1dSLionel Sambuc // ------------------------------------------------------------------------
39*0a6a1f1dSLionel Sambuc // Test cases for the free functions.
40*0a6a1f1dSLionel Sambuc // ------------------------------------------------------------------------
41*0a6a1f1dSLionel Sambuc 
42*0a6a1f1dSLionel Sambuc struct test {
43*0a6a1f1dSLionel Sambuc     const char *tc;
44*0a6a1f1dSLionel Sambuc     const char *tag;
45*0a6a1f1dSLionel Sambuc     bool repeat;
46*0a6a1f1dSLionel Sambuc     size_t col;
47*0a6a1f1dSLionel Sambuc     const char *fmt;
48*0a6a1f1dSLionel Sambuc     const char *result;
49*0a6a1f1dSLionel Sambuc } tests[] = {
50*0a6a1f1dSLionel Sambuc     //
51*0a6a1f1dSLionel Sambuc     // wo_tag
52*0a6a1f1dSLionel Sambuc     //
53*0a6a1f1dSLionel Sambuc 
54*0a6a1f1dSLionel Sambuc     {
55*0a6a1f1dSLionel Sambuc         "wo_tag",
56*0a6a1f1dSLionel Sambuc         "",
57*0a6a1f1dSLionel Sambuc         false,
58*0a6a1f1dSLionel Sambuc         0,
59*0a6a1f1dSLionel Sambuc         "12345",
60*0a6a1f1dSLionel Sambuc         "12345",
61*0a6a1f1dSLionel Sambuc     },
62*0a6a1f1dSLionel Sambuc 
63*0a6a1f1dSLionel Sambuc     {
64*0a6a1f1dSLionel Sambuc         "wo_tag",
65*0a6a1f1dSLionel Sambuc         "",
66*0a6a1f1dSLionel Sambuc         false,
67*0a6a1f1dSLionel Sambuc         0,
68*0a6a1f1dSLionel Sambuc         "12345  ",
69*0a6a1f1dSLionel Sambuc         "12345",
70*0a6a1f1dSLionel Sambuc     },
71*0a6a1f1dSLionel Sambuc 
72*0a6a1f1dSLionel Sambuc     {
73*0a6a1f1dSLionel Sambuc         "wo_tag",
74*0a6a1f1dSLionel Sambuc         "",
75*0a6a1f1dSLionel Sambuc         false,
76*0a6a1f1dSLionel Sambuc         0,
77*0a6a1f1dSLionel Sambuc         "12345 7890",
78*0a6a1f1dSLionel Sambuc         "12345 7890",
79*0a6a1f1dSLionel Sambuc     },
80*0a6a1f1dSLionel Sambuc 
81*0a6a1f1dSLionel Sambuc     {
82*0a6a1f1dSLionel Sambuc         "wo_tag",
83*0a6a1f1dSLionel Sambuc         "",
84*0a6a1f1dSLionel Sambuc         false,
85*0a6a1f1dSLionel Sambuc         0,
86*0a6a1f1dSLionel Sambuc         "12345 789012 45",
87*0a6a1f1dSLionel Sambuc         "12345 789012 45",
88*0a6a1f1dSLionel Sambuc     },
89*0a6a1f1dSLionel Sambuc 
90*0a6a1f1dSLionel Sambuc     {
91*0a6a1f1dSLionel Sambuc         "wo_tag",
92*0a6a1f1dSLionel Sambuc         "",
93*0a6a1f1dSLionel Sambuc         false,
94*0a6a1f1dSLionel Sambuc         0,
95*0a6a1f1dSLionel Sambuc         "12345 789012 456",
96*0a6a1f1dSLionel Sambuc         "12345 789012\n456",
97*0a6a1f1dSLionel Sambuc     },
98*0a6a1f1dSLionel Sambuc 
99*0a6a1f1dSLionel Sambuc     {
100*0a6a1f1dSLionel Sambuc         "wo_tag",
101*0a6a1f1dSLionel Sambuc         "",
102*0a6a1f1dSLionel Sambuc         false,
103*0a6a1f1dSLionel Sambuc         0,
104*0a6a1f1dSLionel Sambuc         "1234567890123456",
105*0a6a1f1dSLionel Sambuc         "1234567890123456",
106*0a6a1f1dSLionel Sambuc     },
107*0a6a1f1dSLionel Sambuc 
108*0a6a1f1dSLionel Sambuc     // TODO(jmmv): Fix the code to pass this test...
109*0a6a1f1dSLionel Sambuc //    {
110*0a6a1f1dSLionel Sambuc //        "wo_tag",
111*0a6a1f1dSLionel Sambuc //        "",
112*0a6a1f1dSLionel Sambuc //        false,
113*0a6a1f1dSLionel Sambuc //        0,
114*0a6a1f1dSLionel Sambuc //        " 2345678901234567",
115*0a6a1f1dSLionel Sambuc //        "\n2345678901234567",
116*0a6a1f1dSLionel Sambuc //    },
117*0a6a1f1dSLionel Sambuc 
118*0a6a1f1dSLionel Sambuc     {
119*0a6a1f1dSLionel Sambuc         "wo_tag",
120*0a6a1f1dSLionel Sambuc         "",
121*0a6a1f1dSLionel Sambuc         false,
122*0a6a1f1dSLionel Sambuc         0,
123*0a6a1f1dSLionel Sambuc         "12345 789012345 78",
124*0a6a1f1dSLionel Sambuc         "12345 789012345\n78",
125*0a6a1f1dSLionel Sambuc     },
126*0a6a1f1dSLionel Sambuc 
127*0a6a1f1dSLionel Sambuc     //
128*0a6a1f1dSLionel Sambuc     // wo_tag_col
129*0a6a1f1dSLionel Sambuc     //
130*0a6a1f1dSLionel Sambuc 
131*0a6a1f1dSLionel Sambuc     {
132*0a6a1f1dSLionel Sambuc         "wo_tag_col",
133*0a6a1f1dSLionel Sambuc         "",
134*0a6a1f1dSLionel Sambuc         false,
135*0a6a1f1dSLionel Sambuc         10,
136*0a6a1f1dSLionel Sambuc         "12345",
137*0a6a1f1dSLionel Sambuc         "          12345",
138*0a6a1f1dSLionel Sambuc     },
139*0a6a1f1dSLionel Sambuc 
140*0a6a1f1dSLionel Sambuc     {
141*0a6a1f1dSLionel Sambuc         "wo_tag_col",
142*0a6a1f1dSLionel Sambuc         "",
143*0a6a1f1dSLionel Sambuc         false,
144*0a6a1f1dSLionel Sambuc         10,
145*0a6a1f1dSLionel Sambuc         "12345 7890",
146*0a6a1f1dSLionel Sambuc         "          12345\n"
147*0a6a1f1dSLionel Sambuc         "          7890",
148*0a6a1f1dSLionel Sambuc     },
149*0a6a1f1dSLionel Sambuc 
150*0a6a1f1dSLionel Sambuc     {
151*0a6a1f1dSLionel Sambuc         "wo_tag_col",
152*0a6a1f1dSLionel Sambuc         "",
153*0a6a1f1dSLionel Sambuc         false,
154*0a6a1f1dSLionel Sambuc         10,
155*0a6a1f1dSLionel Sambuc         "1 3 5 7 9",
156*0a6a1f1dSLionel Sambuc         "          1 3 5\n"
157*0a6a1f1dSLionel Sambuc         "          7 9",
158*0a6a1f1dSLionel Sambuc     },
159*0a6a1f1dSLionel Sambuc 
160*0a6a1f1dSLionel Sambuc     //
161*0a6a1f1dSLionel Sambuc     // w_tag_no_repeat
162*0a6a1f1dSLionel Sambuc     //
163*0a6a1f1dSLionel Sambuc 
164*0a6a1f1dSLionel Sambuc     {
165*0a6a1f1dSLionel Sambuc         "w_tag_no_repeat",
166*0a6a1f1dSLionel Sambuc         "1234: ",
167*0a6a1f1dSLionel Sambuc         false,
168*0a6a1f1dSLionel Sambuc         0,
169*0a6a1f1dSLionel Sambuc         "789012345",
170*0a6a1f1dSLionel Sambuc         "1234: 789012345",
171*0a6a1f1dSLionel Sambuc     },
172*0a6a1f1dSLionel Sambuc 
173*0a6a1f1dSLionel Sambuc     {
174*0a6a1f1dSLionel Sambuc         "w_tag_no_repeat",
175*0a6a1f1dSLionel Sambuc         "1234: ",
176*0a6a1f1dSLionel Sambuc         false,
177*0a6a1f1dSLionel Sambuc         0,
178*0a6a1f1dSLionel Sambuc         "789 1234 56789",
179*0a6a1f1dSLionel Sambuc         "1234: 789 1234\n"
180*0a6a1f1dSLionel Sambuc         "      56789",
181*0a6a1f1dSLionel Sambuc     },
182*0a6a1f1dSLionel Sambuc 
183*0a6a1f1dSLionel Sambuc     {
184*0a6a1f1dSLionel Sambuc         "w_tag_no_repeat",
185*0a6a1f1dSLionel Sambuc         "1234: ",
186*0a6a1f1dSLionel Sambuc         false,
187*0a6a1f1dSLionel Sambuc         0,
188*0a6a1f1dSLionel Sambuc         "789012345",
189*0a6a1f1dSLionel Sambuc         "1234: 789012345",
190*0a6a1f1dSLionel Sambuc     },
191*0a6a1f1dSLionel Sambuc 
192*0a6a1f1dSLionel Sambuc     {
193*0a6a1f1dSLionel Sambuc         "w_tag_no_repeat",
194*0a6a1f1dSLionel Sambuc         "1234: ",
195*0a6a1f1dSLionel Sambuc         false,
196*0a6a1f1dSLionel Sambuc         0,
197*0a6a1f1dSLionel Sambuc         "789012345 7890",
198*0a6a1f1dSLionel Sambuc         "1234: 789012345\n"
199*0a6a1f1dSLionel Sambuc         "      7890",
200*0a6a1f1dSLionel Sambuc     },
201*0a6a1f1dSLionel Sambuc 
202*0a6a1f1dSLionel Sambuc     //
203*0a6a1f1dSLionel Sambuc     // w_tag_repeat
204*0a6a1f1dSLionel Sambuc     //
205*0a6a1f1dSLionel Sambuc 
206*0a6a1f1dSLionel Sambuc     {
207*0a6a1f1dSLionel Sambuc         "w_tag_repeat",
208*0a6a1f1dSLionel Sambuc         "1234: ",
209*0a6a1f1dSLionel Sambuc         true,
210*0a6a1f1dSLionel Sambuc         0,
211*0a6a1f1dSLionel Sambuc         "789012345",
212*0a6a1f1dSLionel Sambuc         "1234: 789012345",
213*0a6a1f1dSLionel Sambuc     },
214*0a6a1f1dSLionel Sambuc 
215*0a6a1f1dSLionel Sambuc     {
216*0a6a1f1dSLionel Sambuc         "w_tag_repeat",
217*0a6a1f1dSLionel Sambuc         "1234: ",
218*0a6a1f1dSLionel Sambuc         true,
219*0a6a1f1dSLionel Sambuc         0,
220*0a6a1f1dSLionel Sambuc         "789 1234 56789",
221*0a6a1f1dSLionel Sambuc         "1234: 789 1234\n"
222*0a6a1f1dSLionel Sambuc         "1234: 56789",
223*0a6a1f1dSLionel Sambuc     },
224*0a6a1f1dSLionel Sambuc 
225*0a6a1f1dSLionel Sambuc     {
226*0a6a1f1dSLionel Sambuc         "w_tag_repeat",
227*0a6a1f1dSLionel Sambuc         "1234: ",
228*0a6a1f1dSLionel Sambuc         true,
229*0a6a1f1dSLionel Sambuc         0,
230*0a6a1f1dSLionel Sambuc         "789012345",
231*0a6a1f1dSLionel Sambuc         "1234: 789012345",
232*0a6a1f1dSLionel Sambuc     },
233*0a6a1f1dSLionel Sambuc 
234*0a6a1f1dSLionel Sambuc     {
235*0a6a1f1dSLionel Sambuc         "w_tag_no_repeat",
236*0a6a1f1dSLionel Sambuc         "1234: ",
237*0a6a1f1dSLionel Sambuc         true,
238*0a6a1f1dSLionel Sambuc         0,
239*0a6a1f1dSLionel Sambuc         "789012345 7890",
240*0a6a1f1dSLionel Sambuc         "1234: 789012345\n"
241*0a6a1f1dSLionel Sambuc         "1234: 7890",
242*0a6a1f1dSLionel Sambuc     },
243*0a6a1f1dSLionel Sambuc 
244*0a6a1f1dSLionel Sambuc     //
245*0a6a1f1dSLionel Sambuc     // w_tag_col
246*0a6a1f1dSLionel Sambuc     //
247*0a6a1f1dSLionel Sambuc 
248*0a6a1f1dSLionel Sambuc     {
249*0a6a1f1dSLionel Sambuc         "w_tag_col",
250*0a6a1f1dSLionel Sambuc         "1234:",
251*0a6a1f1dSLionel Sambuc         false,
252*0a6a1f1dSLionel Sambuc         10,
253*0a6a1f1dSLionel Sambuc         "1 3 5",
254*0a6a1f1dSLionel Sambuc         "1234:     1 3 5",
255*0a6a1f1dSLionel Sambuc     },
256*0a6a1f1dSLionel Sambuc 
257*0a6a1f1dSLionel Sambuc     {
258*0a6a1f1dSLionel Sambuc         "w_tag_col",
259*0a6a1f1dSLionel Sambuc         "1234:",
260*0a6a1f1dSLionel Sambuc         false,
261*0a6a1f1dSLionel Sambuc         10,
262*0a6a1f1dSLionel Sambuc         "1 3 5 7 9",
263*0a6a1f1dSLionel Sambuc         "1234:     1 3 5\n"
264*0a6a1f1dSLionel Sambuc         "          7 9",
265*0a6a1f1dSLionel Sambuc     },
266*0a6a1f1dSLionel Sambuc 
267*0a6a1f1dSLionel Sambuc     {
268*0a6a1f1dSLionel Sambuc         "w_tag_col",
269*0a6a1f1dSLionel Sambuc         "1234:",
270*0a6a1f1dSLionel Sambuc         true,
271*0a6a1f1dSLionel Sambuc         10,
272*0a6a1f1dSLionel Sambuc         "1 3 5 7 9",
273*0a6a1f1dSLionel Sambuc         "1234:     1 3 5\n"
274*0a6a1f1dSLionel Sambuc         "1234:     7 9",
275*0a6a1f1dSLionel Sambuc     },
276*0a6a1f1dSLionel Sambuc 
277*0a6a1f1dSLionel Sambuc     //
278*0a6a1f1dSLionel Sambuc     // paragraphs
279*0a6a1f1dSLionel Sambuc     //
280*0a6a1f1dSLionel Sambuc 
281*0a6a1f1dSLionel Sambuc     {
282*0a6a1f1dSLionel Sambuc         "paragraphs",
283*0a6a1f1dSLionel Sambuc         "",
284*0a6a1f1dSLionel Sambuc         false,
285*0a6a1f1dSLionel Sambuc         0,
286*0a6a1f1dSLionel Sambuc         "1 3 5\n\n",
287*0a6a1f1dSLionel Sambuc         "1 3 5"
288*0a6a1f1dSLionel Sambuc     },
289*0a6a1f1dSLionel Sambuc 
290*0a6a1f1dSLionel Sambuc     {
291*0a6a1f1dSLionel Sambuc         "paragraphs",
292*0a6a1f1dSLionel Sambuc         "",
293*0a6a1f1dSLionel Sambuc         false,
294*0a6a1f1dSLionel Sambuc         0,
295*0a6a1f1dSLionel Sambuc         "1 3 5\n2 4 6",
296*0a6a1f1dSLionel Sambuc         "1 3 5\n\n2 4 6"
297*0a6a1f1dSLionel Sambuc     },
298*0a6a1f1dSLionel Sambuc 
299*0a6a1f1dSLionel Sambuc     {
300*0a6a1f1dSLionel Sambuc         "paragraphs",
301*0a6a1f1dSLionel Sambuc         "",
302*0a6a1f1dSLionel Sambuc         false,
303*0a6a1f1dSLionel Sambuc         0,
304*0a6a1f1dSLionel Sambuc         "1234 6789 123456\n2 4 6",
305*0a6a1f1dSLionel Sambuc         "1234 6789\n123456\n\n2 4 6"
306*0a6a1f1dSLionel Sambuc     },
307*0a6a1f1dSLionel Sambuc 
308*0a6a1f1dSLionel Sambuc     {
309*0a6a1f1dSLionel Sambuc         "paragraphs",
310*0a6a1f1dSLionel Sambuc         "12: ",
311*0a6a1f1dSLionel Sambuc         false,
312*0a6a1f1dSLionel Sambuc         0,
313*0a6a1f1dSLionel Sambuc         "56789 123456\n2 4 6",
314*0a6a1f1dSLionel Sambuc         "12: 56789\n    123456\n\n    2 4 6"
315*0a6a1f1dSLionel Sambuc     },
316*0a6a1f1dSLionel Sambuc 
317*0a6a1f1dSLionel Sambuc     {
318*0a6a1f1dSLionel Sambuc         "paragraphs",
319*0a6a1f1dSLionel Sambuc         "12: ",
320*0a6a1f1dSLionel Sambuc         true,
321*0a6a1f1dSLionel Sambuc         0,
322*0a6a1f1dSLionel Sambuc         "56789 123456\n2 4 6",
323*0a6a1f1dSLionel Sambuc         "12: 56789\n12: 123456\n12: \n12: 2 4 6"
324*0a6a1f1dSLionel Sambuc     },
325*0a6a1f1dSLionel Sambuc 
326*0a6a1f1dSLionel Sambuc     {
327*0a6a1f1dSLionel Sambuc         "paragraphs",
328*0a6a1f1dSLionel Sambuc         "12:",
329*0a6a1f1dSLionel Sambuc         false,
330*0a6a1f1dSLionel Sambuc         4,
331*0a6a1f1dSLionel Sambuc         "56789 123456\n2 4 6",
332*0a6a1f1dSLionel Sambuc         "12: 56789\n    123456\n\n    2 4 6"
333*0a6a1f1dSLionel Sambuc     },
334*0a6a1f1dSLionel Sambuc 
335*0a6a1f1dSLionel Sambuc     {
336*0a6a1f1dSLionel Sambuc         "paragraphs",
337*0a6a1f1dSLionel Sambuc         "12:",
338*0a6a1f1dSLionel Sambuc         true,
339*0a6a1f1dSLionel Sambuc         4,
340*0a6a1f1dSLionel Sambuc         "56789 123456\n2 4 6",
341*0a6a1f1dSLionel Sambuc         "12: 56789\n12: 123456\n12:\n12: 2 4 6"
342*0a6a1f1dSLionel Sambuc     },
343*0a6a1f1dSLionel Sambuc 
344*0a6a1f1dSLionel Sambuc     //
345*0a6a1f1dSLionel Sambuc     // end
346*0a6a1f1dSLionel Sambuc     //
347*0a6a1f1dSLionel Sambuc 
348*0a6a1f1dSLionel Sambuc     {
349*0a6a1f1dSLionel Sambuc         NULL,
350*0a6a1f1dSLionel Sambuc         NULL,
351*0a6a1f1dSLionel Sambuc         false,
352*0a6a1f1dSLionel Sambuc         0,
353*0a6a1f1dSLionel Sambuc         NULL,
354*0a6a1f1dSLionel Sambuc         NULL,
355*0a6a1f1dSLionel Sambuc     },
356*0a6a1f1dSLionel Sambuc };
357*0a6a1f1dSLionel Sambuc 
358*0a6a1f1dSLionel Sambuc static
359*0a6a1f1dSLionel Sambuc void
run_tests(const char * tc)360*0a6a1f1dSLionel Sambuc run_tests(const char *tc)
361*0a6a1f1dSLionel Sambuc {
362*0a6a1f1dSLionel Sambuc     struct test *t;
363*0a6a1f1dSLionel Sambuc 
364*0a6a1f1dSLionel Sambuc     std::cout << "Running tests for " << tc << "\n";
365*0a6a1f1dSLionel Sambuc 
366*0a6a1f1dSLionel Sambuc     tools::env::set("COLUMNS", "15");
367*0a6a1f1dSLionel Sambuc 
368*0a6a1f1dSLionel Sambuc     for (t = &tests[0]; t->tc != NULL; t++) {
369*0a6a1f1dSLionel Sambuc         if (std::strcmp(t->tc, tc) == 0) {
370*0a6a1f1dSLionel Sambuc             std::cout << "\n";
371*0a6a1f1dSLionel Sambuc             std::cout << "Testing with tag '" << t->tag << "', '"
372*0a6a1f1dSLionel Sambuc                 << (t->repeat ? "repeat" : "no repeat") << "', col "
373*0a6a1f1dSLionel Sambuc                 << t->col << "\n";
374*0a6a1f1dSLionel Sambuc             std::cout << "Input: >>>" << t->fmt << "<<<\n";
375*0a6a1f1dSLionel Sambuc             std::cout << "Expected output: >>>" << t->result << "<<<\n";
376*0a6a1f1dSLionel Sambuc 
377*0a6a1f1dSLionel Sambuc             std::string result = tools::ui::format_text_with_tag(t->fmt, t->tag,
378*0a6a1f1dSLionel Sambuc                 t->repeat, t->col);
379*0a6a1f1dSLionel Sambuc             std::cout << "Output         : >>>" << result << "<<<\n";
380*0a6a1f1dSLionel Sambuc             ATF_REQUIRE_EQ(t->result, result);
381*0a6a1f1dSLionel Sambuc         }
382*0a6a1f1dSLionel Sambuc     }
383*0a6a1f1dSLionel Sambuc }
384*0a6a1f1dSLionel Sambuc 
385*0a6a1f1dSLionel Sambuc ATF_TEST_CASE(wo_tag);
ATF_TEST_CASE_HEAD(wo_tag)386*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_HEAD(wo_tag)
387*0a6a1f1dSLionel Sambuc {
388*0a6a1f1dSLionel Sambuc     set_md_var("descr", "Checks formatting without tags");
389*0a6a1f1dSLionel Sambuc }
ATF_TEST_CASE_BODY(wo_tag)390*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_BODY(wo_tag)
391*0a6a1f1dSLionel Sambuc {
392*0a6a1f1dSLionel Sambuc     run_tests("wo_tag");
393*0a6a1f1dSLionel Sambuc }
394*0a6a1f1dSLionel Sambuc 
395*0a6a1f1dSLionel Sambuc ATF_TEST_CASE(wo_tag_col);
ATF_TEST_CASE_HEAD(wo_tag_col)396*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_HEAD(wo_tag_col)
397*0a6a1f1dSLionel Sambuc {
398*0a6a1f1dSLionel Sambuc     set_md_var("descr", "Checks formatting without tags and with a non-zero "
399*0a6a1f1dSLionel Sambuc         "starting column");
400*0a6a1f1dSLionel Sambuc }
ATF_TEST_CASE_BODY(wo_tag_col)401*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_BODY(wo_tag_col)
402*0a6a1f1dSLionel Sambuc {
403*0a6a1f1dSLionel Sambuc     run_tests("wo_tag_col");
404*0a6a1f1dSLionel Sambuc }
405*0a6a1f1dSLionel Sambuc 
406*0a6a1f1dSLionel Sambuc ATF_TEST_CASE(w_tag_no_repeat);
ATF_TEST_CASE_HEAD(w_tag_no_repeat)407*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_HEAD(w_tag_no_repeat)
408*0a6a1f1dSLionel Sambuc {
409*0a6a1f1dSLionel Sambuc     set_md_var("descr", "Checks formatting with a tag");
410*0a6a1f1dSLionel Sambuc }
ATF_TEST_CASE_BODY(w_tag_no_repeat)411*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_BODY(w_tag_no_repeat)
412*0a6a1f1dSLionel Sambuc {
413*0a6a1f1dSLionel Sambuc     run_tests("w_tag_no_repeat");
414*0a6a1f1dSLionel Sambuc }
415*0a6a1f1dSLionel Sambuc 
416*0a6a1f1dSLionel Sambuc ATF_TEST_CASE(w_tag_repeat);
ATF_TEST_CASE_HEAD(w_tag_repeat)417*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_HEAD(w_tag_repeat)
418*0a6a1f1dSLionel Sambuc {
419*0a6a1f1dSLionel Sambuc     set_md_var("descr", "Checks formatting with a tag and repeating it on "
420*0a6a1f1dSLionel Sambuc         "each line");
421*0a6a1f1dSLionel Sambuc }
ATF_TEST_CASE_BODY(w_tag_repeat)422*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_BODY(w_tag_repeat)
423*0a6a1f1dSLionel Sambuc {
424*0a6a1f1dSLionel Sambuc     run_tests("w_tag_repeat");
425*0a6a1f1dSLionel Sambuc }
426*0a6a1f1dSLionel Sambuc 
427*0a6a1f1dSLionel Sambuc ATF_TEST_CASE(w_tag_col);
ATF_TEST_CASE_HEAD(w_tag_col)428*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_HEAD(w_tag_col)
429*0a6a1f1dSLionel Sambuc {
430*0a6a1f1dSLionel Sambuc     set_md_var("descr", "Checks formatting with a tag and starting at a "
431*0a6a1f1dSLionel Sambuc         "column greater than its length");
432*0a6a1f1dSLionel Sambuc }
ATF_TEST_CASE_BODY(w_tag_col)433*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_BODY(w_tag_col)
434*0a6a1f1dSLionel Sambuc {
435*0a6a1f1dSLionel Sambuc     run_tests("w_tag_col");
436*0a6a1f1dSLionel Sambuc }
437*0a6a1f1dSLionel Sambuc 
438*0a6a1f1dSLionel Sambuc ATF_TEST_CASE(paragraphs);
ATF_TEST_CASE_HEAD(paragraphs)439*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_HEAD(paragraphs)
440*0a6a1f1dSLionel Sambuc {
441*0a6a1f1dSLionel Sambuc     set_md_var("descr", "Checks formatting a string that contains multiple "
442*0a6a1f1dSLionel Sambuc         "paragraphs");
443*0a6a1f1dSLionel Sambuc }
ATF_TEST_CASE_BODY(paragraphs)444*0a6a1f1dSLionel Sambuc ATF_TEST_CASE_BODY(paragraphs)
445*0a6a1f1dSLionel Sambuc {
446*0a6a1f1dSLionel Sambuc     run_tests("paragraphs");
447*0a6a1f1dSLionel Sambuc }
448*0a6a1f1dSLionel Sambuc 
449*0a6a1f1dSLionel Sambuc // ------------------------------------------------------------------------
450*0a6a1f1dSLionel Sambuc // Main.
451*0a6a1f1dSLionel Sambuc // ------------------------------------------------------------------------
452*0a6a1f1dSLionel Sambuc 
ATF_INIT_TEST_CASES(tcs)453*0a6a1f1dSLionel Sambuc ATF_INIT_TEST_CASES(tcs)
454*0a6a1f1dSLionel Sambuc {
455*0a6a1f1dSLionel Sambuc     // Add the test cases for the free functions.
456*0a6a1f1dSLionel Sambuc     ATF_ADD_TEST_CASE(tcs, wo_tag);
457*0a6a1f1dSLionel Sambuc     ATF_ADD_TEST_CASE(tcs, wo_tag_col);
458*0a6a1f1dSLionel Sambuc     ATF_ADD_TEST_CASE(tcs, w_tag_no_repeat);
459*0a6a1f1dSLionel Sambuc     ATF_ADD_TEST_CASE(tcs, w_tag_repeat);
460*0a6a1f1dSLionel Sambuc     ATF_ADD_TEST_CASE(tcs, w_tag_col);
461*0a6a1f1dSLionel Sambuc     ATF_ADD_TEST_CASE(tcs, paragraphs);
462*0a6a1f1dSLionel Sambuc }
463