summaryrefslogtreecommitdiff
path: root/tests/t0031-stringification.sh
blob: 213d7875af2e47bbfea6638670f894c1b7582d2d (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
43
44
45
46
47
48
49
50
#!/bin/sh
set -eu
src="${TMPDIR-/tmp}/mcpu-cpp-stringify-$$.c"
out="${TMPDIR-/tmp}/mcpu-cpp-stringify-$$.out"
dump="${TMPDIR-/tmp}/mcpu-cpp-stringify-$$.dump"
trap 'rm -f "$src" "$out" "$dump"' EXIT HUP INT TERM

cat > "$src" <<'EOT'
#define A 7
#define STR(X) #X
#define WSTR(X) #   X
#define XSTR(X) STR(X)
#define MIX(X) #X | X
#define BAD(X, Y) X + Y
#define HASH(X) "#" X
#define EMPTY(X) <X>
STR(A)
WSTR(alpha)
XSTR(A)
STR(  a    +   b  )
STR(Привет    мир)
STR("a\\b")
STR()
STR(BAD(1))
MIX(A)
HASH(A)
EMPTY()
#lang "diff"
#define DSTR(X) #X
DSTR(y'   +   z)
#endlang
EOT

"$MCPU_CPP" --no-config "$src" -o "$out"

grep -Fx '"A"' "$out" >/dev/null
grep -Fx '"alpha"' "$out" >/dev/null
grep -Fx '"7"' "$out" >/dev/null
grep -Fx '"a + b"' "$out" >/dev/null
grep -Fx '"Привет мир"' "$out" >/dev/null
grep -Fx '"\"a\\\\b\""' "$out" >/dev/null
grep -Fx '""' "$out" >/dev/null
grep -Fx '"BAD(1)"' "$out" >/dev/null
grep -Fx '"A" | 7' "$out" >/dev/null
grep -Fx '"#" 7' "$out" >/dev/null
grep -Fx '<>' "$out" >/dev/null
grep -Fx '"y'"'"' + z"' "$out" >/dev/null

"$MCPU_CPP" --no-config -dM "$src" > "$dump"
grep -Fx '#define STR(X) #X' "$dump" >/dev/null