1 /**
2    C tests that must run
3  */
4 module it.c.run.c;
5 
6 import it;
7 
8 @Tags("run")
9 @("function named debug")
10 @safe unittest {
11     shouldCompileAndRun(
12         C(
13             q{
14                 void debug(const char* msg);
15             }
16         ),
17         C(
18             `
19                 #include <stdio.h>
20                 void debug(const char* msg) { printf("%s\n", msg); }
21             `
22         ),
23         D(
24             q{
25                 debug_("Hello world!\n");
26             }
27          ),
28     );
29 }
30 
31 
32 @Tags("run")
33 @("struct var collision")
34 @safe unittest {
35     shouldCompileAndRun(
36         C(
37             q{
38                 struct foo { int dummy; };
39                 extern int foo;
40             }
41         ),
42         C(
43             q{
44                 int foo;
45             }
46         ),
47         D(
48             q{
49                 auto s = foo(33);
50                 foo_ = 42;
51             }
52         ),
53     );
54 }
55 
56 @Tags("run")
57 @("struct function collision")
58 @safe unittest {
59     shouldCompileAndRun(
60         C(
61             q{
62                 struct foo { int dummy; };
63                 void foo(void);
64             }
65         ),
66         C(
67             q{
68                 void foo(void) {}
69             }
70         ),
71         D(
72             q{
73                 auto s = foo(33);
74                 foo_();
75             }
76         ),
77     );
78 }