aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/expressions.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/expressions.sh')
-rw-r--r--tests/expressions.sh241
1 files changed, 12 insertions, 229 deletions
diff --git a/tests/expressions.sh b/tests/expressions.sh
index 8443774..bb0743b 100644
--- a/tests/expressions.sh
+++ b/tests/expressions.sh
@@ -1,4 +1,4 @@
-# logical operators
+# logical operators: short-circuit evaluation
cat <<'EOF' > expected
foo
EOF
@@ -51,53 +51,26 @@ int main() {
}
EOF
+# cast with typedef
cat <<'EOF' > expected
-0
-1
-0
+Result: -42
+Result: 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
+int printf(const char*, ...);
-test_diff <<'EOF'
-int printf();
+typedef int foo;
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);
+ int b = -(int)a;
+ int c = !(foo)a;
+ printf("Result: %d\n", b);
+ printf("Result: %d\n", c);
}
EOF
-# comma operator
+# comma operator in for loop
cat <<'EOF' > expected
0 0
1 1
@@ -118,197 +91,7 @@ int main() {
}
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: -42
-Result: 0
-EOF
-test_diff <<'EOF'
-int printf(const char*, ...);
-
-typedef int foo;
-
-int main() {
- int a = 42;
- int b = -(int)a;
- int c = !(foo)a;
- printf("Result: %d\n", b);
- printf("Result: %d\n", c);
-}
-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
-
+# void cast
cat <<'EOF' > expected
42
EOF