summaryrefslogtreecommitdiff
path: root/tests/t0020-function-macros.sh
blob: aba3fc5db0f4030f27d7c3bc29e4c5db8c041945 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh
set -eu
src="${TMPDIR-/tmp}/mcpu-cpp-fmacro-$$.c"
out="${TMPDIR-/tmp}/mcpu-cpp-fmacro-$$.out"
trap 'rm -f "$src" "$out"' EXIT HUP INT TERM
cat > "$src" <<'EOT'
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
#define A 7
#define ZERO() zero-text
#define INNER(X) [X]
#define OUTER(X, Y) INNER(X) + INNER(Y)
#define OBJECT (argument)
#define WRAP(X) <X>
#define TWICE(X) (X) + \
(X)
min(1, 2)
min(A, 3)
min(min(a, b), c)
OUTER(A, min(4, 5))
ZERO ()
ZERO
OBJECT
WRAP("a,b")
TWICE(3)
"min(A, 3)"
#lang "diff"
#define DERIV(X) X' + X
DERIV(y)
#endlang
EOT
"$MCPU_CPP" --no-config "$src" -o "$out"
grep '^((1) < (2) ? (1) : (2))$' "$out" >/dev/null
grep '^((7) < (3) ? (7) : (3))$' "$out" >/dev/null
grep '^((((a) < (b) ? (a) : (b))) < (c) ? (((a) < (b) ? (a) : (b))) : (c))$' "$out" >/dev/null
grep '^\[7\] + \[((4) < (5) ? (4) : (5))\]$' "$out" >/dev/null
grep '^zero-text$' "$out" >/dev/null
grep '^ZERO$' "$out" >/dev/null
grep '^(argument)$' "$out" >/dev/null
grep '^<"a,b">$' "$out" >/dev/null
grep '^(3) + (3)$' "$out" >/dev/null
grep '^"min(A, 3)"$' "$out" >/dev/null
grep "^y' + y$" "$out" >/dev/null