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/operators.c | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 tests/operators.c (limited to 'tests/operators.c') diff --git a/tests/operators.c b/tests/operators.c new file mode 100644 index 0000000..9e9ba08 --- /dev/null +++ b/tests/operators.c @@ -0,0 +1,122 @@ +#include + +int main() { + // arithmetic operators + ASSERT_EQ(42, 42); + ASSERT_EQ(21, 5 + 20 - 4); + ASSERT_EQ(26, 2 * 3 + 4 * 5); + ASSERT_EQ(197, (((3 + 5) / 2) + (5 * (9 - 6)) * (5 + 6 * 7)) % 256); + ASSERT_EQ(30, (-10 + 20 * -3) + 100); + + // comparison operators + ASSERT_EQ(1, 0 == 0); + ASSERT_EQ(0, 123 != 123); + ASSERT_EQ(1, 123 != 456); + ASSERT_EQ(0, 123 == 124); + ASSERT_EQ(1, 123 < 567); + ASSERT_EQ(1, 123 <= 567); + ASSERT_EQ(1, 123 <= 123); + ASSERT_EQ(0, 123 < 123); + + // bitwise operators + ASSERT_EQ(123, 0 | 123); + ASSERT_EQ(460, 12 | 456); + + ASSERT_EQ(8, 1 << 3); + ASSERT_EQ(336, 21 << 4); + ASSERT_EQ(13, 111 >> 3); + ASSERT_EQ(0, 15 >> 14); + + int a = 5; + int b = 3; + ASSERT_EQ(1, a & b); + ASSERT_EQ(7, a | b); + ASSERT_EQ(6, a ^ b); + ASSERT_EQ(4, 2 + 3 & 4); + + int c = 1 + 2 & 3; + int d = 4 & 5 ^ 6; + int e = 1 ^ 2 | 3; + int f = 0 | 1 & 2; + ASSERT_EQ(3, c); + ASSERT_EQ(2, d); + ASSERT_EQ(3, e); + ASSERT_EQ(0, f); + + ASSERT_EQ(-1, ~0); + ASSERT_EQ(-2, ~1); + ASSERT_EQ(-6, ~5); + ASSERT_EQ(0, ~(-1)); + ASSERT_EQ(5, ~(-6)); + + int x = 10; + ASSERT_EQ(-11, ~x); + ASSERT_EQ(-1, ~(x & 0)); + ASSERT_EQ(-16, ~(x | 5)); + + // assignment operators + int i = 0; + for (; i < 5; i += 1) { + } + ASSERT_EQ(5, i); + + for (i = 5; i >= 0; i -= 1) + ; + ASSERT_EQ(-1, i); + + x = 123; + x *= 456; + ASSERT_EQ(56088, x); + + int y = 120; + y /= 5; + ASSERT_EQ(24, y); + + int z = 17; + z %= 7; + ASSERT_EQ(3, z); + + a = 0x05; + a |= 0x0A; + ASSERT_EQ(0x0F, a); + + b = 0x0F; + b &= 0x0A; + ASSERT_EQ(0x0A, b); + + c = 7; + c |= 8; + ASSERT_EQ(15, c); + + d = 15; + d &= 6; + ASSERT_EQ(6, d); + + e = 0x0F; + e ^= 0x05; + ASSERT_EQ(0x0A, e); + + f = 3; + f <<= 2; + ASSERT_EQ(12, f); + + int g = 16; + g >>= 2; + ASSERT_EQ(4, g); + + int h = -16; + h >>= 2; + ASSERT_EQ(-4, h); + + int j = 1; + j <<= 4; + ASSERT_EQ(16, j); + + int k = 64; + k >>= 3; + ASSERT_EQ(8, k); + + // ternary operator + ASSERT_EQ(2, 1 ? 2 : 3); + ASSERT_EQ(5, 0 ? 4 : 5); +} -- cgit v1.3-1-g0d28