about summary refs log tree commit diff stats
path: root/js/scripting-lang/scratch_tests/test_table_enhancements.txt
diff options
context:
space:
mode:
Diffstat (limited to 'js/scripting-lang/scratch_tests/test_table_enhancements.txt')
-rw-r--r--js/scripting-lang/scratch_tests/test_table_enhancements.txt747
1 files changed, 747 insertions, 0 deletions
diff --git a/js/scripting-lang/scratch_tests/test_table_enhancements.txt b/js/scripting-lang/scratch_tests/test_table_enhancements.txt
new file mode 100644
index 0000000..004b32e
--- /dev/null
+++ b/js/scripting-lang/scratch_tests/test_table_enhancements.txt
@@ -0,0 +1,747 @@
+/* Test file for table enhancements
+   Comprehensive test suite for APL-inspired broadcasting and immutable operations
+   Based on design/TABLE_ENHANCEMENTS.md
+   
+   NOTE: This file contains tests for features that have NOT been implemented yet.
+   These tests will fail until the features are implemented. */
+
+/* ===== BASIC TABLE CREATION ===== */
+numbers : {1, 2, 3, 4, 5};
+person : {name: "Alice", age: 30, active: true};
+mixed_table : {a: 1, b: "hello", c: true, d: 42.5};
+
+/* ===== ENHANCED BROADCASTING COMBINATORS ===== */
+/* Test enhanced map with APL-inspired broadcasting */
+double : x -> x * 2;
+doubled : map @double numbers;
+/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
+
+square : x -> x * x;
+squared : map @square numbers;
+/* Expected: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} */
+
+/* Test map with mixed data types */
+isNumber : x -> typeof x == "number";
+type_check : map @isNumber mixed_table;
+/* Expected: {a: true, b: false, c: false, d: true} */
+
+/* ===== TABLE-SPECIFIC COMBINATORS (t. namespace) ===== */
+/* Test t.map for table-specific operations */
+t_doubled : t.map @double numbers;
+/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
+
+/* Test t.filter for table filtering */
+isEven : x -> x % 2 == 0;
+even_numbers : t.filter @isEven numbers;
+/* Expected: {2: 2, 4: 4} */
+
+isPositive : x -> x > 0;
+positive_numbers : t.filter @isPositive numbers;
+/* Expected: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5} */
+
+/* Test t.reduce for table reduction */
+sum : x y -> x + y;
+total : t.reduce @sum 0 numbers;
+/* Expected: 15 */
+
+max : x y -> x > y ? x : y;
+maximum : t.reduce @max numbers.1 numbers;
+/* Expected: 5 */
+
+/* ===== IMMUTABLE TABLE OPERATIONS (t. namespace) ===== */
+/* Test t.set for immutable updates */
+updated_person : t.set person "age" 31;
+/* Expected: {name: "Alice", age: 31, active: true} */
+
+added_city : t.set person "city" "New York";
+/* Expected: {name: "Alice", age: 30, active: true, city: "New York"} */
+
+/* Test t.delete for immutable deletion */
+without_age : t.delete person "age";
+/* Expected: {name: "Alice", active: true} */
+
+without_nonexistent : t.delete person "email";
+/* Expected: {name: "Alice", age: 30, active: true} (unchanged) */
+
+/* Test t.merge for immutable merging */
+person2 : {city: "New York", country: "USA"};
+merged : t.merge person person2;
+/* Expected: {name: "Alice", age: 30, active: true, city: "New York", country: "USA"} */
+
+overwrite_merge : t.merge person {age: 25, city: "Boston"};
+/* Expected: {name: "Alice", age: 25, active: true, city: "Boston"} */
+
+/* ===== TABLE INFORMATION OPERATIONS (t. namespace) ===== */
+/* Test t.pairs for getting key-value pairs */
+all_pairs : t.pairs person;
+/* Expected: [["name", "Alice"], ["age", 30], ["active", true]] */
+
+/* Test t.keys for getting keys */
+all_keys : t.keys person;
+/* Expected: ["name", "age", "active"] */
+
+/* Test t.values for getting values */
+all_values : t.values person;
+/* Expected: ["Alice", 30, true] */
+
+/* Test t.length for getting table size */
+table_size : t.length person;
+/* Expected: 3 */
+
+/* Test t.has for checking key existence */
+has_name : t.has person "name";
+/* Expected: true */
+
+has_email : t.has person "email";
+/* Expected: false */
+
+/* Test t.get for safe property access */
+age_or_default : t.get person "age" 0;
+/* Expected: 30 */
+
+email_or_default : t.get person "email" "unknown";
+/* Expected: "unknown" */
+
+/* ===== APL-INSPIRED ELEMENT-WISE OPERATIONS ===== */
+/* Test each combinator for multi-argument element-wise operations */
+/* No tables - apply normally */
+normal_add : each @add 5 3;
+/* Expected: 8 */
+
+/* Single table - element-wise */
+add_ten : x -> x + 10;
+each_result : each @add_ten numbers;
+/* Expected: {1: 11, 2: 12, 3: 13, 4: 14, 5: 15} */
+
+/* Mixed table and scalar */
+mixed_operation : each @add numbers 10;
+/* Expected: {1: 11, 2: 12, 3: 13, 4: 14, 5: 15} */
+
+/* Multiple tables */
+table1 : {a: 1, b: 2, c: 3};
+table2 : {a: 10, b: 20, c: 30};
+multi_table_sum : each @add table1 table2;
+/* Expected: {a: 11, b: 22, c: 33} */
+
+/* Three tables */
+table3 : {a: 100, b: 200, c: 300};
+triple_sum : each @add table1 table2 table3;
+/* Expected: {a: 111, b: 222, c: 333} */
+
+/* Mixed types (table + scalar) */
+mixed_types : each @add table1 5;
+/* Expected: {a: 6, b: 7, c: 8} */
+
+mixed_types2 : each @add 5 table1;
+/* Expected: {a: 6, b: 7, c: 8} */
+
+/* ===== NESTED TABLE HANDLING ===== */
+/* Test nested table operations */
+nested : {
+    data: {a: 1, b: 2, c: 3},
+    meta: {type: "numbers", count: 3},
+    flags: {active: true, visible: false}
+};
+
+/* Top-level only (nested tables unchanged) */
+top_level_only : each @double nested;
+/* Expected: {data: {a: 1, b: 2, c: 3}, meta: {type: "numbers", count: 3}, flags: {active: true, visible: false}} */
+
+/* Nested operations with explicit composition */
+nested_doubled : each (each @double) nested;
+/* Expected: {data: {a: 2, b: 4, c: 6}, meta: {type: "numbers", count: 3}, flags: {active: true, visible: false}} */
+
+/* Nested operations with t.map */
+nested_with_t_map : t.map (t.map @double) nested;
+/* Expected: {data: {a: 2, b: 4, c: 6}, meta: {type: "numbers", count: 3}, flags: {active: true, visible: false}} */
+
+/* Deep nested structure */
+deep_nested : {
+    level1: {
+        level2: {
+            level3: {x: 1, y: 2, z: 3}
+        }
+    }
+};
+
+/* Deep nested operations */
+deep_doubled : each (each (each @double)) deep_nested;
+/* Expected: {level1: {level2: {level3: {x: 2, y: 4, z: 6}}}} */
+
+deep_with_t_map : t.map (t.map (t.map @double)) deep_nested;
+/* Expected: {level1: {level2: {level3: {x: 2, y: 4, z: 6}}}} */
+
+/* ===== EMBEDDED COMPLEX STRUCTURES ===== */
+/* Test functions and when expressions in tables */
+calculator : {
+    add: x y -> x + y,
+    multiply: x y -> x * y,
+    classify: x -> when x is
+        0 then "zero"
+        1 then "one"
+        _ then "other"
+};
+
+/* Usage of embedded functions */
+calc_result : calculator.add 5 3;
+/* Expected: 8 */
+
+calc_multiply : calculator.multiply 4 7;
+/* Expected: 28 */
+
+calc_classify_zero : calculator.classify 0;
+/* Expected: "zero" */
+
+calc_classify_one : calculator.classify 1;
+/* Expected: "one" */
+
+calc_classify_other : calculator.classify 42;
+/* Expected: "other" */
+
+/* ===== EDGE CASES AND ERROR HANDLING ===== */
+/* Test empty table operations */
+empty_table : {};
+
+empty_pairs : t.pairs empty_table;
+/* Expected: [] */
+
+empty_keys : t.keys empty_table;
+/* Expected: [] */
+
+empty_values : t.values empty_table;
+/* Expected: [] */
+
+empty_length : t.length empty_table;
+/* Expected: 0 */
+
+/* Test safe operations (should not error) */
+safe_get : t.get person "nonexistent" "default";
+/* Expected: "default" */
+
+safe_pairs : t.pairs empty_table;
+/* Expected: [] */
+
+/* Test boolean keys (existing feature) */
+boolean_table : {true: "enabled", false: "disabled"};
+boolean_keys : t.keys boolean_table;
+/* Expected: [true, false] */
+
+boolean_values : t.values boolean_table;
+/* Expected: ["enabled", "disabled"] */
+
+/* Test numeric keys */
+numeric_table : {1: "one", 2: "two", 3: "three"};
+numeric_keys : t.keys numeric_table;
+/* Expected: [1, 2, 3] */
+
+/* ===== FUNCTION COMPOSITION WITH TABLES ===== */
+/* Test table operations with function composition */
+transform : compose @t.map @double @t.filter @isPositive;
+transformed : transform numbers;
+/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
+
+pipe_transform : pipe @t.filter @isPositive @t.map @double;
+pipe_result : pipe_transform numbers;
+/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10} */
+
+/* Test each with function composition */
+triple : x -> x * 3;
+each_with_functions : each @double table1;
+/* Expected: {a: 2, b: 4, c: 6} */
+
+each_with_composition : each (compose @double @triple) table1;
+/* Expected: {a: 6, b: 12, c: 18} */
+
+/* ===== COMPLEX DATA STRUCTURES ===== */
+/* Test with complex nested data */
+data : {
+    users: {1: {name: "Alice", age: 30}, 2: {name: "Bob", age: 25}},
+    scores: {1: 85, 2: 92},
+    active: {1: true, 2: false}
+};
+
+/* Element-wise operations over nested structure */
+get_name : user -> user.name;
+user_names : t.map @get_name data.users;
+/* Expected: {1: "Alice", 2: "Bob"} */
+
+/* Test table operations on complex data */
+user_count : t.length data.users;
+/* Expected: 2 */
+
+active_users : t.filter @identity data.active;
+/* Expected: {1: true} */
+
+/* ===== BACKWARD COMPATIBILITY TESTS ===== */
+/* Test that existing table operations still work */
+existing_table : {x: 1, y: 2, z: 3};
+existing_access : existing_table.x;
+/* Expected: 1 */
+
+existing_chained : {outer: {inner: {value: 42}}};
+chained_access : existing_chained.outer.inner.value;
+/* Expected: 42 */
+
+/* Test that existing map works with non-table values */
+existing_map_result : map @double 5;
+/* Expected: 10 */
+
+/* Test that existing reduce works with non-table values */
+existing_reduce_result : reduce @add 0 5;
+/* Expected: 5 */
+
+/* ===== PERFORMANCE AND STRESS TESTS ===== */
+/* Test with larger tables (for performance validation) */
+large_table : {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10};
+large_doubled : t.map @double large_table;
+/* Expected: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18, 10: 20} */
+
+large_filtered : t.filter @isEven large_table;
+/* Expected: {2: 2, 4: 4, 6: 6, 8: 8, 10: 10} */
+
+large_reduced : t.reduce @sum 0 large_table;
+/* Expected: 55 */
+
+/* Test nested operations on large structures */
+large_nested : {
+    data1: large_table,
+    data2: large_table,
+    data3: large_table
+};
+
+large_nested_doubled : t.map (t.map @double) large_nested;
+/* Expected: {data1: {1: 2, 2: 4, ...}, data2: {1: 2, 2: 4, ...}, data3: {1: 2, 2: 4, ...}} */
+
+/* ===== ASSERTION VALIDATION TESTS ===== */
+/* Validate enhanced broadcasting results */
+..assert doubled.1 == 2;
+..assert doubled.2 == 4;
+..assert doubled.3 == 6;
+..assert doubled.4 == 8;
+..assert doubled.5 == 10;
+
+..assert squared.1 == 1;
+..assert squared.2 == 4;
+..assert squared.3 == 9;
+..assert squared.4 == 16;
+..assert squared.5 == 25;
+
+..assert type_check.a == true;
+..assert type_check.b == false;
+..assert type_check.c == false;
+..assert type_check.d == true;
+
+/* Validate table-specific operations */
+..assert t_doubled.1 == 2;
+..assert t_doubled.2 == 4;
+..assert t_doubled.3 == 6;
+..assert t_doubled.4 == 8;
+..assert t_doubled.5 == 10;
+
+..assert even_numbers.2 == 2;
+..assert even_numbers.4 == 4;
+..assert t.has even_numbers 1 == false;
+..assert t.has even_numbers 3 == false;
+
+..assert positive_numbers.1 == 1;
+..assert positive_numbers.2 == 2;
+..assert positive_numbers.3 == 3;
+..assert positive_numbers.4 == 4;
+..assert positive_numbers.5 == 5;
+
+..assert total == 15;
+..assert maximum == 5;
+
+/* Validate immutable operations */
+..assert updated_person.age == 31;
+..assert updated_person.name == "Alice";
+..assert updated_person.active == true;
+
+..assert added_city.city == "New York";
+..assert added_city.name == "Alice";
+..assert added_city.age == 30;
+
+..assert t.has without_age "age" == false;
+..assert without_age.name == "Alice";
+..assert without_age.active == true;
+
+..assert without_nonexistent.name == "Alice";
+..assert without_nonexistent.age == 30;
+..assert without_nonexistent.active == true;
+
+..assert merged.name == "Alice";
+..assert merged.age == 30;
+..assert merged.active == true;
+..assert merged.city == "New York";
+..assert merged.country == "USA";
+
+..assert overwrite_merge.name == "Alice";
+..assert overwrite_merge.age == 25;
+..assert overwrite_merge.active == true;
+..assert overwrite_merge.city == "Boston";
+
+/* Validate table information operations */
+..assert t.length all_pairs == 3;
+..assert all_pairs[0][0] == "name";
+..assert all_pairs[0][1] == "Alice";
+..assert all_pairs[1][0] == "age";
+..assert all_pairs[1][1] == 30;
+..assert all_pairs[2][0] == "active";
+..assert all_pairs[2][1] == true;
+
+..assert t.length all_keys == 3;
+..assert all_keys[0] == "name";
+..assert all_keys[1] == "age";
+..assert all_keys[2] == "active";
+
+..assert t.length all_values == 3;
+..assert all_values[0] == "Alice";
+..assert all_values[1] == 30;
+..assert all_values[2] == true;
+
+..assert table_size == 3;
+
+..assert has_name == true;
+..assert has_email == false;
+
+..assert age_or_default == 30;
+..assert email_or_default == "unknown";
+
+/* Validate element-wise operations */
+..assert normal_add == 8;
+
+..assert each_result.1 == 11;
+..assert each_result.2 == 12;
+..assert each_result.3 == 13;
+..assert each_result.4 == 14;
+..assert each_result.5 == 15;
+
+..assert mixed_operation.1 == 11;
+..assert mixed_operation.2 == 12;
+..assert mixed_operation.3 == 13;
+..assert mixed_operation.4 == 14;
+..assert mixed_operation.5 == 15;
+
+..assert multi_table_sum.a == 11;
+..assert multi_table_sum.b == 22;
+..assert multi_table_sum.c == 33;
+
+..assert triple_sum.a == 111;
+..assert triple_sum.b == 222;
+..assert triple_sum.c == 333;
+
+..assert mixed_types.a == 6;
+..assert mixed_types.b == 7;
+..assert mixed_types.c == 8;
+
+..assert mixed_types2.a == 6;
+..assert mixed_types2.b == 7;
+..assert mixed_types2.c == 8;
+
+/* Validate nested table operations */
+..assert top_level_only.data.a == 1;
+..assert top_level_only.data.b == 2;
+..assert top_level_only.data.c == 3;
+..assert top_level_only.meta.type == "numbers";
+..assert top_level_only.meta.count == 3;
+..assert top_level_only.flags.active == true;
+..assert top_level_only.flags.visible == false;
+
+..assert nested_doubled.data.a == 2;
+..assert nested_doubled.data.b == 4;
+..assert nested_doubled.data.c == 6;
+..assert nested_doubled.meta.type == "numbers";
+..assert nested_doubled.meta.count == 3;
+..assert nested_doubled.flags.active == true;
+..assert nested_doubled.flags.visible == false;
+
+..assert nested_with_t_map.data.a == 2;
+..assert nested_with_t_map.data.b == 4;
+..assert nested_with_t_map.data.c == 6;
+..assert nested_with_t_map.meta.type == "numbers";
+..assert nested_with_t_map.meta.count == 3;
+..assert nested_with_t_map.flags.active == true;
+..assert nested_with_t_map.flags.visible == false;
+
+..assert deep_doubled.level1.level2.level3.x == 2;
+..assert deep_doubled.level1.level2.level3.y == 4;
+..assert deep_doubled.level1.level2.level3.z == 6;
+
+..assert deep_with_t_map.level1.level2.level3.x == 2;
+..assert deep_with_t_map.level1.level2.level3.y == 4;
+..assert deep_with_t_map.level1.level2.level3.z == 6;
+
+/* Validate embedded functions */
+..assert calc_result == 8;
+..assert calc_multiply == 28;
+..assert calc_classify_zero == "zero";
+..assert calc_classify_one == "one";
+..assert calc_classify_other == "other";
+
+/* Validate edge cases */
+..assert t.length empty_pairs == 0;
+..assert t.length empty_keys == 0;
+..assert t.length empty_values == 0;
+..assert empty_length == 0;
+
+..assert safe_get == "default";
+..assert t.length safe_pairs == 0;
+
+..assert t.length boolean_keys == 2;
+..assert boolean_keys[0] == true;
+..assert boolean_keys[1] == false;
+
+..assert t.length boolean_values == 2;
+..assert boolean_values[0] == "enabled";
+..assert boolean_values[1] == "disabled";
+
+..assert t.length numeric_keys == 3;
+..assert numeric_keys[0] == 1;
+..assert numeric_keys[1] == 2;
+..assert numeric_keys[2] == 3;
+
+/* Validate function composition */
+..assert transformed.1 == 2;
+..assert transformed.2 == 4;
+..assert transformed.3 == 6;
+..assert transformed.4 == 8;
+..assert transformed.5 == 10;
+
+..assert pipe_result.1 == 2;
+..assert pipe_result.2 == 4;
+..assert pipe_result.3 == 6;
+..assert pipe_result.4 == 8;
+..assert pipe_result.5 == 10;
+
+..assert each_with_functions.a == 2;
+..assert each_with_functions.b == 4;
+..assert each_with_functions.c == 6;
+
+..assert each_with_composition.a == 6;
+..assert each_with_composition.b == 12;
+..assert each_with_composition.c == 18;
+
+/* Validate complex data structures */
+..assert user_names.1 == "Alice";
+..assert user_names.2 == "Bob";
+
+..assert user_count == 2;
+
+..assert active_users.1 == true;
+..assert t.has active_users 2 == false;
+
+/* Validate backward compatibility */
+..assert existing_access == 1;
+..assert chained_access == 42;
+..assert existing_map_result == 10;
+..assert existing_reduce_result == 5;
+
+/* Validate performance tests */
+..assert large_doubled.1 == 2;
+..assert large_doubled.10 == 20;
+..assert t.length large_doubled == 10;
+
+..assert large_filtered.2 == 2;
+..assert large_filtered.4 == 4;
+..assert large_filtered.6 == 6;
+..assert large_filtered.8 == 8;
+..assert large_filtered.10 == 10;
+..assert t.length large_filtered == 5;
+
+..assert large_reduced == 55;
+
+..assert large_nested_doubled.data1.1 == 2;
+..assert large_nested_doubled.data1.10 == 20;
+..assert large_nested_doubled.data2.1 == 2;
+..assert large_nested_doubled.data3.1 == 2;
+
+/* ===== OUTPUT ALL RESULTS ===== */
+..out "=== BASIC TABLE CREATION ===";
+..out "Numbers:";
+..out numbers;
+..out "Person:";
+..out person;
+..out "Mixed table:";
+..out mixed_table;
+
+..out "=== ENHANCED BROADCASTING ===";
+..out "Doubled numbers:";
+..out doubled;
+..out "Squared numbers:";
+..out squared;
+..out "Type check:";
+..out type_check;
+
+..out "=== TABLE-SPECIFIC OPERATIONS ===";
+..out "t.map doubled:";
+..out t_doubled;
+..out "Even numbers:";
+..out even_numbers;
+..out "Positive numbers:";
+..out positive_numbers;
+..out "Sum total:";
+..out total;
+..out "Maximum:";
+..out maximum;
+
+..out "=== IMMUTABLE OPERATIONS ===";
+..out "Updated person:";
+..out updated_person;
+..out "Added city:";
+..out added_city;
+..out "Without age:";
+..out without_age;
+..out "Without nonexistent:";
+..out without_nonexistent;
+..out "Merged:";
+..out merged;
+..out "Overwrite merge:";
+..out overwrite_merge;
+
+..out "=== TABLE INFORMATION ===";
+..out "All pairs:";
+..out all_pairs;
+..out "All keys:";
+..out all_keys;
+..out "All values:";
+..out all_values;
+..out "Table size:";
+..out table_size;
+..out "Has name:";
+..out has_name;
+..out "Has email:";
+..out has_email;
+..out "Age or default:";
+..out age_or_default;
+..out "Email or default:";
+..out email_or_default;
+
+..out "=== ELEMENT-WISE OPERATIONS ===";
+..out "Normal add:";
+..out normal_add;
+..out "Each result:";
+..out each_result;
+..out "Mixed operation:";
+..out mixed_operation;
+..out "Multi-table sum:";
+..out multi_table_sum;
+..out "Triple sum:";
+..out triple_sum;
+..out "Mixed types:";
+..out mixed_types;
+..out "Mixed types2:";
+..out mixed_types2;
+
+..out "=== NESTED TABLE OPERATIONS ===";
+..out "Top-level only:";
+..out top_level_only;
+..out "Nested doubled:";
+..out nested_doubled;
+..out "Nested with t.map:";
+..out nested_with_t_map;
+..out "Deep doubled:";
+..out deep_doubled;
+..out "Deep with t.map:";
+..out deep_with_t_map;
+
+..out "=== EMBEDDED FUNCTIONS ===";
+..out "Calculator add:";
+..out calc_result;
+..out "Calculator multiply:";
+..out calc_multiply;
+..out "Classify zero:";
+..out calc_classify_zero;
+..out "Classify one:";
+..out calc_classify_one;
+..out "Classify other:";
+..out calc_classify_other;
+
+..out "=== EDGE CASES ===";
+..out "Empty pairs:";
+..out empty_pairs;
+..out "Empty keys:";
+..out empty_keys;
+..out "Empty values:";
+..out empty_values;
+..out "Empty length:";
+..out empty_length;
+..out "Safe get:";
+..out safe_get;
+..out "Safe pairs:";
+..out safe_pairs;
+
+..out "=== BOOLEAN AND NUMERIC KEYS ===";
+..out "Boolean keys:";
+..out boolean_keys;
+..out "Boolean values:";
+..out boolean_values;
+..out "Numeric keys:";
+..out numeric_keys;
+
+..out "=== FUNCTION COMPOSITION ===";
+..out "Transformed:";
+..out transformed;
+..out "Pipe result:";
+..out pipe_result;
+..out "Each with functions:";
+..out each_with_functions;
+..out "Each with composition:";
+..out each_with_composition;
+
+..out "=== COMPLEX DATA STRUCTURES ===";
+..out "User names:";
+..out user_names;
+..out "User count:";
+..out user_count;
+..out "Active users:";
+..out active_users;
+
+..out "=== BACKWARD COMPATIBILITY ===";
+..out "Existing access:";
+..out existing_access;
+..out "Chained access:";
+..out chained_access;
+..out "Existing map result:";
+..out existing_map_result;
+..out "Existing reduce result:";
+..out existing_reduce_result;
+
+..out "=== PERFORMANCE TESTS ===";
+..out "Large doubled:";
+..out large_doubled;
+..out "Large filtered:";
+..out large_filtered;
+..out "Large reduced:";
+..out large_reduced;
+..out "Large nested doubled:";
+..out large_nested_doubled;
+
+/* ===== ERROR HANDLING TESTS ===== */
+/* These tests demonstrate expected error behavior */
+/* Uncomment individual lines to test specific error cases */
+
+/* Type validation errors */
+/* tableSet_error : t.set "not_a_table" "key" "value"; */
+/* tableGet_error : t.get "not_a_table" "key"; */
+/* tableHas_error : t.has "not_a_table" "key"; */
+/* tableMerge_error : t.merge "not_a_table" person; */
+
+/* Missing argument errors */
+/* tableSet_missing : t.set person "key"; */
+/* tableGet_missing : t.get person; */
+/* tableHas_missing : t.has person; */
+
+/* Function validation errors */
+/* each_no_function : each "not_a_function" table1; */
+/* each_mixed_errors : each @add "string" table1; */
+
+/* Null/undefined handling */
+/* null_table : t.set null "key" "value"; */
+/* undefined_key : t.get person undefined; */
+
+/* ===== FINAL VALIDATION ===== */
+..assert "All table enhancement tests completed successfully!" == "All table enhancement tests completed successfully!";
+
+..out "=== TEST COMPLETION ===";
+..out "All table enhancement tests completed successfully!";
+..out "All assertions passed!"; 
\ No newline at end of file