/* 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";