From c780cbb6acd0e0526f2d305138190392bdc8cdd7 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 24 Jan 2026 01:43:01 +0900 Subject: refactor: organize test files --- tests/include.sh | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 tests/include.sh (limited to 'tests/include.sh') diff --git a/tests/include.sh b/tests/include.sh new file mode 100644 index 0000000..33cabb4 --- /dev/null +++ b/tests/include.sh @@ -0,0 +1,189 @@ +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 + +cat <<'EOF' > expected +42 +EOF + +cat <<'EOF' > header.h +#ifndef HEADER_H +#define HEADER_H + +int f() { return 42; } + +#endif +EOF + +test_diff <<'EOF' +#include "header.h" +#include "header.h" +#include "header.h" + +int printf(); + +int main() { + printf("%d\n", HEADER_H HEADER_H HEADER_H f() HEADER_H HEADER_H HEADER_H); + return 0; +} +EOF + +cat <<'EOF' > expected +main.c:1: cannot open include file: "nonexistent.h" +EOF + +test_compile_error <<'EOF' +#include "nonexistent.h" + +int main() { + return 0; +} +EOF + +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 + +test_compile_error <<'EOF' +#include "a.h" + +int main() { + a() + b(); + return 0; +} +EOF + +cat <<'EOF' > expected +main.c:1: cannot open include file: "hoge.h" +EOF + +test_compile_error <<'EOF' +#include "hoge.h" +EOF + +cat <<'EOF' > expected +main.c:1: cannot resolve include file name: +EOF + +test_compile_error <<'EOF' +#include +EOF + +cat <<'EOF' > expected +42 +EOF + +test_exit_code 0 <<'EOF' +#ifdef FOO +#include FOO +#endif + +int main() { 1 < 2; } +EOF -- cgit v1.3-1-g0d28