aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-01-24 13:19:48 +0900
committernsfisis <nsfisis@gmail.com>2026-01-24 13:24:37 +0900
commit6f1e639ff0092c56fb1b8ce8fe298cc5ffc32bfb (patch)
tree3a45657e1081121d350d5bf563c1bcab49b4e2be /tests
parent8e0de5b89ecfdd0aa9a7c01b9ef1652b4107ad4c (diff)
downloadducc-6f1e639ff0092c56fb1b8ce8fe298cc5ffc32bfb.tar.gz
ducc-6f1e639ff0092c56fb1b8ce8fe298cc5ffc32bfb.tar.zst
ducc-6f1e639ff0092c56fb1b8ce8fe298cc5ffc32bfb.zip
feat: implement parsing of "sizeof expr"
Diffstat (limited to 'tests')
-rw-r--r--tests/operators.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/operators.c b/tests/operators.c
index 9e9ba08..e089477 100644
--- a/tests/operators.c
+++ b/tests/operators.c
@@ -119,4 +119,27 @@ int main() {
// ternary operator
ASSERT_EQ(2, 1 ? 2 : 3);
ASSERT_EQ(5, 0 ? 4 : 5);
+
+ // sizeof operator
+ // sizeof '(' type-name ')'
+ ASSERT_EQ(4, sizeof(int));
+ ASSERT_EQ(1, sizeof(char));
+
+ // sizeof unary-expr (with parenthesized expressions)
+ ASSERT_EQ(4, sizeof(+123));
+ ASSERT_EQ(4, sizeof(-1));
+ ASSERT_EQ(4, sizeof(1 + 2));
+ ASSERT_EQ(4, sizeof(~0));
+ ASSERT_EQ(4, sizeof(!0));
+
+ // sizeof unary-expr (variable)
+ int sz_var = 42;
+ ASSERT_EQ(4, sizeof(sz_var));
+ ASSERT_EQ(4, sizeof sz_var);
+
+ // sizeof with more complex expressions
+ char sz_c = 'a';
+ ASSERT_EQ(1, sizeof sz_c);
+ ASSERT_EQ(1, sizeof(sz_c));
+ ASSERT_EQ(4, sizeof(sz_c + 1));
}