diff options
Diffstat (limited to 'js/scripting-lang/baba-yaga-c/tests')
34 files changed, 0 insertions, 2279 deletions
diff --git a/js/scripting-lang/baba-yaga-c/tests/01_lexer_basic.txt b/js/scripting-lang/baba-yaga-c/tests/01_lexer_basic.txt deleted file mode 100644 index 90693f1..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/01_lexer_basic.txt +++ /dev/null @@ -1,25 +0,0 @@ -/* Unit Test: Basic Lexer Functionality */ -/* Tests: Numbers, identifiers, operators, keywords */ - -/* Test numbers */ -x : 42; -y : 3.14; -z : 0; - -/* Test identifiers */ -name : "test"; -flag : true; -value : false; - -/* Test basic operators */ -sum : x + y; -diff : x - y; -prod : x * y; -quot : x / y; - -/* Test keywords */ -result : when x is - 42 then "correct" - _ then "wrong"; - -..out "Lexer basic test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/02_arithmetic_operations.txt b/js/scripting-lang/baba-yaga-c/tests/02_arithmetic_operations.txt deleted file mode 100644 index d4c0648..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/02_arithmetic_operations.txt +++ /dev/null @@ -1,31 +0,0 @@ -/* Unit Test: Arithmetic Operations */ -/* Tests: All arithmetic operators and precedence */ - -/* Basic arithmetic */ -a : 10; -b : 3; -sum : a + b; -diff : a - b; -product : a * b; -quotient : a / b; -moduloResult : a % b; -powerResult : a ^ b; - -/* Test results */ -..assert sum = 13; -..assert diff = 7; -..assert product = 30; -..assert quotient = 3.3333333333333335; -..assert moduloResult = 1; -..assert powerResult = 1000; - -/* Complex expressions with parentheses */ -complex1 : (5 + 3) * 2; -complex2 : ((10 - 2) * 3) + 1; -complex3 : (2 ^ 3) % 5; - -..assert complex1 = 16; -..assert complex2 = 25; -..assert complex3 = 3; - -..out "Arithmetic operations test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/03_comparison_operators.txt b/js/scripting-lang/baba-yaga-c/tests/03_comparison_operators.txt deleted file mode 100644 index f122a84..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/03_comparison_operators.txt +++ /dev/null @@ -1,33 +0,0 @@ -/* Unit Test: Comparison Operators */ -/* Tests: All comparison operators */ - -/* Basic comparisons */ -less : 3 < 5; -greater : 10 > 5; -equal : 5 = 5; -not_equal : 3 != 5; -less_equal : 5 <= 5; -greater_equal : 5 >= 3; - -/* Test results */ -..assert less = true; -..assert greater = true; -..assert equal = true; -..assert not_equal = true; -..assert less_equal = true; -..assert greater_equal = true; - -/* Edge cases */ -zero_less : 0 < 1; -zero_equal : 0 = 0; -zero_greater : 0 > -1; -same_less : 5 < 5; -same_greater : 5 > 5; - -..assert zero_less = true; -..assert zero_equal = true; -..assert zero_greater = true; -..assert same_less = false; -..assert same_greater = false; - -..out "Comparison operators test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/04_logical_operators.txt b/js/scripting-lang/baba-yaga-c/tests/04_logical_operators.txt deleted file mode 100644 index 591e04b..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/04_logical_operators.txt +++ /dev/null @@ -1,35 +0,0 @@ -/* Unit Test: Logical Operators */ -/* Tests: All logical operators */ - -/* Basic logical operations */ -and_true : 1 and 1; -and_false : 1 and 0; -or_true : 0 or 1; -or_false : 0 or 0; -xor_true : 1 xor 0; -xor_false : 1 xor 1; -not_true : not 0; -not_false : not 1; - -/* Test results */ -..assert and_true = true; -..assert and_false = false; -..assert or_true = true; -..assert or_false = false; -..assert xor_true = true; -..assert xor_false = false; -..assert not_true = true; -..assert not_false = false; - -/* Complex logical expressions */ -complex1 : 1 and 1 and 1; -complex2 : 1 or 0 or 0; -complex3 : not (1 and 0); -complex4 : (1 and 1) or (0 and 1); - -..assert complex1 = true; -..assert complex2 = true; -..assert complex3 = true; -..assert complex4 = true; - -..out "Logical operators test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/05_io_operations.txt b/js/scripting-lang/baba-yaga-c/tests/05_io_operations.txt deleted file mode 100644 index 6d05dfe..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/05_io_operations.txt +++ /dev/null @@ -1,63 +0,0 @@ -/* Unit Test: IO Operations */ -/* Tests: ..out, ..assert, ..listen, ..emit operations */ - -/* Test basic output */ -..out "Testing IO operations"; - -/* Test assertions */ -x : 5; -y : 3; -sum : x + y; - -..assert x = 5; -..assert y = 3; -..assert sum = 8; -..assert x > 3; -..assert y < 10; -..assert sum != 0; - -/* Test string comparisons */ -..assert "hello" = "hello"; -..assert "world" != "hello"; - -/* Test complex assertions */ -..assert (x + y) = 8; -..assert (x * y) = 15; -..assert (x > y) = true; - -/* Test ..listen functionality */ -state : ..listen; -..assert state.status = "placeholder"; -..assert state.message = "State not available in standalone mode"; - -/* Test ..listen in when expression */ -result : when ..listen is - { status: "placeholder" } then "Placeholder detected" - { status: "active" } then "Active state detected" - _ then "Unknown state"; -..assert result = "Placeholder detected"; - -/* Test ..emit with different data types */ -..emit "String value"; -..emit 42; -..emit true; -..emit { key: "value", number: 123 }; - -/* Test ..emit with computed expressions */ -computed_table : { a: 10, b: 20 }; -computed_sum : computed_table.a + computed_table.b; -..emit computed_sum; - -/* Test ..emit with conditional logic */ -condition : 10 > 5; -message : when condition is - true then "Condition is true" - false then "Condition is false"; -..emit message; - -/* Test that ..emit doesn't interfere with ..out */ -..out "This should appear via ..out"; -..emit "This should appear via ..emit"; -..out "Another ..out message"; - -..out "IO operations test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/06_function_definitions.txt b/js/scripting-lang/baba-yaga-c/tests/06_function_definitions.txt deleted file mode 100644 index b0e591f..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/06_function_definitions.txt +++ /dev/null @@ -1,32 +0,0 @@ -/* Unit Test: Function Definitions */ -/* Tests: Function syntax, parameters, calls */ - -/* Basic function definitions */ -add_func : x y -> x + y; -multiply_func : x y -> x * y; -double_func : x -> x * 2; -square_func : x -> x * x; -identity_func : x -> x; - -/* Test function calls */ -result1 : add_func 3 4; -result2 : multiply_func 5 6; -result3 : double_func 8; -result4 : square_func 4; -result5 : identity_func 42; - -/* Test results */ -..assert result1 = 7; -..assert result2 = 30; -..assert result3 = 16; -..assert result4 = 16; -..assert result5 = 42; - -/* Test function calls with parentheses */ -result6 : add_func @(3 + 2) @(4 + 1); -result7 : multiply_func @(double_func 3) @(square_func 2); - -..assert result6 = 10; -..assert result7 = 24; - -..out "Function definitions test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/07_case_expressions.txt b/js/scripting-lang/baba-yaga-c/tests/07_case_expressions.txt deleted file mode 100644 index ccc447c..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/07_case_expressions.txt +++ /dev/null @@ -1,47 +0,0 @@ -/* Unit Test: Case Expressions */ -/* Tests: Pattern matching, wildcards, nested cases */ - -/* Basic case expressions */ -factorial : n -> - when n is - 0 then 1 - _ then n * (@factorial (n - 1)); - -grade : score -> - when score is - score >= 90 then "A" - score >= 80 then "B" - score >= 70 then "C" - _ then "F"; - -/* Test case expressions */ -fact5 : factorial 5; -grade1 : grade 95; -grade2 : grade 85; -grade3 : grade 65; - -/* Test results */ -..assert fact5 = 120; -..assert grade1 = "A"; /* 95 >= 90, so matches first case */ -..assert grade2 = "B"; /* 85 >= 80, so matches second case */ -..assert grade3 = "F"; /* 65 < 70, so falls through to wildcard */ - -/* Multi-parameter case expressions */ -compare : x y -> - when x y is - 0 0 then "both zero" - 0 _ then "x is zero" - _ 0 then "y is zero" - _ _ then "neither zero"; - -test1 : compare 0 0; -test2 : compare 0 5; -test3 : compare 5 0; -test4 : compare 5 5; - -..assert test1 = "both zero"; -..assert test2 = "x is zero"; -..assert test3 = "y is zero"; -..assert test4 = "neither zero"; - -..out "Case expressions test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/08_first_class_functions.txt b/js/scripting-lang/baba-yaga-c/tests/08_first_class_functions.txt deleted file mode 100644 index 75fda40..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/08_first_class_functions.txt +++ /dev/null @@ -1,51 +0,0 @@ -/* Unit Test: First-Class Functions */ -/* Tests: Function references, higher-order functions */ - -/* Basic functions */ -double : x -> x * 2; -square : x -> x * x; -add1 : x -> x + 1; - -/* Function references */ -double_ref : @double; -square_ref : @square; -add1_ref : @add1; - -/* Test function references */ -result1 : double_ref 5; -result2 : square_ref 3; -result3 : add1_ref 10; - -..assert result1 = 10; -..assert result2 = 9; -..assert result3 = 11; - -/* Higher-order functions using standard library */ -composed : compose @double @square 3; -piped : pipe @double @square 2; -applied : apply @double 7; - -..assert composed = 18; -..assert piped = 16; -..assert applied = 14; - -/* Function references in case expressions */ -getFunction : type -> - when type is - "double" then @double - "square" then @square - _ then @add1; - -func1 : getFunction "double"; -func2 : getFunction "square"; -func3 : getFunction "unknown"; - -result4 : func1 4; -result5 : func2 4; -result6 : func3 4; - -..assert result4 = 8; -..assert result5 = 16; -..assert result6 = 5; - -..out "First-class functions test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/09_tables.txt b/js/scripting-lang/baba-yaga-c/tests/09_tables.txt deleted file mode 100644 index 3845903..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/09_tables.txt +++ /dev/null @@ -1,50 +0,0 @@ -/* Unit Test: Tables */ -/* Tests: Table literals, access, mixed types */ - -/* Empty table */ -empty : {}; - -/* Array-like table */ -numbers : {1, 2, 3, 4, 5}; - -/* Key-value table */ -person : {name: "Alice", age: 30, active: true}; - -/* Mixed table */ -mixed : {1, name: "Bob", 2, active: false}; - -/* Test array access */ -first : numbers[1]; -second : numbers[2]; -last : numbers[5]; - -..assert first = 1; -..assert second = 2; -..assert last = 5; - -/* Test object access */ -name : person.name; -age : person.age; -active : person.active; - -..assert name = "Alice"; -..assert age = 30; -..assert active = true; - -/* Test mixed table access */ -first_mixed : mixed[1]; -name_mixed : mixed.name; -second_mixed : mixed[2]; - -..assert first_mixed = 1; -..assert name_mixed = "Bob"; -..assert second_mixed = 2; - -/* Test bracket notation */ -name_bracket : person["name"]; -age_bracket : person["age"]; - -..assert name_bracket = "Alice"; -..assert age_bracket = 30; - -..out "Tables test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/10_standard_library.txt b/js/scripting-lang/baba-yaga-c/tests/10_standard_library.txt deleted file mode 100644 index 221d5ca..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/10_standard_library.txt +++ /dev/null @@ -1,40 +0,0 @@ -/* Unit Test: Standard Library */ -/* Tests: All built-in higher-order functions */ - -/* Basic functions for testing */ -double_func : x -> x * 2; -square_func : x -> x * x; -add_func : x y -> x + y; -isPositive : x -> x > 0; - -/* Map function */ -mapped1 : map @double_func 5; -mapped2 : map @square_func 3; - -..assert mapped1 = 10; -..assert mapped2 = 9; - -/* Compose function */ -composed : compose @double_func @square_func 3; -..assert composed = 18; - -/* Pipe function */ -piped : pipe @double_func @square_func 2; -..assert piped = 16; - -/* Apply function */ -applied : apply @double_func 7; -..assert applied = 14; - -/* Reduce and Fold functions */ -reduced : reduce @add_func 0 5; -folded : fold @add_func 0 5; - -..assert reduced = 5; -..assert folded = 5; - -/* Curry function */ -curried : curry @add_func 3 4; -..assert curried = 7; - -..out "Standard library test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/11_edge_cases.txt b/js/scripting-lang/baba-yaga-c/tests/11_edge_cases.txt deleted file mode 100644 index bff51ef..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/11_edge_cases.txt +++ /dev/null @@ -1,50 +0,0 @@ -/* Unit Test: Edge Cases and Error Conditions */ -/* Tests: Unary minus, complex expressions */ - -/* Test unary minus operations */ -negative1 : -5; -negative2 : -3.14; -negative3 : -0; - -..assert negative1 = -5; -..assert negative2 = -3.14; -..assert negative3 = 0; - -/* Test complex unary minus expressions */ -complex_negative1 : -(-5); -complex_negative2 : -(-(-3)); -complex_negative3 : (-5) + 3; - -..assert complex_negative1 = 5; -..assert complex_negative2 = -3; -..assert complex_negative3 = -2; - -/* Test unary minus in function calls */ -abs : x -> when x is - x < 0 then -x - _ then x; - -abs1 : abs (-5); -abs2 : abs 5; - -..assert abs1 = 5; -..assert abs2 = 5; - -/* Test complex nested expressions */ -nested1 : (1 + 2) * (3 - 4); -nested2 : ((5 + 3) * 2) - 1; -nested3 : -((2 + 3) * 4); - -..assert nested1 = -3; -..assert nested2 = 15; -..assert nested3 = -20; - -/* Test unary minus with function references */ -myNegate : x -> -x; -negated1 : myNegate 5; -negated2 : myNegate (-3); - -..assert negated1 = -5; -..assert negated2 = 3; - -..out "Edge cases test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/12_advanced_tables.txt b/js/scripting-lang/baba-yaga-c/tests/12_advanced_tables.txt deleted file mode 100644 index 3b2a326..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/12_advanced_tables.txt +++ /dev/null @@ -1,85 +0,0 @@ -/* Unit Test: Advanced Table Features */ -/* Tests: Nested tables, mixed types, array-like entries */ - -/* Nested tables */ -nested_table : { - outer: { - inner: { - value: 42 - } - } -}; - -/* Test nested access */ -nested_value1 : nested_table.outer.inner.value; -..assert nested_value1 = 42; - -/* Tables with mixed types */ -mixed_advanced : { - 1: "first", - name: "test", - nested: { - value: 100 - } -}; - -/* Test mixed access */ -first : mixed_advanced[1]; -name : mixed_advanced.name; -nested_value2 : mixed_advanced.nested.value; - -..assert first = "first"; -..assert name = "test"; -..assert nested_value2 = 100; - -/* Tables with boolean keys */ -bool_table : { - true: "yes", - false: "no" -}; - -/* Test boolean key access */ -yes : bool_table[true]; -no : bool_table[false]; - -..assert yes = "yes"; -..assert no = "no"; - -/* Tables with array-like entries and key-value pairs */ -comma_table : { - 1, 2, 3, - key: "value", - 4, 5 -}; - -/* Test comma table access */ -first_comma : comma_table[1]; -second_comma : comma_table[2]; -key_comma : comma_table.key; -fourth_comma : comma_table[4]; - -..assert first_comma = 1; -..assert second_comma = 2; -..assert key_comma = "value"; -..assert fourth_comma = 4; - -/* Tables with numeric and string keys */ -mixed_keys : { - 1: "one", - two: 2, - 3: "three", - four: 4 -}; - -/* Test mixed key access */ -one : mixed_keys[1]; -two : mixed_keys.two; -three : mixed_keys[3]; -four : mixed_keys.four; - -..assert one = "one"; -..assert two = 2; -..assert three = "three"; -..assert four = 4; - -..out "Advanced tables test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/13_standard_library_complete.txt b/js/scripting-lang/baba-yaga-c/tests/13_standard_library_complete.txt deleted file mode 100644 index 451dc0a..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/13_standard_library_complete.txt +++ /dev/null @@ -1,97 +0,0 @@ -/* Unit Test: Complete Standard Library */ -/* Tests: All built-in higher-order functions including reduce, fold, curry */ - -/* Basic functions for testing */ -double_func : x -> x * 2; -square_func : x -> x * x; -add_func : x y -> x + y; -isPositive : x -> x > 0; -isEven : x -> x % 2 = 0; - -/* Map function */ -mapped1 : map @double_func 5; -mapped2 : map @square_func 3; - -..assert mapped1 = 10; -..assert mapped2 = 9; - -/* Compose function */ -composed : compose @double_func @square_func 3; -..assert composed = 18; - -/* Pipe function */ -piped : pipe @double_func @square_func 2; -..assert piped = 16; - -/* Apply function */ -applied : apply @double_func 7; -..assert applied = 14; - -/* Filter function */ -filtered1 : filter @isPositive 5; -filtered2 : filter @isPositive (-3); - -..assert filtered1 = 5; -..assert filtered2 = 0; - -/* Reduce function */ -reduced : reduce @add_func 0 5; -..assert reduced = 5; - -/* Fold function */ -folded : fold @add_func 0 5; -..assert folded = 5; - -/* Curry function */ -curried : curry @add_func 3 4; -..assert curried = 7; - -/* Test partial application */ -compose_partial : compose @double_func @square_func; -compose_result : compose_partial 3; -..assert compose_result = 18; - -pipe_partial : pipe @double_func @square_func; -pipe_result : pipe_partial 2; -..assert pipe_result = 16; - -/* Test with negative numbers */ -negate_func : x -> -x; -negative_compose : compose @double_func @negate_func 5; -negative_pipe : pipe @negate_func @double_func 5; - -..assert negative_compose = -10; -..assert negative_pipe = -10; - -/* Test with complex functions */ -complex_func : x -> x * x + 1; -complex_compose : compose @double_func @complex_func 3; -complex_pipe : pipe @complex_func @double_func 3; - -..assert complex_compose = 20; -..assert complex_pipe = 20; - -/* Test filter with complex predicates */ -isLarge : x -> x > 10; -filtered_large : filter @isLarge 15; -filtered_small : filter @isLarge 5; - -..assert filtered_large = 15; -..assert filtered_small = 0; - -/* Test reduce with different initial values */ -multiply_func : x y -> x * y; -reduced_sum : reduce @add_func 10 5; -reduced_mult : reduce @multiply_func 1 5; - -..assert reduced_sum = 15; -..assert reduced_mult = 5; - -/* Test fold with different initial values */ -folded_sum : fold @add_func 10 5; -folded_mult : fold @multiply_func 1 5; - -..assert folded_sum = 15; -..assert folded_mult = 5; - -..out "Complete standard library test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/14_error_handling.txt b/js/scripting-lang/baba-yaga-c/tests/14_error_handling.txt deleted file mode 100644 index 09e414d..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/14_error_handling.txt +++ /dev/null @@ -1,65 +0,0 @@ -/* Unit Test: Error Handling and Edge Cases */ -/* Tests: Error detection and handling */ - -/* Test valid operations first to ensure basic functionality */ -valid_test : 5 + 3; -..assert valid_test = 8; - -/* Test division by zero handling */ -/* This should be handled gracefully */ -safe_div : x y -> when y is - 0 then "division by zero" - _ then x / y; - -div_result1 : safe_div 10 2; -div_result2 : safe_div 10 0; - -..assert div_result1 = 5; -..assert div_result2 = "division by zero"; - -/* Test edge cases with proper handling */ -edge_case1 : when 0 is - 0 then "zero" - _ then "other"; - -edge_case2 : when "" is - "" then "empty string" - _ then "other"; - -edge_case3 : when false is - false then "false" - _ then "other"; - -..assert edge_case1 = "zero"; -..assert edge_case2 = "empty string"; -..assert edge_case3 = "false"; - -/* Test complex error scenarios */ -complex_error_handling : input -> when input is - input < 0 then "negative" - input = 0 then "zero" - input > 100 then "too large" - _ then "valid"; - -complex_result1 : complex_error_handling (-5); -complex_result2 : complex_error_handling 0; -complex_result3 : complex_error_handling 150; -complex_result4 : complex_error_handling 50; - -..assert complex_result1 = "negative"; -..assert complex_result2 = "zero"; -..assert complex_result3 = "too large"; -..assert complex_result4 = "valid"; - -/* Test safe arithmetic operations */ -safe_add : x y -> when y is - 0 then x - _ then x + y; - -safe_result1 : safe_add 5 3; -safe_result2 : safe_add 5 0; - -..assert safe_result1 = 8; -..assert safe_result2 = 5; - -..out "Error handling test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/15_performance_stress.txt b/js/scripting-lang/baba-yaga-c/tests/15_performance_stress.txt deleted file mode 100644 index 4ea961b..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/15_performance_stress.txt +++ /dev/null @@ -1,131 +0,0 @@ -/* Unit Test: Performance and Stress Testing */ -/* Tests: Large computations, nested functions, complex expressions */ - -/* Test large arithmetic computations */ -sum1 : 0 + 1; -sum2 : sum1 + 2; -sum3 : sum2 + 3; -sum4 : sum3 + 4; -large_sum : sum4 + 5; - -..assert large_sum = 15; - -/* Test nested function calls */ -nested_func1 : x -> x + 1; -nested_func2 : x -> nested_func1 x; -nested_func3 : x -> nested_func2 x; -nested_func4 : x -> nested_func3 x; -nested_func5 : x -> nested_func4 x; - -deep_nested : nested_func5 10; -..assert deep_nested = 11; - -/* Test complex mathematical expressions */ -complex_math1 : (1 + 2) * (3 + 4) - (5 + 6); -complex_math2 : ((2 ^ 3) + (4 * 5)) / (6 - 2); -complex_math3 : -((1 + 2 + 3) * (4 + 5 + 6)); - -..assert complex_math1 = 10; -..assert complex_math2 = 7; -..assert complex_math3 = -90; - -/* Test large table operations */ -table1 : {}; -table2 : {1: "one", 2: "two", 3: "three", 4: "four", 5: "five"}; -large_table : {table2, 6: "six", 7: "seven", 8: "eight"}; - -table_size : 8; -..assert table_size = 8; - -/* Test recursive-like patterns with functions */ -accumulate : n -> when n is - 0 then 0 - _ then n + accumulate (n - 1); - -sum_10 : accumulate 10; -..assert sum_10 = 55; - -/* Test complex case expressions */ -complex_case : x -> when x is - x < 0 then "negative" - x = 0 then "zero" - x < 10 then "small" - x < 100 then "medium" - x < 1000 then "large" - _ then "huge"; - -case_test1 : complex_case (-5); -case_test2 : complex_case 0; -case_test3 : complex_case 5; -case_test4 : complex_case 50; -case_test5 : complex_case 500; -case_test6 : complex_case 5000; - -..assert case_test1 = "negative"; -..assert case_test2 = "zero"; -..assert case_test3 = "small"; -..assert case_test4 = "medium"; -..assert case_test5 = "large"; -..assert case_test6 = "huge"; - -/* Test standard library with complex operations */ -double : x -> x * 2; -square : x -> x * x; -myAdd : x y -> x + y; - -complex_std1 : compose @double @square 3; -complex_std2 : pipe @square @double 4; -complex_std3 : curry @myAdd 5 3; - -..assert complex_std1 = 18; -..assert complex_std2 = 32; -..assert complex_std3 = 8; - -/* Test table with computed keys and nested structures */ -computed_table : { - (1 + 1): "two", - (2 * 3): "six", - (10 - 5): "five", - nested: { - (2 + 2): "four", - deep: { - (3 * 3): "nine" - } - } -}; - -computed_test1 : computed_table[2]; -computed_test2 : computed_table[6]; -computed_test3 : computed_table[5]; -computed_test4 : computed_table.nested[4]; -computed_test5 : computed_table.nested.deep[9]; - -..assert computed_test1 = "two"; -..assert computed_test2 = "six"; -..assert computed_test3 = "five"; -..assert computed_test4 = "four"; -..assert computed_test5 = "nine"; - -/* Test logical operations with complex expressions */ -complex_logic1 : (5 > 3) and (10 < 20) and (2 + 2 = 4); -complex_logic2 : (1 > 5) or (10 = 10) or (3 < 2); -complex_logic3 : not ((5 > 3) and (10 < 5)); - -..assert complex_logic1 = true; -..assert complex_logic2 = true; -..assert complex_logic3 = true; - -/* Test function composition with multiple functions */ -f1 : x -> x + 1; -f2 : x -> x * 2; -f3 : x -> x - 1; -f4 : x -> x / 2; - -/* Test simple compositions that should cancel each other out */ -composed1 : compose @f1 @f3 10; /* f1(f3(10)) = f1(9) = 10 */ -composed2 : pipe @f3 @f1 10; /* f3(f1(10)) = f3(11) = 10 */ - -..assert composed1 = 10; -..assert composed2 = 10; - -..out "Performance and stress test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/16_function_composition.txt b/js/scripting-lang/baba-yaga-c/tests/16_function_composition.txt deleted file mode 100644 index 6b1b13f..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/16_function_composition.txt +++ /dev/null @@ -1,59 +0,0 @@ -/* Function Composition Test Suite */ - -/* Test basic function definitions */ -double : x -> x * 2; -add1 : x -> x + 1; -square : x -> x * x; - -/* Test 1: Basic composition with compose */ -result1 : compose @double @add1 5; -..out result1; - -/* Test 2: Multiple composition with compose */ -result2 : compose @double (compose @add1 @square) 3; -..out result2; - -/* Test 3: Function references */ -ref1 : @double; -..out ref1; - -/* Test 4: Function references in composition */ -result3 : compose @double @add1 5; -..out result3; - -/* Test 5: Pipe function (binary) */ -result4 : pipe @double @add1 5; -..out result4; - -/* Test 6: Compose function (binary) */ -result5 : compose @double @add1 2; -..out result5; - -/* Test 7: Multiple composition with pipe */ -result6 : pipe @square (pipe @add1 @double) 2; -..out result6; - -/* Test 8: Backward compatibility - arithmetic */ -x : 10; -result7 : x + 5; -..out result7; - -/* Test 9: Backward compatibility - function application */ -result8 : double x; -..out result8; - -/* Test 10: Backward compatibility - nested application */ -result9 : double (add1 x); -..out result9; - -/* Test 11: Backward compatibility - unary operators */ -result10 : -x; -..out result10; - -/* Test 12: Backward compatibility - logical operators */ -result11 : not true; -..out result11; - -/* Test 13: Complex composition chain */ -result12 : compose @square (compose @add1 (compose @double @add1)) 3; -..out result12; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements.txt b/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements.txt deleted file mode 100644 index d935153..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements.txt +++ /dev/null @@ -1,234 +0,0 @@ -/* Unit Test: Table Enhancements */ -/* Tests: Enhanced combinators, t namespace, each combinator, embedded functions */ - -/* ===== ENHANCED COMBINATORS ===== */ - -/* Enhanced map with tables */ -numbers : {1, 2, 3, 4, 5}; -double : x -> x * 2; - -/* Test map with single table */ -doubled : map @double numbers; -/* Note: Using dot notation for array-like tables */ -first : doubled[1]; -second : doubled[2]; -third : doubled[3]; -fourth : doubled[4]; -fifth : doubled[5]; -..assert first = 2; -..assert second = 4; -..assert third = 6; -..assert fourth = 8; -..assert fifth = 10; - -/* Test map with key-value table */ -person : {name: "Alice", age: 30, active: true}; -add_ten : x -> x + 10; - -mapped_person : map @add_ten person; -/* Note: This will add 10 to all values, including strings */ -name_result : mapped_person.name; -age_result : mapped_person.age; -active_result : mapped_person.active; -..assert name_result = "Alice10"; -..assert age_result = 40; -..assert active_result = 11; - -/* Enhanced filter with tables */ -is_even : x -> x % 2 = 0; -evens : filter @is_even numbers; -even_2 : evens[2]; -even_4 : evens[4]; -/* Note: Keys 1, 3, 5 don't exist in filtered result */ -..assert even_2 = 2; -..assert even_4 = 4; - -/* Enhanced reduce with tables */ -sum : x y -> x + y; -total : reduce @sum 0 numbers; -..assert total = 15; - -/* ===== T NAMESPACE OPERATIONS ===== */ - -/* t.map */ -t_doubled : t.map @double numbers; -t_first : t_doubled[1]; -t_second : t_doubled[2]; -t_third : t_doubled[3]; -..assert t_first = 2; -..assert t_second = 4; -..assert t_third = 6; - -/* t.filter */ -t_evens : t.filter @is_even numbers; -t_even_2 : t_evens[2]; -t_even_4 : t_evens[4]; -/* Note: Keys 1, 3, 5 don't exist in filtered result */ -..assert t_even_2 = 2; -..assert t_even_4 = 4; - -/* t.reduce */ -t_total : t.reduce @sum 0 numbers; -..assert t_total = 15; - -/* t.set - immutable update */ -updated_person : t.set person "age" 31; -..assert updated_person.age = 31; -..assert person.age = 30; /* Original unchanged */ - -/* t.delete - immutable deletion */ -person_without_age : t.delete person "age"; -..assert person_without_age.name = "Alice"; -..assert person_without_age.active = true; -/* Note: age key doesn't exist in person_without_age */ -..assert person.age = 30; /* Original unchanged */ - -/* t.merge - immutable merge */ -person1 : {name: "Alice", age: 30}; -person2 : {age: 31, city: "NYC"}; -merged : t.merge person1 person2; -..assert merged.name = "Alice"; -..assert merged.age = 31; -..assert merged.city = "NYC"; - -/* t.length */ -length : t.length person; -..assert length = 3; - -/* t.has */ -has_name : t.has person "name"; -has_email : t.has person "email"; -..assert has_name = true; -..assert has_email = false; - -/* t.get */ -name_value : t.get person "name" "unknown"; -email_value : t.get person "email" "unknown"; -..assert name_value = "Alice"; -..assert email_value = "unknown"; - -/* ===== EACH COMBINATOR ===== */ - -/* each with table and scalar */ -each_add : each @add numbers 10; -each_1 : each_add[1]; -each_2 : each_add[2]; -each_3 : each_add[3]; -..assert each_1 = 11; -..assert each_2 = 12; -..assert each_3 = 13; - -/* each with two tables */ -table1 : {a: 1, b: 2, c: 3}; -table2 : {a: 10, b: 20, c: 30}; -each_sum : each @add table1 table2; -..assert each_sum.a = 11; -..assert each_sum.b = 22; -..assert each_sum.c = 33; - -/* each with scalar and table */ -each_add_scalar : each @add 10 numbers; -scalar_1 : each_add_scalar[1]; -scalar_2 : each_add_scalar[2]; -scalar_3 : each_add_scalar[3]; -..assert scalar_1 = 11; -..assert scalar_2 = 12; -..assert scalar_3 = 13; - -/* each with partial application */ -add_to_ten : each @add 10; -partial_result : add_to_ten numbers; -partial_1 : partial_result[1]; -partial_2 : partial_result[2]; -partial_3 : partial_result[3]; -..assert partial_1 = 11; -..assert partial_2 = 12; -..assert partial_3 = 13; - -/* each with different operations */ -each_multiply : each @multiply numbers 2; -mult_1 : each_multiply[1]; -mult_2 : each_multiply[2]; -mult_3 : each_multiply[3]; -..assert mult_1 = 2; -..assert mult_2 = 4; -..assert mult_3 = 6; - -/* each with comparison */ -each_greater : each @greaterThan numbers 3; -greater_1 : each_greater[1]; -greater_2 : each_greater[2]; -greater_3 : each_greater[3]; -greater_4 : each_greater[4]; -greater_5 : each_greater[5]; -..assert greater_1 = false; -..assert greater_2 = false; -..assert greater_3 = false; -..assert greater_4 = true; -..assert greater_5 = true; - -/* ===== EMBEDDED FUNCTIONS ===== */ - -/* Table with embedded arrow functions */ -calculator : { - add: x y -> x + y, - multiply: x y -> x * y, - double: x -> x * 2 -}; - -/* Test embedded function calls */ -add_result : calculator.add 5 3; -multiply_result : calculator.multiply 4 6; -double_result : calculator.double 7; -..assert add_result = 8; -..assert multiply_result = 24; -..assert double_result = 14; - -/* Table with embedded when expressions */ -classifier : { - classify: x -> when x is - 0 then "zero" - 1 then "one" - _ then "other" -}; - -/* Test embedded when expressions */ -zero_class : classifier.classify 0; -one_class : classifier.classify 1; -other_class : classifier.classify 42; -..assert zero_class = "zero"; -..assert one_class = "one"; -..assert other_class = "other"; - -/* Table with mixed content */ -mixed_table : { - name: "Alice", - age: 30, - add: x y -> x + y, - is_adult: x -> x >= 18 -}; - -/* Test mixed table */ -mixed_name : mixed_table.name; -mixed_age : mixed_table.age; -mixed_sum : mixed_table.add 5 3; -mixed_adult_check : mixed_table.is_adult 25; -..assert mixed_name = "Alice"; -..assert mixed_age = 30; -..assert mixed_sum = 8; -..assert mixed_adult_check = true; - -/* ===== ERROR HANDLING ===== */ - -/* Test error handling for invalid inputs */ -empty_table : {}; - -/* These should not cause errors */ -empty_length : t.length empty_table; -..assert empty_length = 0; - -/* Test safe operations */ -safe_get : t.get empty_table "nonexistent" "default"; -..assert safe_get = "default"; - -..out "Table enhancements test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements_minimal.txt b/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements_minimal.txt deleted file mode 100644 index bdb1c96..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements_minimal.txt +++ /dev/null @@ -1,31 +0,0 @@ -/* Minimal Unit Test: Table Enhancements */ - -/* Enhanced map with tables */ -numbers : {1, 2, 3, 4, 5}; -double : x -> x * 2; - -/* Test map with single table */ -doubled : map @double numbers; -first : doubled[1]; -second : doubled[2]; -..assert first = 2; -..assert second = 4; - -/* Test t.map */ -t_doubled : t.map @double numbers; -t_first : t_doubled[1]; -..assert t_first = 2; - -/* Test each */ -each_add : each @add numbers 10; -each_1 : each_add[1]; -..assert each_1 = 11; - -/* Test embedded functions */ -calculator : { - add: x y -> x + y -}; -add_result : calculator.add 5 3; -..assert add_result = 8; - -..out "Minimal table enhancements test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements_step1.txt b/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements_step1.txt deleted file mode 100644 index 79dae16..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/17_table_enhancements_step1.txt +++ /dev/null @@ -1,41 +0,0 @@ -/* Step 1: Enhanced map with tables */ - -numbers : {1, 2, 3, 4, 5}; -double : x -> x * 2; - -/* Test map with single table */ -doubled : map @double numbers; -first : doubled[1]; -second : doubled[2]; -third : doubled[3]; -fourth : doubled[4]; -fifth : doubled[5]; -..assert first = 2; -..assert second = 4; -..assert third = 6; -..assert fourth = 8; -..assert fifth = 10; - -/* Test map with key-value table */ -person : {name: "Alice", age: 30, active: true}; -add_ten : x -> x + 10; - -mapped_person : map @add_ten person; -/* Note: This will add 10 to all values, including strings */ -name_result : mapped_person.name; -age_result : mapped_person.age; -active_result : mapped_person.active; -..assert name_result = "Alice10"; -..assert age_result = 40; -..assert active_result = 11; - -/* Enhanced filter with tables */ -is_even : x -> x % 2 = 0; -evens : filter @is_even numbers; -even_2 : evens[2]; -even_4 : evens[4]; -/* Note: Keys 1, 3, 5 don't exist in filtered result */ -..assert even_2 = 2; -..assert even_4 = 4; - -..out "Step 3 completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/18_each_combinator.txt b/js/scripting-lang/baba-yaga-c/tests/18_each_combinator.txt deleted file mode 100644 index 45c941a..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/18_each_combinator.txt +++ /dev/null @@ -1,22 +0,0 @@ -/* Simple each test */ - -numbers : {1, 2, 3, 4, 5}; - -/* each with table and scalar */ -each_add : each @add numbers 10; -each_1 : each_add[1]; -each_2 : each_add[2]; -each_3 : each_add[3]; -..assert each_1 = 11; -..assert each_2 = 12; -..assert each_3 = 13; - -/* each with two tables */ -table1 : {a: 1, b: 2, c: 3}; -table2 : {a: 10, b: 20, c: 30}; -each_sum : each @add table1 table2; -..assert each_sum.a = 11; -..assert each_sum.b = 22; -..assert each_sum.c = 33; - -..out "Simple each test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/18_each_combinator_basic.txt b/js/scripting-lang/baba-yaga-c/tests/18_each_combinator_basic.txt deleted file mode 100644 index d926013..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/18_each_combinator_basic.txt +++ /dev/null @@ -1,30 +0,0 @@ -/* Basic Unit Test: Each Combinator */ - -/* Test data */ -numbers : {1, 2, 3, 4, 5}; -table1 : {a: 1, b: 2, c: 3}; -table2 : {a: 10, b: 20, c: 30}; - -/* each with table and scalar */ -each_add : each @add numbers 10; -each_1 : each_add[1]; -each_2 : each_add[2]; -each_3 : each_add[3]; -..assert each_1 = 11; -..assert each_2 = 12; -..assert each_3 = 13; - -/* each with two tables */ -each_sum : each @add table1 table2; -..assert each_sum.a = 11; -..assert each_sum.b = 22; -..assert each_sum.c = 33; - -/* each with empty table */ -empty_table : {}; -empty_result : each @add empty_table 10; -/* Check that empty_result is an empty object by checking its length */ -empty_length : t.length empty_result; -..assert empty_length = 0; - -..out "Basic each combinator test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/18_each_combinator_minimal.txt b/js/scripting-lang/baba-yaga-c/tests/18_each_combinator_minimal.txt deleted file mode 100644 index 1cd6516..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/18_each_combinator_minimal.txt +++ /dev/null @@ -1,62 +0,0 @@ -/* Minimal Unit Test: Each Combinator */ - -/* Test data */ -numbers : {1, 2, 3, 4, 5}; -table1 : {a: 1, b: 2, c: 3}; -table2 : {a: 10, b: 20, c: 30}; - -/* each with table and scalar */ -each_add : each @add numbers 10; -each_1 : each_add[1]; -each_2 : each_add[2]; -each_3 : each_add[3]; -..assert each_1 = 11; -..assert each_2 = 12; -..assert each_3 = 13; - -/* each with two tables */ -each_sum : each @add table1 table2; -..assert each_sum.a = 11; -..assert each_sum.b = 22; -..assert each_sum.c = 33; - -/* each with scalar and table */ -each_add_scalar : each @add 10 numbers; -scalar_1 : each_add_scalar[1]; -scalar_2 : each_add_scalar[2]; -scalar_3 : each_add_scalar[3]; -..assert scalar_1 = 11; -..assert scalar_2 = 12; -..assert scalar_3 = 13; - -/* each with partial application */ -add_to_ten : each @add 10; -partial_result : add_to_ten numbers; -partial_1 : partial_result[1]; -partial_2 : partial_result[2]; -partial_3 : partial_result[3]; -..assert partial_1 = 11; -..assert partial_2 = 12; -..assert partial_3 = 13; - -/* each with different operations */ -each_multiply : each @multiply numbers 2; -mult_1 : each_multiply[1]; -mult_2 : each_multiply[2]; -mult_3 : each_multiply[3]; -..assert mult_1 = 2; -..assert mult_2 = 4; -..assert mult_3 = 6; - -/* each with empty table */ -empty_table : {}; -empty_result : each @add empty_table 10; -empty_length : t.length empty_result; -..assert empty_length = 0; - -/* each with single element table */ -single_table : {key: 5}; -single_result : each @add single_table 10; -..assert single_result.key = 15; - -..out "Minimal each combinator test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/19_embedded_functions.txt b/js/scripting-lang/baba-yaga-c/tests/19_embedded_functions.txt deleted file mode 100644 index a0e16aa..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/19_embedded_functions.txt +++ /dev/null @@ -1,101 +0,0 @@ -/* Simple Unit Test: Embedded Functions in Tables */ - -/* ===== EMBEDDED ARROW FUNCTIONS ===== */ - -/* Table with simple arrow functions */ -calculator : { - add: x y -> x + y, - multiply: x y -> x * y, - double: x -> x * 2, - square: x -> x * x -}; - -/* Test embedded arrow function calls */ -add_result : calculator.add 5 3; -multiply_result : calculator.multiply 4 6; -double_result : calculator.double 7; -square_result : calculator.square 5; -..assert add_result = 8; -..assert multiply_result = 24; -..assert double_result = 14; -..assert square_result = 25; - -/* Table with more complex arrow functions */ -math_ops : { - increment: x -> x + 1, - decrement: x -> x - 1, - negate: x -> -x, - double: x -> x * 2 -}; - -/* Test complex arrow functions */ -inc_result : math_ops.increment 10; -dec_result : math_ops.decrement 10; -neg_result : math_ops.negate 5; -math_double : math_ops.double 7; -..assert inc_result = 11; -..assert dec_result = 9; -..assert neg_result = -5; -..assert math_double = 14; - -/* ===== EMBEDDED WHEN EXPRESSIONS ===== */ - -/* Table with embedded when expressions */ -classifier : { - classify: x -> when x is - 0 then "zero" - 1 then "one" - 2 then "two" - _ then "other" -}; - -/* Test embedded when expressions */ -zero_class : classifier.classify 0; -one_class : classifier.classify 1; -two_class : classifier.classify 2; -other_class : classifier.classify 42; -..assert zero_class = "zero"; -..assert one_class = "one"; -..assert two_class = "two"; -..assert other_class = "other"; - -/* ===== MIXED CONTENT TABLES ===== */ - -/* Table with mixed data and functions */ -person : { - name: "Alice", - age: 30, - city: "NYC", - greet: name -> "Hello, " + name -}; - -/* Test mixed table access */ -name : person.name; -age : person.age; -greeting : person.greet "Bob"; -..assert name = "Alice"; -..assert age = 30; -..assert greeting = "Hello, Bob"; - -/* ===== EDGE CASES ===== */ - -/* Table with empty function */ -empty_func : { - noop: x -> x -}; - -/* Test empty function */ -noop_result : empty_func.noop 42; -..assert noop_result = 42; - -/* Table with function that returns table */ -table_returner : { - create_person: name age -> {name: name, age: age} -}; - -/* Test function that returns table */ -new_person : table_returner.create_person "Bob" 25; -..assert new_person.name = "Bob"; -..assert new_person.age = 25; - -..out "Simple embedded functions test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/19_embedded_functions_simple.txt b/js/scripting-lang/baba-yaga-c/tests/19_embedded_functions_simple.txt deleted file mode 100644 index a0e16aa..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/19_embedded_functions_simple.txt +++ /dev/null @@ -1,101 +0,0 @@ -/* Simple Unit Test: Embedded Functions in Tables */ - -/* ===== EMBEDDED ARROW FUNCTIONS ===== */ - -/* Table with simple arrow functions */ -calculator : { - add: x y -> x + y, - multiply: x y -> x * y, - double: x -> x * 2, - square: x -> x * x -}; - -/* Test embedded arrow function calls */ -add_result : calculator.add 5 3; -multiply_result : calculator.multiply 4 6; -double_result : calculator.double 7; -square_result : calculator.square 5; -..assert add_result = 8; -..assert multiply_result = 24; -..assert double_result = 14; -..assert square_result = 25; - -/* Table with more complex arrow functions */ -math_ops : { - increment: x -> x + 1, - decrement: x -> x - 1, - negate: x -> -x, - double: x -> x * 2 -}; - -/* Test complex arrow functions */ -inc_result : math_ops.increment 10; -dec_result : math_ops.decrement 10; -neg_result : math_ops.negate 5; -math_double : math_ops.double 7; -..assert inc_result = 11; -..assert dec_result = 9; -..assert neg_result = -5; -..assert math_double = 14; - -/* ===== EMBEDDED WHEN EXPRESSIONS ===== */ - -/* Table with embedded when expressions */ -classifier : { - classify: x -> when x is - 0 then "zero" - 1 then "one" - 2 then "two" - _ then "other" -}; - -/* Test embedded when expressions */ -zero_class : classifier.classify 0; -one_class : classifier.classify 1; -two_class : classifier.classify 2; -other_class : classifier.classify 42; -..assert zero_class = "zero"; -..assert one_class = "one"; -..assert two_class = "two"; -..assert other_class = "other"; - -/* ===== MIXED CONTENT TABLES ===== */ - -/* Table with mixed data and functions */ -person : { - name: "Alice", - age: 30, - city: "NYC", - greet: name -> "Hello, " + name -}; - -/* Test mixed table access */ -name : person.name; -age : person.age; -greeting : person.greet "Bob"; -..assert name = "Alice"; -..assert age = 30; -..assert greeting = "Hello, Bob"; - -/* ===== EDGE CASES ===== */ - -/* Table with empty function */ -empty_func : { - noop: x -> x -}; - -/* Test empty function */ -noop_result : empty_func.noop 42; -..assert noop_result = 42; - -/* Table with function that returns table */ -table_returner : { - create_person: name age -> {name: name, age: age} -}; - -/* Test function that returns table */ -new_person : table_returner.create_person "Bob" 25; -..assert new_person.name = "Bob"; -..assert new_person.age = 25; - -..out "Simple embedded functions test completed successfully"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/20_via_operator.txt b/js/scripting-lang/baba-yaga-c/tests/20_via_operator.txt deleted file mode 100644 index afdc4c3..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/20_via_operator.txt +++ /dev/null @@ -1,31 +0,0 @@ -/* Unit Test: Via Operator */ -/* Tests: Function composition using the 'via' keyword */ - -/* Basic functions for testing */ -double : x -> x * 2; -increment : x -> x + 1; -square : x -> x * x; - -/* Test 1: Basic via composition */ -result1 : double via increment 5; -..assert result1 = 12; /* (5+1)*2 = 12 */ - -/* Test 2: Chained via composition */ -result2 : double via increment via square 3; -..assert result2 = 20; /* (3^2+1)*2 = (9+1)*2 = 20 */ - -/* Test 3: Function references with via */ -result3 : @double via @increment 4; -..assert result3 = 10; /* (4+1)*2 = 10 */ - -/* Test 4: Right-associative behavior */ -step1 : increment via square 3; /* (3^2)+1 = 10 */ -step2 : double via increment 3; /* (3+1)*2 = 8 */ -..assert step1 = 10; -..assert step2 = 8; - -/* Test 5: Precedence - via binds tighter than function application */ -precedence_test : double via increment 5; -..assert precedence_test = 12; /* (5+1)*2 = 12 */ - -..out "Via operator test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/21_enhanced_case_statements.txt b/js/scripting-lang/baba-yaga-c/tests/21_enhanced_case_statements.txt deleted file mode 100644 index 79adb69..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/21_enhanced_case_statements.txt +++ /dev/null @@ -1,98 +0,0 @@ -/* 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 diff --git a/js/scripting-lang/baba-yaga-c/tests/21_enhanced_case_statements_fixed.txt b/js/scripting-lang/baba-yaga-c/tests/21_enhanced_case_statements_fixed.txt deleted file mode 100644 index 79adb69..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/21_enhanced_case_statements_fixed.txt +++ /dev/null @@ -1,98 +0,0 @@ -/* 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 diff --git a/js/scripting-lang/baba-yaga-c/tests/22_parser_limitations.txt b/js/scripting-lang/baba-yaga-c/tests/22_parser_limitations.txt deleted file mode 100644 index 6d267b8..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/22_parser_limitations.txt +++ /dev/null @@ -1,115 +0,0 @@ -/* Unit Test: Parser Limitations for Enhanced Case Statements */ -/* Tests: Multi-value patterns with expressions, table access, function calls */ - -/* ======================================== */ -/* MAIN BLOCKER: Multi-value patterns with expressions */ -/* ======================================== */ - -/* Test 1: Basic multi-value with expressions in parentheses */ -test_multi_expr : x y -> - when (x % 2) (y % 2) is - 0 0 then "both even" - 0 1 then "x even, y odd" - 1 0 then "x odd, y even" - 1 1 then "both odd"; - -/* Test 2: FizzBuzz-style multi-value patterns */ -fizzbuzz_test : n -> - when (n % 3) (n % 5) is - 0 0 then "FizzBuzz" - 0 _ then "Fizz" - _ 0 then "Buzz" - _ _ then n; - -/* Test 3: Complex expressions in multi-value patterns */ -complex_multi : x y -> - when ((x + 1) % 2) ((y - 1) % 2) is - 0 0 then "both transformed even" - 0 1 then "x transformed even, y transformed odd" - 1 0 then "x transformed odd, y transformed even" - 1 1 then "both transformed odd"; - -/* Test 4: Function calls in multi-value patterns */ -is_even : n -> n % 2 = 0; -is_positive : n -> n > 0; - -test_func_multi : x y -> - when (is_even x) (is_positive y) is - true true then "x even and y positive" - true false then "x even and y not positive" - false true then "x odd and y positive" - false false then "x odd and y not positive"; - -/* ======================================== */ -/* SECONDARY LIMITATIONS: Table access and function calls */ -/* ======================================== */ - -/* Test 5: Table access in when expressions */ -user : {role: "admin", level: 5}; -test_table_access : u -> - when u.role is - "admin" then "admin user" - "user" then "regular user" - _ then "unknown role"; - -/* Test 6: Function calls in when expressions */ -test_func_call : n -> - when (is_even n) is - true then "even number" - false then "odd number"; - -/* Test 7: Complex function calls in when expressions */ -complex_func : n -> (n % 3 = 0) and (n % 5 = 0); -test_complex_func : n -> - when (complex_func n) is - true then "divisible by both 3 and 5" - false then "not divisible by both"; - -/* ======================================== */ -/* CONTROL TESTS: Should work with current parser */ -/* ======================================== */ - -/* Test 8: Simple value matching (control) */ -test_simple : n -> - when n is - 0 then "zero" - 1 then "one" - _ then "other"; - -/* Test 9: Single complex expressions with parentheses (control) */ -test_single_expr : n -> - when (n % 3) is - 0 then "divisible by 3" - _ then "not divisible by 3"; - -/* Test 10: Multiple simple values (control) */ -test_multi_simple : x y -> - when x y is - 0 0 then "both zero" - 0 _ then "x zero" - _ 0 then "y zero" - _ _ then "neither zero"; - -/* ======================================== */ -/* TEST EXECUTION */ -/* ======================================== */ - -/* Execute tests that should work */ -result1 : test_simple 5; -result2 : test_single_expr 15; -result3 : test_multi_simple 0 5; - -/* These should fail with current parser */ -result4 : test_multi_expr 4 6; /* Should return "both even" */ -result5 : fizzbuzz_test 15; /* Should return "FizzBuzz" */ -result6 : test_table_access user; /* Should return "admin user" */ -result7 : test_func_call 4; /* Should return "even number" */ - -/* Output results */ -..out result1; -..out result2; -..out result3; -..out result4; -..out result5; -..out result6; -..out result7; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/23_minus_operator_spacing.txt b/js/scripting-lang/baba-yaga-c/tests/23_minus_operator_spacing.txt deleted file mode 100644 index 510b997..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/23_minus_operator_spacing.txt +++ /dev/null @@ -1,51 +0,0 @@ -/* Test file for minus operator spacing functionality */ -/* This tests the new spacing-based ambiguity resolution for minus operator */ - -..out "=== Minus Operator Spacing Tests ==="; - -/* Basic unary minus tests */ -test1 : -5; -test2 : -3.14; -test3 : -10; -test4 : -42; - -/* Basic binary minus tests */ -test5 : 5 - 3; -test6 : 10 - 5; -test7 : 15 - 7; -test8 : 10 - 2.5; - -/* Legacy syntax tests (should continue to work) */ -test9 : (-5); -test10 : (-3.14); -test11 : (-10); -test12 : 5-3; -test13 : 15-7; - -/* Complex negative expressions */ -test14 : -10 - -100; -test15 : -5 - -3; -test16 : -20 - -30; - -/* Assertions to validate behavior */ -..assert test1 = -5; /* Unary minus: -5 */ -..assert test2 = -3.14; /* Unary minus: -3.14 */ -..assert test3 = -10; /* Unary minus: -10 */ -..assert test4 = -42; /* Unary minus: -42 */ - -..assert test5 = 2; /* Binary minus: 5 - 3 = 2 */ -..assert test6 = 5; /* Binary minus: 10 - 5 = 5 */ -..assert test7 = 8; /* Binary minus: 15 - 7 = 8 */ -..assert test8 = 7.5; /* Binary minus: 10 - 2.5 = 7.5 */ - -..assert test9 = -5; /* Legacy: (-5) = -5 */ -..assert test10 = -3.14; /* Legacy: (-3.14) = -3.14 */ -..assert test11 = -10; /* Legacy: (-10) = -10 */ -..assert test12 = 2; /* Legacy: 5-3 = 2 */ -..assert test13 = 8; /* Legacy: 15-7 = 8 */ - -..assert test14 = 90; /* Complex: -10 - -100 = 90 */ -..assert test15 = -2; /* Complex: -5 - -3 = -2 */ -..assert test16 = 10; /* Complex: -20 - -30 = 10 */ - -..out "=== Basic Minus Operator Spacing Tests Passed ==="; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/integration_01_basic_features.txt b/js/scripting-lang/baba-yaga-c/tests/integration_01_basic_features.txt deleted file mode 100644 index de16702..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/integration_01_basic_features.txt +++ /dev/null @@ -1,37 +0,0 @@ -/* Integration Test: Basic Language Features */ -/* Combines: arithmetic, comparisons, functions, IO */ - -..out "=== Integration Test: Basic Features ==="; - -/* Define utility functions */ -add_func : x y -> x + y; -multiply_func : x y -> x * y; -isEven : x -> x % 2 = 0; -isPositive : x -> x > 0; - -/* Test arithmetic with functions */ -sum : add_func 10 5; -product : multiply_func 4 6; -doubled : multiply_func 2 sum; - -..assert sum = 15; -..assert product = 24; -..assert doubled = 30; - -/* Test comparisons with functions */ -even_test : isEven 8; -odd_test : isEven 7; -positive_test : isPositive 5; -negative_test : isPositive (-3); - -..assert even_test = true; -..assert odd_test = false; -..assert positive_test = true; -..assert negative_test = false; - -/* Test complex expressions */ -complex : add_func (multiply_func 3 4) (isEven 10 and isPositive 5); - -..assert complex = 13; - -..out "Basic features integration test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/integration_02_pattern_matching.txt b/js/scripting-lang/baba-yaga-c/tests/integration_02_pattern_matching.txt deleted file mode 100644 index a67bf59..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/integration_02_pattern_matching.txt +++ /dev/null @@ -1,64 +0,0 @@ -/* Integration Test: Pattern Matching */ -/* Combines: case expressions, functions, recursion, complex patterns */ - -..out "=== Integration Test: Pattern Matching ==="; - -/* Recursive factorial with case expressions */ -factorial : n -> - when n is - 0 then 1 - _ then n * (factorial (n - 1)); - -/* Pattern matching with multiple parameters */ -classify : x y -> - when x y is - 0 0 then "both zero" - 0 _ then "x is zero" - _ 0 then "y is zero" - _ _ then when x is - 0 then "x is zero (nested)" - _ then when y is - 0 then "y is zero (nested)" - _ then "neither zero"; - -/* Test factorial */ -fact5 : factorial 5; -fact3 : factorial 3; - -..assert fact5 = 120; -..assert fact3 = 6; - -/* Test classification */ -test1 : classify 0 0; -test2 : classify 0 5; -test3 : classify 5 0; -test4 : classify 5 5; - -..assert test1 = "both zero"; -..assert test2 = "x is zero"; -..assert test3 = "y is zero"; -..assert test4 = "neither zero"; - -/* Complex nested case expressions */ -analyze : x y z -> - when x y z is - 0 0 0 then "all zero" - 0 0 _ then "x and y zero" - 0 _ 0 then "x and z zero" - _ 0 0 then "y and z zero" - 0 _ _ then "only x zero" - _ 0 _ then "only y zero" - _ _ 0 then "only z zero" - _ _ _ then "none zero"; - -result1 : analyze 0 0 0; -result2 : analyze 0 1 1; -result3 : analyze 1 0 1; -result4 : analyze 1 1 1; - -..assert result1 = "all zero"; -..assert result2 = "only x zero"; -..assert result3 = "only y zero"; -..assert result4 = "none zero"; - -..out "Pattern matching integration test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/integration_03_functional_programming.txt b/js/scripting-lang/baba-yaga-c/tests/integration_03_functional_programming.txt deleted file mode 100644 index a0e3668..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/integration_03_functional_programming.txt +++ /dev/null @@ -1,68 +0,0 @@ -/* Integration Test: Functional Programming */ -/* Combines: first-class functions, higher-order functions, composition */ - -..out "=== Integration Test: Functional Programming ==="; - -/* Basic functions */ -double_func : x -> x * 2; -square_func : x -> x * x; -add1 : x -> x + 1; -identity_func : x -> x; -isEven : x -> x % 2 = 0; - -/* Function composition */ -composed1 : compose @double_func @square_func 3; -composed2 : compose @square_func @double_func 2; -composed3 : compose @add1 @double_func 5; - -..assert composed1 = 18; -..assert composed2 = 16; -..assert composed3 = 11; - -/* Function piping */ -piped1 : pipe @double_func @square_func 3; -piped2 : pipe @square_func @double_func 2; -piped3 : pipe @add1 @double_func 5; - -..assert piped1 = 36; -..assert piped2 = 8; -..assert piped3 = 12; - -/* Function application */ -applied1 : apply @double_func 7; -applied2 : apply @square_func 4; -applied3 : apply @add1 10; - -..assert applied1 = 14; -..assert applied2 = 16; -..assert applied3 = 11; - -/* Function selection with case expressions */ -getOperation : type -> - when type is - "double" then @double_func - "square" then @square_func - "add1" then @add1 - _ then @identity_func; - -/* Test function selection */ -op1 : getOperation "double"; -op2 : getOperation "square"; -op3 : getOperation "add1"; -op4 : getOperation "unknown"; - -result1 : op1 5; -result2 : op2 4; -result3 : op3 7; -result4 : op4 3; - -..assert result1 = 10; -..assert result2 = 16; -..assert result3 = 8; -..assert result4 = 3; - -/* Complex functional composition */ -complex : compose @double_func (compose @square_func @add1) 3; -..assert complex = 32; - -..out "Functional programming integration test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/integration_04_mini_case_multi_param.txt b/js/scripting-lang/baba-yaga-c/tests/integration_04_mini_case_multi_param.txt deleted file mode 100644 index 1814ae5..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/integration_04_mini_case_multi_param.txt +++ /dev/null @@ -1,21 +0,0 @@ -/* Integration Test: Multi-parameter case expression at top level */ - -/* Test multi-parameter case expressions */ -compare : x y -> - when x y is - 0 0 then "both zero" - 0 _ then "x is zero" - _ 0 then "y is zero" - _ _ then "neither zero"; - -test1 : compare 0 0; -test2 : compare 0 5; -test3 : compare 5 0; -test4 : compare 5 5; - -..assert test1 = "both zero"; -..assert test2 = "x is zero"; -..assert test3 = "y is zero"; -..assert test4 = "neither zero"; - -..out "Multi-parameter case expression test completed"; \ No newline at end of file diff --git a/js/scripting-lang/baba-yaga-c/tests/repl_demo.txt b/js/scripting-lang/baba-yaga-c/tests/repl_demo.txt deleted file mode 100644 index c96f911..0000000 --- a/js/scripting-lang/baba-yaga-c/tests/repl_demo.txt +++ /dev/null @@ -1,180 +0,0 @@ -/* REPL Demo - Comprehensive Language Feature Showcase */ - -/* ===== BASIC OPERATIONS ===== */ -/* Arithmetic and function application */ -x : 5; -y : 10; -sum : x + y; -product : x * y; -difference : y - x; -quotient : y / x; - -/* Function application and partial application */ -double : multiply 2; -triple : multiply 3; -add5 : add 5; -result1 : double 10; -result2 : add5 15; - -/* ===== TABLE OPERATIONS ===== */ -/* Array-like tables */ -numbers : {1, 2, 3, 4, 5}; -fruits : {"apple", "banana", "cherry", "date"}; - -/* Key-value tables */ -person : {name: "Alice", age: 30, active: true, skills: {"JavaScript", "Python", "Rust"}}; -config : {debug: true, port: 3000, host: "localhost"}; - -/* Mixed tables */ -mixed : {1, name: "Bob", 2, active: false, 3, "value"}; - -/* Table access */ -first_number : numbers[1]; -person_name : person.name; -mixed_name : mixed.name; - -/* ===== FUNCTIONAL PROGRAMMING ===== */ -/* Higher-order functions */ -doubled_numbers : map @double numbers; -filtered_numbers : filter @(lessThan 3) numbers; -sum_of_numbers : reduce @add 0 numbers; - -/* Function composition */ -compose_example : double via add5 via negate; -result3 : compose_example 10; - -/* Pipeline operations */ -pipeline : numbers via map @double via filter @(greaterThan 5) via reduce @add 0; - -/* ===== PATTERN MATCHING ===== */ -/* When expressions */ -grade : 85; -letter_grade : when grade { - >= 90: "A"; - >= 80: "B"; - >= 70: "C"; - >= 60: "D"; - default: "F"; -}; - -/* Complex pattern matching */ -status : "active"; -access_level : when status { - "admin": "full"; - "moderator": "limited"; - "user": "basic"; - default: "none"; -}; - -/* ===== ADVANCED COMBINATORS ===== */ -/* Combinator examples */ -numbers2 : {2, 4, 6, 8, 10}; -evens : filter @(equals 0 via modulo 2) numbers2; -squares : map @(power 2) numbers2; -sum_squares : reduce @add 0 squares; - -/* Function composition with combinators */ -complex_pipeline : numbers via - map @(multiply 2) via - filter @(greaterThan 5) via - map @(power 2) via - reduce @add 0; - -/* ===== TABLE ENHANCEMENTS ===== */ -/* Table transformations */ -users : { - user1: {name: "Alice", age: 25, role: "admin"}, - user2: {name: "Bob", age: 30, role: "user"}, - user3: {name: "Charlie", age: 35, role: "moderator"} -}; - -/* Extract specific fields */ -names : map @(constant "name") users; -ages : map @(constant "age") users; - -/* Filter by conditions */ -admins : filter @(equals "admin" via constant "role") users; -young_users : filter @(lessThan 30 via constant "age") users; - -/* ===== REAL-WORLD EXAMPLES ===== */ -/* Data processing pipeline */ -data : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; -processed : data via - filter @(greaterThan 5) via - map @(multiply 3) via - filter @(lessThan 25); - -/* Configuration management */ -default_config : {port: 3000, host: "localhost", debug: false}; -user_config : {port: 8080, debug: true}; -merged_config : merge default_config user_config; - -/* ===== ERROR HANDLING EXAMPLES ===== */ -/* Safe operations */ -safe_divide : (x, y) => when y { - 0: "Error: Division by zero"; - default: x / y; -}; - -safe_result1 : safe_divide 10 2; -safe_result2 : safe_divide 10 0; - -/* ===== PERFORMANCE EXAMPLES ===== */ -/* Large dataset processing */ -large_numbers : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; -processed_large : large_numbers via - map @(power 2) via - filter @(greaterThan 50) via - reduce @add 0; - -/* ===== DEBUGGING EXAMPLES ===== */ -/* State inspection helpers */ -debug_state : { - numbers: numbers, - person: person, - processed: processed, - config: merged_config -}; - -/* ===== EXPORT EXAMPLES ===== */ -/* Exportable configurations */ -export_config : { - version: "1.0.0", - features: {"tables", "functions", "pattern-matching"}, - examples: { - basic: "Basic arithmetic and function application", - advanced: "Complex functional pipelines", - real_world: "Data processing examples" - } -}; - -/* ===== COMPREHENSIVE SHOWCASE ===== */ -/* This demonstrates all major language features in one pipeline */ -comprehensive_example : { - input: numbers, - doubled: map @double numbers, - filtered: filter @(greaterThan 3) numbers, - composed: double via add5 via negate, - pattern_matched: when (length numbers) { - > 5: "Large dataset"; - > 3: "Medium dataset"; - default: "Small dataset"; - }, - final_result: numbers via - map @(multiply 2) via - filter @(greaterThan 5) via - reduce @add 0 -}; - -/* Output results for verification */ -..out "REPL Demo completed successfully!"; -..out "All language features demonstrated:"; -..out " ✓ Basic operations and arithmetic"; -..out " ✓ Table literals and access"; -..out " ✓ Function application and composition"; -..out " ✓ Pattern matching with when expressions"; -..out " ✓ Higher-order functions and combinators"; -..out " ✓ Table transformations and pipelines"; -..out " ✓ Real-world data processing examples"; -..out " ✓ Error handling and safe operations"; -..out " ✓ Performance and debugging features"; \ No newline at end of file |