xref: /freebsd/contrib/unifdef/tests/if7.c (revision fb3ef04d2028110f06d68b09009f1f2ca0f4128e)
1*fb3ef04dSDag-Erling Smørgrav /*
2*fb3ef04dSDag-Erling Smørgrav Distributed under the two-clause BSD licence;
3*fb3ef04dSDag-Erling Smørgrav see the COPYING file for details. */
4*fb3ef04dSDag-Erling Smørgrav 
5*fb3ef04dSDag-Erling Smørgrav #include <stdio.h>
6*fb3ef04dSDag-Erling Smørgrav #include <stdlib.h>
7*fb3ef04dSDag-Erling Smørgrav 
8*fb3ef04dSDag-Erling Smørgrav #if (FOOB | FOO) == 43
foo1()9*fb3ef04dSDag-Erling Smørgrav int foo1() { return 0; }
10*fb3ef04dSDag-Erling Smørgrav #else
11*fb3ef04dSDag-Erling Smørgrav #error FOOB bitwise-or FOO is not 43
12*fb3ef04dSDag-Erling Smørgrav #endif
13*fb3ef04dSDag-Erling Smørgrav 
14*fb3ef04dSDag-Erling Smørgrav #if (FOO ^ FOO) == 0
foo2()15*fb3ef04dSDag-Erling Smørgrav int foo2() { return 0; }
16*fb3ef04dSDag-Erling Smørgrav #else
17*fb3ef04dSDag-Erling Smørgrav #error FOO bitwise-xor FOO is not 0
18*fb3ef04dSDag-Erling Smørgrav #endif
19*fb3ef04dSDag-Erling Smørgrav 
20*fb3ef04dSDag-Erling Smørgrav #if (FOOB & 2) == 2
foo3()21*fb3ef04dSDag-Erling Smørgrav int foo3() { return 0; }
22*fb3ef04dSDag-Erling Smørgrav #else
23*fb3ef04dSDag-Erling Smørgrav #error FOOB bitwise-and 2 is not 2
24*fb3ef04dSDag-Erling Smørgrav #endif
25*fb3ef04dSDag-Erling Smørgrav 
26*fb3ef04dSDag-Erling Smørgrav #if (FOO << 1) == 2
foo4()27*fb3ef04dSDag-Erling Smørgrav int foo4() { return 0; }
28*fb3ef04dSDag-Erling Smørgrav #else
29*fb3ef04dSDag-Erling Smørgrav #error FOO left-shift 2 is not 2
30*fb3ef04dSDag-Erling Smørgrav #endif
31*fb3ef04dSDag-Erling Smørgrav 
32*fb3ef04dSDag-Erling Smørgrav #if (FOOB >> 4) == 2
foo5()33*fb3ef04dSDag-Erling Smørgrav int foo5() { return 0; }
34*fb3ef04dSDag-Erling Smørgrav #else
35*fb3ef04dSDag-Erling Smørgrav #error FOOB right-shift 2 is not 2
36*fb3ef04dSDag-Erling Smørgrav #endif
37*fb3ef04dSDag-Erling Smørgrav 
38*fb3ef04dSDag-Erling Smørgrav #if (FOOB + FOO) == 43
foo6()39*fb3ef04dSDag-Erling Smørgrav int foo6() { return 0; }
40*fb3ef04dSDag-Erling Smørgrav #else
41*fb3ef04dSDag-Erling Smørgrav #error FOOB add FOO is not 43
42*fb3ef04dSDag-Erling Smørgrav #endif
43*fb3ef04dSDag-Erling Smørgrav 
44*fb3ef04dSDag-Erling Smørgrav #if (FOOB - FOO) == 41
foo7()45*fb3ef04dSDag-Erling Smørgrav int foo7() { return 0; }
46*fb3ef04dSDag-Erling Smørgrav #else
47*fb3ef04dSDag-Erling Smørgrav #error FOOB subtract FOO is not 41
48*fb3ef04dSDag-Erling Smørgrav #endif
49*fb3ef04dSDag-Erling Smørgrav 
50*fb3ef04dSDag-Erling Smørgrav #if (FOOB * 2) == 84
foo8()51*fb3ef04dSDag-Erling Smørgrav int foo8() { return 0; }
52*fb3ef04dSDag-Erling Smørgrav #else
53*fb3ef04dSDag-Erling Smørgrav #error FOOB multiply 2 is not 84
54*fb3ef04dSDag-Erling Smørgrav #endif
55*fb3ef04dSDag-Erling Smørgrav 
56*fb3ef04dSDag-Erling Smørgrav #if (FOOB / 2) == 21
foo9()57*fb3ef04dSDag-Erling Smørgrav int foo9() { return 0; }
58*fb3ef04dSDag-Erling Smørgrav #else
59*fb3ef04dSDag-Erling Smørgrav #error FOOB divided 2 is not 21
60*fb3ef04dSDag-Erling Smørgrav #endif
61*fb3ef04dSDag-Erling Smørgrav 
62*fb3ef04dSDag-Erling Smørgrav #if (FOOB % FOO) == 0
foo10()63*fb3ef04dSDag-Erling Smørgrav int foo10() { return 0; }
64*fb3ef04dSDag-Erling Smørgrav #else
65*fb3ef04dSDag-Erling Smørgrav #error FOOB modulo FOO is not 0
66*fb3ef04dSDag-Erling Smørgrav #endif
67*fb3ef04dSDag-Erling Smørgrav 
68*fb3ef04dSDag-Erling Smørgrav #if ~(FOOB) == -43
foo11()69*fb3ef04dSDag-Erling Smørgrav int foo11() { return 0; }
70*fb3ef04dSDag-Erling Smørgrav #else
71*fb3ef04dSDag-Erling Smørgrav #error bitwise-not FOOB is not -43
72*fb3ef04dSDag-Erling Smørgrav #endif
73*fb3ef04dSDag-Erling Smørgrav 
74*fb3ef04dSDag-Erling Smørgrav #if -(FOOB) == -42
foo12()75*fb3ef04dSDag-Erling Smørgrav int foo12() { return 0; }
76*fb3ef04dSDag-Erling Smørgrav #else
77*fb3ef04dSDag-Erling Smørgrav #error negate FOOB is not -42
78*fb3ef04dSDag-Erling Smørgrav #endif
79*fb3ef04dSDag-Erling Smørgrav 
main()80*fb3ef04dSDag-Erling Smørgrav int main()
81*fb3ef04dSDag-Erling Smørgrav {
82*fb3ef04dSDag-Erling Smørgrav   foo1();
83*fb3ef04dSDag-Erling Smørgrav   foo2();
84*fb3ef04dSDag-Erling Smørgrav   foo3();
85*fb3ef04dSDag-Erling Smørgrav   foo4();
86*fb3ef04dSDag-Erling Smørgrav   foo5();
87*fb3ef04dSDag-Erling Smørgrav   foo6();
88*fb3ef04dSDag-Erling Smørgrav   foo7();
89*fb3ef04dSDag-Erling Smørgrav   foo8();
90*fb3ef04dSDag-Erling Smørgrav   foo9();
91*fb3ef04dSDag-Erling Smørgrav   foo10();
92*fb3ef04dSDag-Erling Smørgrav   foo11();
93*fb3ef04dSDag-Erling Smørgrav   foo12();
94*fb3ef04dSDag-Erling Smørgrav }
95