diff options
Diffstat (limited to 'js/scripting-lang/tests/21_enhanced_case_statements_fixed.txt')
-rw-r--r-- | js/scripting-lang/tests/21_enhanced_case_statements_fixed.txt | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/js/scripting-lang/tests/21_enhanced_case_statements_fixed.txt b/js/scripting-lang/tests/21_enhanced_case_statements_fixed.txt new file mode 100644 index 0000000..79adb69 --- /dev/null +++ b/js/scripting-lang/tests/21_enhanced_case_statements_fixed.txt @@ -0,0 +1,98 @@ +/* Unit Test: Enhanced Case Statements - Fixed Version */ +/* Tests: FizzBuzz and advanced pattern matching with new capabilities */ + +/* ===== FIZZBUZZ IMPLEMENTATION ===== */ + +/* Classic FizzBuzz using multi-value patterns with expressions */ +fizzbuzz : n -> + when (n % 3) (n % 5) is + 0 0 then "FizzBuzz" + 0 _ then "Fizz" + _ 0 then "Buzz" + _ _ then n; + +/* Test FizzBuzz implementation */ +fizzbuzz_15 : fizzbuzz 15; +fizzbuzz_3 : fizzbuzz 3; +fizzbuzz_5 : fizzbuzz 5; +fizzbuzz_7 : fizzbuzz 7; + +/* ===== TABLE ACCESS IN WHEN EXPRESSIONS ===== */ + +/* User data for testing */ +admin_user : {role: "admin", level: 5, name: "Alice"}; +user_user : {role: "user", level: 2, name: "Bob"}; +guest_user : {role: "guest", level: 0, name: "Charlie"}; + +/* Access control using table access in patterns */ +access_level : user -> + when user.role is + "admin" then "full access" + "user" then "limited access" + _ then "no access"; + +/* Test access control */ +admin_access : access_level admin_user; +user_access : access_level user_user; +guest_access : access_level guest_user; + +/* ===== FUNCTION CALLS IN WHEN EXPRESSIONS ===== */ + +/* Helper functions for testing */ +is_even : n -> n % 2 = 0; + +/* Number classification using function calls in patterns */ +classify_number : n -> + when (is_even n) is + true then "even number" + false then "odd number"; + +/* Test number classification */ +even_class : classify_number 4; +odd_class : classify_number 7; + +/* ===== SIMPLIFIED MULTI-VALUE VALIDATION ===== */ + +/* Simplified validation - avoid complex and expressions */ +validate_name : name -> name != ""; +validate_age : age -> age >= 0; + +validate_user : name age -> + when (validate_name name) (validate_age age) is + true true then "valid user" + true false then "invalid age" + false true then "invalid name" + false false then "invalid user"; + +/* Test user validation */ +valid_user : validate_user "Alice" 30; +invalid_age : validate_user "Bob" -5; +invalid_name : validate_user "" 25; + +/* ===== OUTPUT RESULTS ===== */ + +/* Output FizzBuzz results */ +..out "FizzBuzz Results:"; +..out fizzbuzz_15; +..out fizzbuzz_3; +..out fizzbuzz_5; +..out fizzbuzz_7; + +/* Output access control results */ +..out "Access Control Results:"; +..out admin_access; +..out user_access; +..out guest_access; + +/* Output number classification results */ +..out "Number Classification Results:"; +..out even_class; +..out odd_class; + +/* Output user validation results */ +..out "User Validation Results:"; +..out valid_user; +..out invalid_age; +..out invalid_name; + +..out "Enhanced case statements test completed successfully"; \ No newline at end of file |