diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-01-24 01:43:01 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-01-24 01:43:01 +0900 |
| commit | c780cbb6acd0e0526f2d305138190392bdc8cdd7 (patch) | |
| tree | df1edba6eb5778a00e1f4c8a5051414d5bb37e71 /tests/expressions.sh | |
| parent | d179d944c0633d3aa2420009335791b115f67052 (diff) | |
| download | ducc-c780cbb6acd0e0526f2d305138190392bdc8cdd7.tar.gz ducc-c780cbb6acd0e0526f2d305138190392bdc8cdd7.tar.zst ducc-c780cbb6acd0e0526f2d305138190392bdc8cdd7.zip | |
refactor: organize test files
Diffstat (limited to 'tests/expressions.sh')
| -rw-r--r-- | tests/expressions.sh | 309 |
1 files changed, 309 insertions, 0 deletions
diff --git a/tests/expressions.sh b/tests/expressions.sh new file mode 100644 index 0000000..dadfade --- /dev/null +++ b/tests/expressions.sh @@ -0,0 +1,309 @@ +# logical operators +cat <<'EOF' > expected +foo +EOF +test_diff <<'EOF' +int printf(); + +int foo() { + printf("foo\n"); + return 0; +} + +int bar() { + printf("bar\n"); + return 1; +} + +int main() { + if (foo() && bar()) { + printf("baz\n"); + } + + return 0; +} +EOF + +cat <<'EOF' > expected +foo +bar +baz +EOF +test_diff <<'EOF' +int printf(); + +int foo() { + printf("foo\n"); + return 0; +} + +int bar() { + printf("bar\n"); + return 1; +} + +int main() { + if (foo() || bar()) { + printf("baz\n"); + } + + return 0; +} +EOF + +cat <<'EOF' > expected +0 +1 +0 +EOF +test_diff <<'EOF' +int printf(); + +int main() { + printf("%d\n", !1); + printf("%d\n", !0); + printf("%d\n", !23); + return 0; +} +EOF + +# increment/decrement operators +cat <<'EOF' > expected +44 +44 +46 +46 +44 +42 +42 +EOF + +test_diff <<'EOF' +int printf(); + +int main() { + int a = 42; + ++a; + a++; + printf("%d\n", a); + printf("%d\n", a++); + printf("%d\n", ++a); + printf("%d\n", a); + --a; + a--; + printf("%d\n", a--); + printf("%d\n", --a); + printf("%d\n", a); +} +EOF + +# comma operator +cat <<'EOF' > expected +0 0 +1 1 +2 2 +3 3 +4 4 +EOF + +test_diff <<'EOF' +int printf(); + +int main() { + int i = 1000; + int j = 1000; + for (i = 0, j = 0; i < 5; i++, j++) { + printf("%d %d\n", i, j); + } +} +EOF + +cat <<'EOF' > expected +1 2 3 4 +0 0 5 +EOF + +test_diff <<'EOF' +int printf(); +int x, y, z = 5; +int main() { + int a, b; + a = 1, b = 2; + int c = 3, d = 4; + printf("%d %d %d %d\n", a, b, c, d); + printf("%d %d %d\n", x, y, z); +} +EOF + +# cast expressions +cat <<'EOF' > expected +65 +65 +127 +1 +42 +99 +10 +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +int main() { + char c = 65; + int i = (int)c; + printf("%d\n", i); + + int i2 = 321; + char c2 = (char)i2; + printf("%d\n", c2); + + short s = 127; + int i3 = (int)s; + printf("%d\n", i3); + + int i4 = 65537; + short s2 = (short)i4; + printf("%d\n", s2); + + long l = 42; + int i5 = (int)l; + printf("%d\n", i5); + + int i6 = 99; + long l2 = (long)i6; + printf("%d\n", (int)l2); + + char c3 = 10; + short s3 = (short)c3; + int i7 = (int)s3; + long l3 = (long)i7; + printf("%d\n", (int)l3); + + return 0; +} +EOF + +cat <<'EOF' > expected +Result: 130 +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +int main() { + char c = 65; + int result = (int)c + (int)c; + printf("Result: %d\n", result); + return 0; +} +EOF + +cat <<'EOF' > expected +10 +20 +30 +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +int main() { + char a = 5; + char b = 5; + int sum = (int)a + (int)b; + printf("%d\n", sum); + + short s1 = 10; + short s2 = 10; + int sum2 = (int)s1 + (int)s2; + printf("%d\n", sum2); + + long l1 = 15; + long l2 = 15; + int sum3 = (int)(l1 + l2); + printf("%d\n", sum3); + + return 0; +} +EOF + +cat <<'EOF' > expected +10 +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +int main() { + char c = -10; + int i = (int)c; + printf("%d\n", -i); + return 0; +} +EOF + +cat <<'EOF' > expected +Char: 65 +Int: 65 +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +char get_char() { + return 65; +} + +int main() { + char c = get_char(); + int i = (int)get_char(); + printf("Char: %d\n", c); + printf("Int: %d\n", i); + return 0; +} +EOF + +cat <<'EOF' > expected +Equal +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +int main() { + char c = 42; + int i = 42; + if ((int)c == i) { + printf("Equal\n"); + } else { + printf("Not equal\n"); + } + return 0; +} +EOF + +cat <<'EOF' > expected +55 +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +int main() { + long l = 55; + char c = (char)(short)(int)l; + printf("%d\n", c); + return 0; +} +EOF + +cat <<'EOF' > expected +42 +EOF +test_diff <<'EOF' +int printf(const char*, ...); + +int f() { + return printf("42\n"); +} + +int main() { + (void)123; + (void)(5 + 6 + 7); + (void)f(); +} +EOF |
