aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-07-20 01:07:40 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:04:26 +0900
commit274e212c16bb354532e4a955e594a159cef61665 (patch)
tree04acf78078538cd17bd698d8eaf4463d7c79bf99 /tests
parent82c99e92032b8101443671604de7137ba7257cd0 (diff)
downloadducc-274e212c16bb354532e4a955e594a159cef61665.tar.gz
ducc-274e212c16bb354532e4a955e594a159cef61665.tar.zst
ducc-274e212c16bb354532e4a955e594a159cef61665.zip
feat: partially implement #include directive
Diffstat (limited to 'tests')
-rw-r--r--tests/055.sh22
-rw-r--r--tests/056.sh30
-rw-r--r--tests/057.sh13
-rw-r--r--tests/058.sh25
4 files changed, 90 insertions, 0 deletions
diff --git a/tests/055.sh b/tests/055.sh
new file mode 100644
index 0000000..d5e65f3
--- /dev/null
+++ b/tests/055.sh
@@ -0,0 +1,22 @@
+set -e
+
+cat <<'EOF' > expected
+8
+EOF
+
+cat <<'EOF' > header.h
+int add(int a, int b) {
+ return a + b;
+}
+
+int printf(const char*, ...);
+EOF
+
+bash ../../test_diff.sh <<'EOF'
+#include "header.h"
+
+int main() {
+ printf("%d\n", add(5, 3));
+ return 0;
+}
+EOF
diff --git a/tests/056.sh b/tests/056.sh
new file mode 100644
index 0000000..7bad4c0
--- /dev/null
+++ b/tests/056.sh
@@ -0,0 +1,30 @@
+set -e
+
+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
+
+bash ../../test_diff.sh <<'EOF'
+#include "calc.h"
+
+int main() {
+ printf("%d\n", calculate(6));
+ return 0;
+}
+EOF
diff --git a/tests/057.sh b/tests/057.sh
new file mode 100644
index 0000000..6d1265f
--- /dev/null
+++ b/tests/057.sh
@@ -0,0 +1,13 @@
+set -e
+
+cat <<'EOF' > expected
+cannot open include file: nonexistent.h
+EOF
+
+bash ../../test_compile_error.sh <<'EOF'
+#include "nonexistent.h"
+
+int main() {
+ return 0;
+}
+EOF
diff --git a/tests/058.sh b/tests/058.sh
new file mode 100644
index 0000000..3be7ad1
--- /dev/null
+++ b/tests/058.sh
@@ -0,0 +1,25 @@
+set -e
+
+cat <<'EOF' > expected
+include depth limit exceeded
+EOF
+
+# Create circular include files
+cat <<'EOF' > a.h
+#include "b.h"
+int a() { return 1; }
+EOF
+
+cat <<'EOF' > b.h
+#include "a.h"
+int b() { return 2; }
+EOF
+
+bash ../../test_compile_error.sh <<'EOF'
+#include "a.h"
+
+int main() {
+ a() + b();
+ return 0;
+}
+EOF