diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-15 00:04:23 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-15 00:04:23 +0900 |
| commit | 2009a26e17ad9dbefee3a5ca4339d754e51ef078 (patch) | |
| tree | 5c311a1a17f40786f53f4a89c5bbbb72402a6b2d /tests/switch.c | |
| parent | ef0cb4dbdc1c036f70f94a905cbacae9be5abf5e (diff) | |
| download | ducc-2009a26e17ad9dbefee3a5ca4339d754e51ef078.tar.gz ducc-2009a26e17ad9dbefee3a5ca4339d754e51ef078.tar.zst ducc-2009a26e17ad9dbefee3a5ca4339d754e51ef078.zip | |
refactor: write more tests in C
Diffstat (limited to 'tests/switch.c')
| -rw-r--r-- | tests/switch.c | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/tests/switch.c b/tests/switch.c new file mode 100644 index 0000000..18368b2 --- /dev/null +++ b/tests/switch.c @@ -0,0 +1,148 @@ +#include <helpers.h> + +int switch_fallthrough(int x) { + switch (x) { + case 1: + case 2: + return 12; + case 3: + case 4: + return 34; + } + return 0; +} + +int main() { + int x = 2; + int result = 0; + + switch (x) { + case 1: + result = 10; + break; + case 2: + result = 20; + break; + case 3: + result = 30; + break; + } + ASSERT_EQ(20, result); + + x = 5; + result = 0; + switch (x) { + case 1: + result = 10; + break; + case 2: + result = 20; + break; + default: + result = 99; + break; + } + ASSERT_EQ(99, result); + + x = 2; + result = 0; + switch (x) { + case 1: + result = result + 10; + case 2: + result = result + 20; + case 3: + result = result + 30; + break; + } + ASSERT_EQ(50, result); + + x = 1; + int y = 2; + result = 0; + switch (x) { + case 1: + switch (y) { + case 1: + result = 11; + break; + case 2: + result = 12; + break; + } + break; + case 2: + result = 20; + break; + } + ASSERT_EQ(12, result); + + int a = 3; + int b = 2; + result = 0; + switch (a + b) { + case 4: + result = 40; + break; + case 5: + result = 50; + break; + case 6: + result = 60; + break; + } + ASSERT_EQ(50, result); + + x = 2; + result = 0; + int temp = 0; + switch (x) { + case 1: + temp = 5; + result = temp * 2; + break; + case 2: + temp = 10; + result = temp * 2; + break; + case 3: + temp = 15; + result = temp * 2; + break; + } + ASSERT_EQ(20, result); + ASSERT_EQ(10, temp); + + x = 1; + result = 0; + switch (x) { + case 1: { + int local = 100; + result = local; + break; + } + case 2: { + int local = 200; + result = local; + break; + } + } + ASSERT_EQ(100, result); + + x = 10; + result = 42; + switch (x) { + case 1: + result = 10; + break; + case 2: + result = 20; + break; + } + ASSERT_EQ(42, result); + + ASSERT_EQ(12, switch_fallthrough(1)); + ASSERT_EQ(12, switch_fallthrough(2)); + ASSERT_EQ(34, switch_fallthrough(3)); + ASSERT_EQ(34, switch_fallthrough(4)); +} |
