summaryrefslogtreecommitdiff
path: root/tests/t0031-stringification.sh
diff options
context:
space:
mode:
authorkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
committerkx <kx@radix-linux.su>2026-10-01 12:02:28 +0300
commitba1b04d64bdfaf377915b22f77520216ebe47674 (patch)
tree044343035c28b2b04ca9725f26e9b7c39342d19c /tests/t0031-stringification.sh
parent124b140798456778e2a96851cc7268aa9a726698 (diff)
downloadmcpu-cpp-1.0.2.tar.xz
Version 1.0.21.0.2
Diffstat (limited to 'tests/t0031-stringification.sh')
-rwxr-xr-xtests/t0031-stringification.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/t0031-stringification.sh b/tests/t0031-stringification.sh
new file mode 100755
index 0000000..213d787
--- /dev/null
+++ b/tests/t0031-stringification.sh
@@ -0,0 +1,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