aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/test_include_local.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_include_local.sh')
-rw-r--r--tests/test_include_local.sh100
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/test_include_local.sh b/tests/test_include_local.sh
new file mode 100644
index 0000000..c9fe755
--- /dev/null
+++ b/tests/test_include_local.sh
@@ -0,0 +1,100 @@
+cat <<'EOF' > header.h
+int add(int a, int b) {
+ return a + b;
+}
+
+int printf(const char*, ...);
+EOF
+
+cat <<'EOF' > expected
+8
+EOF
+test_diff <<'EOF'
+#include "header.h"
+
+int main() {
+ printf("%d\n", add(5, 3));
+ return 0;
+}
+EOF
+
+mkdir -p foo
+cat <<'EOF' > bar.h
+#include "baz.h"
+EOF
+cat <<'EOF' > baz.h
+#define A 123
+EOF
+cat <<'EOF' > foo/bar.h
+#include "baz.h"
+EOF
+cat <<'EOF' > foo/baz.h
+#define A 456
+EOF
+
+cat <<'EOF' > expected
+123
+456
+EOF
+test_diff <<'EOF'
+int printf(const char*, ...);
+
+int main() {
+#include "bar.h"
+ printf("%d\n", A);
+
+#undef A
+
+#include "foo/bar.h"
+ printf("%d\n", A);
+}
+EOF
+
+cat <<'EOF' > expected
+12
+EOF
+
+cat <<'EOF' > math.h
+int multiply(int a, int b) {
+ return a * b;
+}
+EOF
+
+cat <<'EOF' > calc.h
+#include "math.h"
+
+int calculate(int x) {
+ return multiply(x, 2);
+}
+
+int printf(const char*, ...);
+EOF
+
+test_diff <<'EOF'
+#include "calc.h"
+
+int main() {
+ printf("%d\n", calculate(6));
+ return 0;
+}
+EOF
+
+cat <<'EOF' > expected
+42
+EOF
+
+cat <<'EOF' > header.h
+#define A 42
+EOF
+
+test_diff <<'EOF'
+#include "header.h"
+
+int printf();
+
+int main() {
+ printf("%d\n", A);
+ return 0;
+}
+EOF
+