]>
Commit | Line | Data |
---|---|---|
b4c522fa | 1 | // PERMUTE_ARGS: -unittest |
5fee5ec3 IB |
2 | // REQUIRED_ARGS: -D -w -o- -Dd${RESULTS_DIR}/compilable -o- |
3 | // POST_SCRIPT: compilable/extra-files/ddocAny-postscript.sh | |
b4c522fa IB |
4 | |
5 | module ddocunittest; | |
6 | ||
7 | /* Insert test-cases for documented unittests feature here. */ | |
8 | ||
9 | /// foo function - 1 example | |
10 | int foo(int a, int b) { return a + b; } | |
11 | ||
12 | /// | |
13 | unittest | |
14 | { | |
15 | assert(foo(1, 1) == 2); | |
16 | } | |
17 | ||
18 | /// bar function - 1 example | |
19 | bool bar() { return true; } | |
20 | ||
21 | /// | |
22 | unittest | |
23 | { | |
24 | // documented | |
25 | assert(bar()); | |
26 | } | |
27 | ||
28 | /// placeholder | |
29 | unittest | |
30 | { | |
31 | } | |
32 | ||
33 | /// doo function - no examples | |
34 | void doo() { } | |
35 | ||
36 | /// | |
37 | private unittest | |
38 | { | |
39 | // undocumented | |
40 | doo(); | |
41 | } | |
42 | ||
43 | unittest | |
44 | { | |
45 | // undocumented | |
46 | doo(); | |
47 | } | |
48 | ||
49 | /** | |
50 | add function - 3 examples | |
51 | ||
52 | Examples: | |
53 | ||
54 | ---- | |
55 | assert(add(1, 1) == 2); | |
56 | ---- | |
57 | */ | |
58 | int add(int a, int b) { return a + b; } | |
59 | ||
60 | /// | |
61 | unittest | |
62 | { | |
63 | // documented | |
64 | assert(add(3, 3) == 6); | |
65 | assert(add(4, 4) == 8); | |
66 | } | |
67 | ||
68 | unittest | |
69 | { | |
70 | // undocumented | |
71 | assert(add(2, 2) + add(2, 2) == 8); | |
72 | } | |
73 | ||
74 | /// | |
75 | unittest | |
76 | { | |
77 | // documented | |
78 | assert(add(5, 5) == 10); | |
79 | assert(add(6, 6) == 12); | |
80 | } | |
81 | ||
82 | /// class Foo | |
83 | immutable pure nothrow class Foo | |
84 | { | |
85 | int x; | |
86 | ||
87 | /// | |
88 | unittest | |
89 | { | |
90 | // another foo example | |
91 | Foo foo = new Foo; | |
92 | } | |
93 | } | |
94 | ||
95 | /// | |
96 | unittest | |
97 | { | |
98 | Foo foo = new Foo; | |
99 | } | |
100 | ||
101 | pure | |
102 | { | |
103 | const | |
104 | { | |
105 | immutable | |
106 | { | |
107 | /// some class - 1 example | |
108 | class SomeClass {} | |
109 | } | |
110 | } | |
111 | } | |
112 | ||
113 | /// | |
114 | unittest | |
115 | { | |
116 | SomeClass sc = new SomeClass; | |
117 | } | |
118 | ||
119 | /// Outer - 1 example | |
120 | class Outer | |
121 | { | |
122 | /// Inner | |
123 | static class Inner | |
124 | { | |
125 | } | |
126 | ||
127 | /// | |
128 | unittest | |
129 | { | |
130 | Inner inner = new Inner; | |
131 | } | |
132 | } | |
133 | ||
134 | /// | |
135 | unittest | |
136 | { | |
137 | Outer outer = new Outer; | |
138 | } | |
139 | ||
140 | /** foobar - no examples */ | |
141 | void foobar() | |
142 | { | |
143 | } | |
144 | ||
145 | unittest | |
146 | { | |
147 | foobar(); | |
148 | } | |
149 | ||
150 | /** | |
151 | func - 4 examples | |
152 | Examples: | |
153 | --- | |
154 | foo(1); | |
155 | --- | |
156 | ||
157 | Examples: | |
158 | --- | |
159 | foo(2); | |
160 | --- | |
161 | */ | |
162 | void foo(int x) { } | |
163 | ||
164 | /// | |
165 | unittest | |
166 | { | |
167 | foo(2); | |
168 | } | |
169 | ||
170 | /// | |
171 | unittest | |
172 | { | |
173 | foo(4); | |
174 | } | |
175 | ||
176 | // ------------------------------------ | |
177 | // insert import declaration between documented function and unittests | |
178 | ||
179 | /// | |
180 | void fooImport() {} | |
181 | import core.stdc.stdio; | |
182 | /// test | |
183 | unittest { fooImport(); } | |
184 | ||
185 | /// | |
186 | void fooStaticImport() {} | |
187 | static import core.stdc.stdlib; | |
188 | /// test | |
189 | unittest { fooStaticImport(); } | |
190 | ||
b4c522fa IB |
191 | /// |
192 | void fooSelectiveImport() {} | |
193 | import core.stdc.ctype : isalpha; | |
194 | /// test | |
195 | unittest { fooSelectiveImport(); } | |
196 | ||
197 | /// | |
198 | void fooRenamedImport() {} | |
199 | import io = core.stdc.stdio; | |
200 | /// test | |
201 | unittest { fooRenamedImport(); } | |
202 | ||
5fee5ec3 IB |
203 | /// This is a public import |
204 | public import core.stdc.string; | |
205 | ||
206 | /// This is a mutiple public import | |
207 | public import core.stdc.stdarg, core.stdc.stdlib; | |
208 | ||
209 | /// This is a public selective import | |
210 | public import core.stdc.string : memcpy; | |
211 | ||
212 | /// This is a public selective renamed import | |
213 | public import core.stdc.string : copy = memcpy; | |
214 | ||
215 | /// This is a public multiple selective import | |
216 | public import core.stdc.string : memcpy, memcmp; | |
217 | ||
218 | /// This is a public multiple selective renamed import | |
219 | public import core.stdc.string : copy = memcpy, compare = memcmp; | |
220 | ||
221 | /// This is a public renamed import | |
222 | public import str = core.stdc.string; | |
223 | ||
224 | // This is a public import without a DDoc comment. | |
225 | // It should not be emitted to the documentation file. | |
226 | public import core.stdc.stdlib; | |
227 | ||
228 | ||
b4c522fa IB |
229 | // ------------------------------------ |
230 | // documented unittest after conditional declarations | |
231 | ||
232 | static if (true) | |
233 | void fooConditionalDecl1a() {} /** */ | |
234 | unittest { int x1a; } /// | |
235 | ||
236 | static if (true) | |
237 | { void fooConditionalDecl1b() {} /** */ } | |
238 | unittest { int x1b; } /// | |
239 | ||
240 | static if (false) | |
241 | void fooConditionalDecl2a() {} /** */ | |
242 | unittest { int x2a; } /// | |
243 | ||
244 | static if (false) | |
245 | { void fooConditionalDecl2b() {} /** */ } | |
246 | unittest { int x2b; } /// | |
247 | ||
248 | static if (true) | |
249 | { void fooConditionalDecl3a() {} /** */ } | |
250 | else | |
251 | { void barConditionalDecl3a() {} /** */ } | |
252 | unittest { int x3a; } /// | |
253 | ||
254 | static if (true) | |
255 | { void fooConditionalDecl3b() {} /** */ } | |
256 | else | |
257 | { void barConditionalDecl3b() {} /** */ } | |
258 | unittest { int x3b; } /// | |
259 | ||
260 | static if (false) | |
261 | void fooConditionalDecl4a() {} /** */ | |
262 | else | |
263 | void barConditionalDecl4a() {} /** */ | |
264 | unittest { int x4a; } /// | |
265 | ||
266 | static if (false) | |
267 | { void fooConditionalDecl4b() {} /** */ } | |
268 | else | |
269 | { void barConditionalDecl4b() {} /** */ } | |
270 | unittest { int x4b; } /// | |
271 | ||
272 | static if (true) | |
273 | {} | |
274 | else | |
275 | void barConditionalDecl5a() {} /** */ | |
276 | unittest { int x5a; } /// | |
277 | ||
278 | static if (true) | |
279 | {} | |
280 | else | |
281 | { void barConditionalDecl5b() {} /** */ } | |
282 | unittest { int x5b; } /// | |
283 | ||
284 | static if (false) | |
285 | {} | |
286 | else | |
287 | void barConditionalDecl6a() {} /** */ | |
288 | /// | |
289 | unittest { int x6a; } | |
290 | ||
291 | static if (false) | |
292 | {} | |
293 | else | |
294 | { void barConditionalDecl6b() {} /** */ } | |
295 | /// | |
296 | unittest { int x6b; } | |
297 | ||
298 | // ------------------------------------ | |
5fee5ec3 | 299 | // https://issues.dlang.org/show_bug.cgi?id=9474 |
b4c522fa IB |
300 | |
301 | /// | |
302 | void foo9474() { } | |
303 | ||
304 | version(none) | |
305 | unittest { } | |
306 | ||
307 | /// Example | |
308 | unittest { foo9474(); } | |
309 | ||
310 | /// doc | |
311 | void bar9474() { } | |
312 | ||
313 | version(none) | |
314 | unittest { } | |
315 | ||
316 | /// Example | |
317 | unittest { bar9474(); } | |
318 | ||
319 | /// | |
320 | struct S9474 | |
321 | { | |
322 | } | |
323 | /// | |
324 | unittest { S9474 s; } | |
325 | ||
326 | /// | |
327 | auto autovar9474 = 1; | |
328 | /// | |
329 | unittest { int v = autovar9474; } | |
330 | ||
331 | /// | |
332 | auto autofun9474() { return 1; } | |
333 | /// | |
334 | unittest { int n = autofun9474(); } | |
335 | ||
336 | /// | |
337 | template Template9474() | |
338 | { | |
339 | /// Shouldn't link following unittest to here | |
340 | void foo() {} | |
341 | } | |
342 | /// | |
343 | unittest { alias Template9474!() T; } | |
344 | ||
345 | // ------------------------------------ | |
5fee5ec3 | 346 | // https://issues.dlang.org/show_bug.cgi?id=9713 |
b4c522fa IB |
347 | |
348 | /// | |
349 | void fooNoDescription() {} | |
350 | /// | |
351 | unittest { fooNoDescription(); } | |
352 | /// | |
353 | unittest { if (true) {fooNoDescription(); } /* comment */ } | |
354 | ||
355 | // ------------------------------------ | |
356 | ||
5fee5ec3 | 357 | /// test for https://issues.dlang.org/show_bug.cgi?id=9757 |
b4c522fa IB |
358 | void foo9757() {} |
359 | /// ditto | |
360 | void bar9757() {} | |
361 | /// ditto | |
362 | void baz9757() {} | |
363 | /// | |
364 | unittest { foo9757(); bar9757(); } | |
365 | /// | |
366 | unittest { bar9757(); foo9757(); } | |
367 | ||
368 | /// with template functions | |
369 | auto redBlackTree(E)(E[] elems...) | |
370 | { | |
371 | return 1; | |
372 | } | |
373 | /// ditto | |
374 | auto redBlackTree(bool allowDuplicates, E)(E[] elems...) | |
375 | { | |
376 | return 2; | |
377 | } | |
378 | /// ditto | |
379 | auto redBlackTree(alias less, E)(E[] elems...) | |
5a0aa603 | 380 | if (__traits(compiles, (E a, E b) => mixin(less))) |
b4c522fa IB |
381 | { |
382 | return 3; | |
383 | } | |
384 | /// | |
385 | unittest | |
386 | { | |
387 | auto rbt1 = redBlackTree(0, 1, 5, 7); | |
388 | auto rbt2 = redBlackTree!string("hello", "world"); | |
389 | auto rbt3 = redBlackTree!true(0, 1, 5, 7, 5); | |
390 | auto rbt4 = redBlackTree!"a > b"(0, 1, 5, 7); | |
391 | } | |
392 | ||
393 | // ------------------------------------ | |
5fee5ec3 | 394 | // https://issues.dlang.org/show_bug.cgi?id=9758 |
b4c522fa IB |
395 | |
396 | /// test | |
397 | void foo(){} | |
398 | ||
399 | /// | |
400 | unittest { } | |
401 | ||
402 | // ------------------------------------ | |
5fee5ec3 | 403 | // https://issues.dlang.org/show_bug.cgi?id=10519 |
b4c522fa IB |
404 | |
405 | /// | |
406 | bool balancedParens10519(string, char, char) { return true; } | |
407 | /// | |
408 | unittest | |
409 | { | |
410 | auto s = "1 + (2 * (3 + 1 / 2)"; | |
411 | assert(!balancedParens10519(s, '(', ')')); | |
412 | } | |
413 | ||
414 | // ------------------------------------ | |
5fee5ec3 | 415 | // https://issues.dlang.org/show_bug.cgi?id=12097 |
b4c522fa IB |
416 | |
417 | /// declaration | |
418 | struct S12097 | |
419 | { | |
420 | /// method | |
421 | void foo() {} | |
422 | } | |
423 | ||
424 | /// ditto | |
425 | void f12097() {} | |
426 | ||
427 | /// ddoc code 1 | |
428 | unittest | |
429 | { | |
430 | int a = 1; | |
431 | } | |
432 | ||
433 | /// ditto | |
434 | struct T12097(T) {} | |
435 | ||
436 | /// ddoc code 2 | |
437 | unittest | |
438 | { | |
439 | int[] arr; | |
440 | } | |
441 | ||
442 | // ------------------------------------ | |
5fee5ec3 | 443 | // https://issues.dlang.org/show_bug.cgi?id=14594 |
b4c522fa IB |
444 | |
445 | /******************* | |
446 | * testA | |
447 | */ | |
448 | void fun14594a()() {} | |
449 | /// | |
450 | unittest { fun14594a(); } | |
451 | ||
452 | /******************* | |
453 | * testB | |
454 | */ | |
455 | void fun14594b()() {} | |
456 | /// ditto | |
457 | void fun14594b(T)(T) {} | |
458 | /// | |
459 | unittest { fun14594b(); fun14594b(1); } | |
460 | ||
461 | /******************* | |
462 | * testC | |
463 | */ | |
464 | void fun14594c()() {} | |
465 | /// | |
466 | unittest { fun14594c(); fun14594c(1); } | |
467 | /// ditto | |
468 | void fun14594c(T)(T) {} | |
469 | ||
470 | /******************* | |
471 | * testD | |
472 | */ | |
473 | void fun14594d()() {} | |
474 | /// | |
475 | unittest { fun14594d(); } | |
476 | /// ditto | |
477 | void fun14594d(T)(T) {} | |
478 | /// | |
479 | unittest { fun14594d(1); } | |
480 | ||
481 | /******************* | |
482 | * testE | |
483 | */ | |
484 | template fun14594e() | |
485 | { | |
486 | /// concatenated doc-comment fun14594e | |
487 | void fun14594e() {} | |
488 | /// ignored-unittest fun14594e | |
489 | unittest { fun14594e(); } | |
490 | } | |
491 | /// doc-unittest fun14594e | |
492 | unittest { fun14594e(); } | |
493 | ||
494 | /******************* | |
495 | * testF | |
496 | */ | |
497 | template fun14594f() | |
498 | { | |
499 | /// concatenated doc-comment fun14594f | |
500 | void fun14594f() {} | |
501 | /// ignored-unittest fun14594f | |
502 | unittest { fun14594f(); } | |
503 | } | |
504 | /// ditto | |
505 | template fun14594f(T) | |
506 | { | |
507 | /// ignored doc-comment fun14594f | |
508 | void fun14594f(T) {} | |
509 | /// ignored-unittest fun14594f | |
510 | unittest { fun14594f(1); } | |
511 | } | |
512 | /// doc-unittest fun14594f | |
513 | unittest { fun14594f(); } | |
514 | ||
515 | // ------------------------------------ | |
516 | ||
517 | void main() { } |