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