about summary refs log tree commit diff stats
path: root/js/scripting-lang/baba-yaga-c/tests/21_enhanced_case_statements_fixed.txt
blob: 79adb699c516859ed9f6a7dcd3ff69a1793903b8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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";