about summary refs log tree commit diff stats
path: root/js/scripting-lang/tests/integration
diff options
context:
space:
mode:
Diffstat (limited to 'js/scripting-lang/tests/integration')
-rw-r--r--js/scripting-lang/tests/integration/integration_01_basic_features.txt37
-rw-r--r--js/scripting-lang/tests/integration/integration_02_pattern_matching.txt64
-rw-r--r--js/scripting-lang/tests/integration/integration_03_functional_programming.txt68
-rw-r--r--js/scripting-lang/tests/integration/integration_04_mini_case_multi_param.txt21
4 files changed, 190 insertions, 0 deletions
diff --git a/js/scripting-lang/tests/integration/integration_01_basic_features.txt b/js/scripting-lang/tests/integration/integration_01_basic_features.txt
new file mode 100644
index 0000000..de16702
--- /dev/null
+++ b/js/scripting-lang/tests/integration/integration_01_basic_features.txt
@@ -0,0 +1,37 @@
+/* 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/tests/integration/integration_02_pattern_matching.txt b/js/scripting-lang/tests/integration/integration_02_pattern_matching.txt
new file mode 100644
index 0000000..a67bf59
--- /dev/null
+++ b/js/scripting-lang/tests/integration/integration_02_pattern_matching.txt
@@ -0,0 +1,64 @@
+/* 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/tests/integration/integration_03_functional_programming.txt b/js/scripting-lang/tests/integration/integration_03_functional_programming.txt
new file mode 100644
index 0000000..a0e3668
--- /dev/null
+++ b/js/scripting-lang/tests/integration/integration_03_functional_programming.txt
@@ -0,0 +1,68 @@
+/* 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/tests/integration/integration_04_mini_case_multi_param.txt b/js/scripting-lang/tests/integration/integration_04_mini_case_multi_param.txt
new file mode 100644
index 0000000..1814ae5
--- /dev/null
+++ b/js/scripting-lang/tests/integration/integration_04_mini_case_multi_param.txt
@@ -0,0 +1,21 @@
+/* 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