about summary refs log tree commit diff stats
path: root/awk/rawk/tests/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'awk/rawk/tests/stdlib')
-rw-r--r--awk/rawk/tests/stdlib/README.md89
-rw-r--r--awk/rawk/tests/stdlib/example_predicates_simple.rawk56
-rw-r--r--awk/rawk/tests/stdlib/test_enhanced_utilities.rawk192
-rw-r--r--awk/rawk/tests/stdlib/test_enhanced_utilities_simple.rawk174
-rw-r--r--awk/rawk/tests/stdlib/test_functional.rawk108
-rw-r--r--awk/rawk/tests/stdlib/test_predicates.rawk196
-rw-r--r--awk/rawk/tests/stdlib/test_predicates_simple.rawk61
-rw-r--r--awk/rawk/tests/stdlib/test_stdlib_simple.rawk30
8 files changed, 0 insertions, 906 deletions
diff --git a/awk/rawk/tests/stdlib/README.md b/awk/rawk/tests/stdlib/README.md
deleted file mode 100644
index 1b7b028..0000000
--- a/awk/rawk/tests/stdlib/README.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# Standard Library Tests
-
-This directory contains tests for the built-in standard library functions.
-
-## Test Files
-
-### `test_stdlib_simple.rawk` - Standard Library Functions
-Tests the built-in standard library functions:
-- **Array utilities**: `keys()`, `values()`, `get_keys()`, `get_values()`
-- **Testing functions**: `assert()`, `expect_equal()`, `expect_true()`, `expect_false()`
-- **Functional programming**: `map()`, `reduce()`, `pipe()` (limited support)
-
-**Features:**
-- Direct function calls (these work reliably)
-- Array operations with proper error handling
-- Boolean assertions for testing
-- Basic functional programming utilities
-
-**Run with:**
-```bash
-awk -f ../../rawk.awk test_stdlib_simple.rawk | awk -f -
-```
-
-**Sample Output:**
-```
-✓ double(5) = 10
-✓ square(4) = 16
-✓ add(3, 7) = 10
-🎉 All basic function tests passed!
-```
-
-## Standard Library Functions
-
-### Array Utilities
-- `keys(array)`: Returns count of keys in array
-- `values(array)`: Returns count of values in array
-- `get_keys(array, result)`: Populates result array with keys
-- `get_values(array, result)`: Populates result array with values
-
-### Testing Functions
-- `assert(condition, message)`: Asserts a condition is true
-- `expect_equal(actual, expected, message)`: Asserts actual equals expected
-- `expect_true(condition, message)`: Asserts condition is true
-- `expect_false(condition, message)`: Asserts condition is false
-
-### Functional Programming (Limited Support)
-- `map(func_name, array)`: Maps function over array
-- `reduce(func_name, array, initial)`: Reduces array with function
-- `pipe(value, func_names...)`: Pipes value through functions
-
-### Predicate Functions (25+ functions)
-**Type Checking:** `is_number()`, `is_string()`, `is_array()`, `is_empty()`
-**Numeric:** `is_positive()`, `is_negative()`, `is_zero()`, `is_integer()`, `is_float()`, `is_even()`, `is_odd()`, `is_prime()`, `is_in_range()`
-**Boolean:** `is_boolean()`, `is_truthy()`, `is_falsy()`
-**String:** `is_alpha()`, `is_numeric()`, `is_alphanumeric()`, `is_whitespace()`, `is_uppercase()`, `is_lowercase()`, `is_palindrome()`, `is_length()`
-**Validation:** `is_email()`, `is_url()`, `is_ipv4()`
-
-## Limitations
-
-The standard library functions have some limitations due to awk's constraints:
-
-1. **Indirect Function Calls**: Standard awk doesn't support `@func` syntax, so some functional programming features are limited
-2. **Array Returns**: Functions cannot return arrays directly (use pass-by-reference)
-3. **String-based Dispatch**: The `map` and `reduce` functions work with string function names but have limited support
-
-## Usage Examples
-
-### Array Operations
-```rawk
-data["a"] = 1
-data["b"] = 2
-data["c"] = 3
-
-key_count = keys(data)  # Returns 3
-get_keys(data, key_array)  # Populates key_array with keys
-```
-
-### Testing
-```rawk
-result = add(2, 3)
-expect_equal(result, 5, "add(2, 3) should return 5")
-expect_true(result > 0, "result should be positive")
-```
-
-### Functional Programming
-```rawk
-numbers[1] = 1; numbers[2] = 2; numbers[3] = 3
-doubled = map("double", numbers)  # Limited support
-``` 
\ No newline at end of file
diff --git a/awk/rawk/tests/stdlib/example_predicates_simple.rawk b/awk/rawk/tests/stdlib/example_predicates_simple.rawk
deleted file mode 100644
index 426f369..0000000
--- a/awk/rawk/tests/stdlib/example_predicates_simple.rawk
+++ /dev/null
@@ -1,56 +0,0 @@
-# Simple example: Using rawk predicate functions
-
-BEGIN {
-    print "=== rawk Predicate Functions Example ==="
-    print ""
-    
-    # Test various predicate functions
-    print "=== Type Checking ==="
-    print "is_number(42): " is_number(42)
-    print "is_string(\"hello\"): " is_string("hello")
-    print "is_empty(\"\"): " is_empty("")
-    print "is_empty(0): " is_empty(0)
-    
-    print ""
-    print "=== Numeric Predicates ==="
-    print "is_positive(42): " is_positive(42)
-    print "is_negative(-5): " is_negative(-5)
-    print "is_zero(0): " is_zero(0)
-    print "is_integer(42): " is_integer(42)
-    print "is_float(3.14): " is_float(3.14)
-    print "is_even(42): " is_even(42)
-    print "is_odd(43): " is_odd(43)
-    print "is_prime(17): " is_prime(17)
-    print "is_in_range(5, 1, 10): " is_in_range(5, 1, 10)
-    
-    print ""
-    print "=== String Predicates ==="
-    print "is_alpha(\"hello\"): " is_alpha("hello")
-    print "is_numeric(\"123\"): " is_numeric("123")
-    print "is_alphanumeric(\"Hello123\"): " is_alphanumeric("Hello123")
-    print "is_uppercase(\"HELLO\"): " is_uppercase("HELLO")
-    print "is_lowercase(\"hello\"): " is_lowercase("hello")
-    print "is_palindrome(\"racecar\"): " is_palindrome("racecar")
-    print "is_length(\"hello\", 5): " is_length("hello", 5)
-    
-    print ""
-    print "=== Validation Predicates ==="
-    print "is_email(\"user@example.com\"): " is_email("user@example.com")
-    print "is_email(\"invalid-email\"): " is_email("invalid-email")
-    print "is_url(\"http://example.com\"): " is_url("http://example.com")
-    print "is_url(\"example.com\"): " is_url("example.com")
-    print "is_ipv4(\"192.168.1.1\"): " is_ipv4("192.168.1.1")
-    print "is_ipv4(\"256.1.2.3\"): " is_ipv4("256.1.2.3")
-    
-    print ""
-    print "=== Boolean Predicates ==="
-    print "is_boolean(1): " is_boolean(1)
-    print "is_boolean(0): " is_boolean(0)
-    print "is_truthy(42): " is_truthy(42)
-    print "is_truthy(0): " is_truthy(0)
-    print "is_falsy(0): " is_falsy(0)
-    print "is_falsy(42): " is_falsy(42)
-    
-    print ""
-    print "🎉 Predicate functions example completed!"
-} 
\ No newline at end of file
diff --git a/awk/rawk/tests/stdlib/test_enhanced_utilities.rawk b/awk/rawk/tests/stdlib/test_enhanced_utilities.rawk
deleted file mode 100644
index eacc3f7..0000000
--- a/awk/rawk/tests/stdlib/test_enhanced_utilities.rawk
+++ /dev/null
@@ -1,192 +0,0 @@
-$is_positive = (x) -> x > 0;
-$is_even = (x) -> x % 2 == 0;
-$is_negative = (x) -> x < 0;
-$is_zero = (x) -> x == 0;
-$is_valid_email = (email) -> is_email(email);
-$has_error = (log) -> index(log, "ERROR") > 0
-$is_long_string = (str) -> length(str) > 10;
-
-BEGIN {
-    print "=== Enhanced Utilities Test Suite ==="
-    print ""
-    
-    # Test 1: Filter function
-    print "Test 1: Filter Function"
-    numbers[1] = -1
-    numbers[2] = 0
-    numbers[3] = 1
-    numbers[4] = -5
-    numbers[5] = 10
-    numbers[6] = -3
-    numbers[7] = 7
-    
-    # Filter positive numbers
-    positive_count = filter("is_positive", numbers, positive_numbers)
-    expect_equal(positive_count, 3, "Should find 3 positive numbers")
-    expect_equal(positive_numbers[1], 1, "First positive should be 1")
-    expect_equal(positive_numbers[2], 10, "Second positive should be 10")
-    expect_equal(positive_numbers[3], 7, "Third positive should be 7")
-    print "✓ Filter positive numbers working"
-    
-    # Filter even numbers
-    even_count = filter("is_even", numbers, even_numbers)
-    expect_equal(even_count, 2, "Should find 2 even numbers")
-    expect_equal(even_numbers[1], 0, "First even should be 0")
-    expect_equal(even_numbers[2], 10, "Second even should be 10")
-    print "✓ Filter even numbers working"
-    
-    # Filter negative numbers
-    negative_count = filter("is_negative", numbers, negative_numbers)
-    expect_equal(negative_count, 3, "Should find 3 negative numbers")
-    expect_equal(negative_numbers[1], -1, "First negative should be -1")
-    expect_equal(negative_numbers[2], -5, "Second negative should be -5")
-    expect_equal(negative_numbers[3], -3, "Third negative should be -3")
-    print "✓ Filter negative numbers working"
-    print ""
-    
-    # Test 2: Find function
-    print "Test 2: Find Function"
-    
-    # Find first positive number
-    first_positive = find("is_positive", numbers)
-    expect_equal(first_positive, 1, "First positive should be 1")
-    print "✓ Find first positive working"
-    
-    # Find first even number
-    first_even = find("is_even", numbers)
-    expect_equal(first_even, 0, "First even should be 0")
-    print "✓ Find first even working"
-    
-    # Find first negative number
-    first_negative = find("is_negative", numbers)
-    expect_equal(first_negative, -1, "First negative should be -1")
-    print "✓ Find first negative working"
-    
-    # Test with empty result
-    first_zero = find("is_zero", numbers)
-    expect_equal(first_zero, 0, "First zero should be 0")
-    print "✓ Find with existing value working"
-    print ""
-    
-    # Test 3: FindIndex function
-    print "Test 3: FindIndex Function"
-    
-    # Find index of first positive number
-    first_positive_index = findIndex("is_positive", numbers)
-    expect_equal(first_positive_index, 3, "First positive should be at index 3")
-    print "✓ FindIndex first positive working"
-    
-    # Find index of first even number
-    first_even_index = findIndex("is_even", numbers)
-    expect_equal(first_even_index, 2, "First even should be at index 2")
-    print "✓ FindIndex first even working"
-    
-    # Find index of first negative number
-    first_negative_index = findIndex("is_negative", numbers)
-    expect_equal(first_negative_index, 1, "First negative should be at index 1")
-    print "✓ FindIndex first negative working"
-    
-    # Test with not found
-    first_zero_index = findIndex("is_zero", numbers)
-    expect_equal(first_zero_index, 2, "First zero should be at index 2")
-    print "✓ FindIndex with existing value working"
-    print ""
-    
-    # Test 4: Real-world scenarios
-    print "Test 4: Real-world Scenarios"
-    
-    # Test with email validation
-    emails[1] = "user@example.com"
-    emails[2] = "invalid-email"
-    emails[3] = "another@domain.org"
-    emails[4] = "not-an-email"
-    
-    valid_emails_count = filter("is_valid_email", emails, valid_emails)
-    expect_equal(valid_emails_count, 2, "Should find 2 valid emails")
-    expect_equal(valid_emails[1], "user@example.com", "First valid email should be user@example.com")
-    expect_equal(valid_emails[2], "another@domain.org", "Second valid email should be another@domain.org")
-    print "✓ Email filtering working"
-    
-    # Test with log analysis
-    logs[1] = "INFO: User logged in"
-    logs[2] = "ERROR: Database connection failed"
-    logs[3] = "INFO: Request processed"
-    logs[4] = "ERROR: Invalid input"
-    logs[5] = "DEBUG: Memory usage"
-    
-    error_logs_count = filter("has_error", logs, error_logs)
-    expect_equal(error_logs_count, 2, "Should find 2 error logs")
-    expect_equal(error_logs[1], "ERROR: Database connection failed", "First error log should be database error")
-    expect_equal(error_logs[2], "ERROR: Invalid input", "Second error log should be invalid input error")
-    print "✓ Log filtering working"
-    
-    # Find first error log
-    first_error = find("has_error", logs)
-    expect_equal(first_error, "ERROR: Database connection failed", "First error should be database error")
-    print "✓ Find first error working"
-    
-    # Find index of first error
-    first_error_index = findIndex("has_error", logs)
-    expect_equal(first_error_index, 2, "First error should be at index 2")
-    print "✓ FindIndex first error working"
-    print ""
-    
-    # Test 5: Edge cases
-    print "Test 5: Edge Cases"
-    
-    # Test with empty array
-    empty_count = filter("is_positive", empty_array, empty_result)
-    expect_equal(empty_count, 0, "Empty array should return 0")
-    print "✓ Empty array filtering working"
-    
-    # Test find with empty array
-    empty_find = find("is_positive", empty_array)
-    expect_equal(empty_find, "", "Find with empty array should return empty string")
-    print "✓ Find with empty array working"
-    
-    # Test findIndex with empty array
-    empty_find_index = findIndex("is_positive", empty_array)
-    expect_equal(empty_find_index, 0, "FindIndex with empty array should return 0")
-    print "✓ FindIndex with empty array working"
-    
-    # Test with single element array
-    single[1] = 42
-    single_count = filter("is_positive", single, single_result)
-    expect_equal(single_count, 1, "Single positive element should return 1")
-    expect_equal(single_result[1], 42, "Single result should be 42")
-    print "✓ Single element array working"
-    print ""
-    
-    # Test 6: Integration with existing functions
-    print "Test 6: Integration with Existing Functions"
-    
-    # Filter then map
-    filtered_count = filter("is_positive", numbers, filtered)
-    doubled_count = map("double", filtered, doubled_filtered)
-    expect_equal(doubled_count, 3, "Should have 3 doubled positive numbers")
-    expect_equal(doubled_filtered[1], 2, "First doubled should be 2")
-    expect_equal(doubled_filtered[2], 20, "Second doubled should be 20")
-    expect_equal(doubled_filtered[3], 14, "Third doubled should be 14")
-    print "✓ Filter + Map integration working"
-    
-    # Find then pipe
-    first_positive = find("is_positive", numbers)
-    doubled_first = pipe(first_positive, "double")
-    expect_equal(doubled_first, 2, "Doubled first positive should be 2")
-    print "✓ Find + Pipe integration working"
-    print ""
-    
-    print "=== Enhanced Utilities Test Summary ==="
-    print "Total tests: 6"
-    print "Passed: 6"
-    print "Failed: 0"
-    print "🎉 All enhanced utilities tests passed!"
-    print ""
-    print "Features verified:"
-    print "✓ filter() - Array filtering with predicates"
-    print "✓ find() - Find first matching element"
-    print "✓ findIndex() - Find index of first matching element"
-    print "✓ Real-world scenarios (email validation, log analysis)"
-    print "✓ Edge cases (empty arrays, single elements)"
-    print "✓ Integration with existing functional programming features"
-} 
\ No newline at end of file
diff --git a/awk/rawk/tests/stdlib/test_enhanced_utilities_simple.rawk b/awk/rawk/tests/stdlib/test_enhanced_utilities_simple.rawk
deleted file mode 100644
index 09c5988..0000000
--- a/awk/rawk/tests/stdlib/test_enhanced_utilities_simple.rawk
+++ /dev/null
@@ -1,174 +0,0 @@
-$is_positive = (x) -> x > 0;
-$is_even = (x) -> x % 2 == 0;
-$is_negative = (x) -> x < 0;
-$is_zero = (x) -> x == 0;
-$is_valid_email = (email) -> is_email(email);
-$double = (x) -> x * 2;
-
-BEGIN {
-    print "=== Enhanced Utilities Test Suite (Simplified) ==="
-    print ""
-    
-    # Test 1: Filter function
-    print "Test 1: Filter Function"
-    numbers[1] = -1
-    numbers[2] = 0
-    numbers[3] = 1
-    numbers[4] = -5
-    numbers[5] = 10
-    numbers[6] = -3
-    numbers[7] = 7
-    
-    # Filter positive numbers
-    positive_count = filter("is_positive", numbers, positive_numbers)
-    expect_equal(positive_count, 3, "Should find 3 positive numbers")
-    expect_equal(positive_numbers[1], 1, "First positive should be 1")
-    expect_equal(positive_numbers[2], 10, "Second positive should be 10")
-    expect_equal(positive_numbers[3], 7, "Third positive should be 7")
-    print "✓ Filter positive numbers working"
-    
-    # Filter even numbers
-    even_count = filter("is_even", numbers, even_numbers)
-    expect_equal(even_count, 2, "Should find 2 even numbers")
-    expect_equal(even_numbers[1], 0, "First even should be 0")
-    expect_equal(even_numbers[2], 10, "Second even should be 10")
-    print "✓ Filter even numbers working"
-    
-    # Filter negative numbers
-    negative_count = filter("is_negative", numbers, negative_numbers)
-    expect_equal(negative_count, 3, "Should find 3 negative numbers")
-    # Check that all expected negative numbers are present (order may vary)
-    has_neg1 = 0
-    has_neg5 = 0
-    has_neg3 = 0
-    for (i = 1; i <= negative_count; i++) {
-        if (negative_numbers[i] == -1) has_neg1 = 1
-        if (negative_numbers[i] == -5) has_neg5 = 1
-        if (negative_numbers[i] == -3) has_neg3 = 1
-    }
-    expect_true(has_neg1, "Should contain -1")
-    expect_true(has_neg5, "Should contain -5")
-    expect_true(has_neg3, "Should contain -3")
-    print "✓ Filter negative numbers working"
-    print ""
-    
-    # Test 2: Find function
-    print "Test 2: Find Function"
-    
-    # Find first positive number
-    first_positive = find("is_positive", numbers)
-    expect_equal(first_positive, 1, "First positive should be 1")
-    print "✓ Find first positive working"
-    
-    # Find first even number
-    first_even = find("is_even", numbers)
-    expect_equal(first_even, 0, "First even should be 0")
-    print "✓ Find first even working"
-    
-    # Find first negative number (order may vary)
-    first_negative = find("is_negative", numbers)
-    expect_true(first_negative == -1 || first_negative == -5 || first_negative == -3, "First negative should be one of the negative numbers")
-    print "✓ Find first negative working"
-    print ""
-    
-    # Test 3: FindIndex function
-    print "Test 3: FindIndex Function"
-    
-    # Find index of first positive number (order may vary)
-    first_positive_index = findIndex("is_positive", numbers)
-    expect_true(first_positive_index >= 1 && first_positive_index <= 7, "First positive should be at a valid index")
-    print "✓ FindIndex first positive working"
-    
-    # Find index of first even number (order may vary)
-    first_even_index = findIndex("is_even", numbers)
-    expect_true(first_even_index >= 1 && first_even_index <= 7, "First even should be at a valid index")
-    print "✓ FindIndex first even working"
-    
-    # Find index of first negative number (order may vary)
-    first_negative_index = findIndex("is_negative", numbers)
-    expect_true(first_negative_index >= 1 && first_negative_index <= 7, "First negative should be at a valid index")
-    print "✓ FindIndex first negative working"
-    print ""
-    
-    # Test 4: Real-world scenarios
-    print "Test 4: Real-world Scenarios"
-    
-    # Test with email validation
-    emails[1] = "user@example.com"
-    emails[2] = "invalid-email"
-    emails[3] = "another@domain.org"
-    emails[4] = "not-an-email"
-    
-    valid_emails_count = filter("is_valid_email", emails, valid_emails)
-    expect_equal(valid_emails_count, 2, "Should find 2 valid emails")
-    # Check that both valid emails are present (order may vary)
-    has_user = 0
-    has_another = 0
-    for (i = 1; i <= valid_emails_count; i++) {
-        if (valid_emails[i] == "user@example.com") has_user = 1
-        if (valid_emails[i] == "another@domain.org") has_another = 1
-    }
-    expect_true(has_user, "Should contain user@example.com")
-    expect_true(has_another, "Should contain another@domain.org")
-    print "✓ Email filtering working"
-    print ""
-    
-    # Test 5: Edge cases
-    print "Test 5: Edge Cases"
-    
-    # Test with empty array
-    empty_count = filter("is_positive", empty_array, empty_result)
-    expect_equal(empty_count, 0, "Empty array should return 0")
-    print "✓ Empty array filtering working"
-    
-    # Test find with empty array
-    empty_find = find("is_positive", empty_array)
-    expect_equal(empty_find, "", "Find with empty array should return empty string")
-    print "✓ Find with empty array working"
-    
-    # Test findIndex with empty array
-    empty_find_index = findIndex("is_positive", empty_array)
-    expect_equal(empty_find_index, 0, "FindIndex with empty array should return 0")
-    print "✓ FindIndex with empty array working"
-    
-    # Test with single element array
-    single[1] = 42
-    single_count = filter("is_positive", single, single_result)
-    expect_equal(single_count, 1, "Single positive element should return 1")
-    expect_equal(single_result[1], 42, "Single result should be 42")
-    print "✓ Single element array working"
-    print ""
-    
-    # Test 6: Integration with existing functions
-    print "Test 6: Integration with Existing Functions"
-    
-    # Filter then map
-    filtered_count = filter("is_positive", numbers, filtered)
-    doubled_count = map("double", filtered, doubled_filtered)
-    expect_equal(doubled_count, 3, "Should have 3 doubled positive numbers")
-    expect_equal(doubled_filtered[1], 2, "First doubled should be 2")
-    expect_equal(doubled_filtered[2], 20, "Second doubled should be 20")
-    expect_equal(doubled_filtered[3], 14, "Third doubled should be 14")
-    print "✓ Filter + Map integration working"
-    
-    # Find then pipe
-    first_positive = find("is_positive", numbers)
-    doubled_first = pipe(first_positive, "double")
-    expect_equal(doubled_first, 2, "Doubled first positive should be 2")
-    print "✓ Find + Pipe integration working"
-    print ""
-    
-    print "=== Enhanced Utilities Test Summary ==="
-    print "Total tests: 6"
-    print "Passed: 6"
-    print "Failed: 0"
-    print "🎉 All enhanced utilities tests passed!"
-    print ""
-    print "Features verified:"
-    print "✓ filter() - Array filtering with predicates"
-    print "✓ find() - Find first matching element"
-    print "✓ findIndex() - Find index of first matching element"
-    print "✓ Real-world scenarios (email validation)"
-    print "✓ Edge cases (empty arrays, single elements)"
-    print "✓ Integration with existing functional programming features"
-} 
\ No newline at end of file
diff --git a/awk/rawk/tests/stdlib/test_functional.rawk b/awk/rawk/tests/stdlib/test_functional.rawk
deleted file mode 100644
index b2d7e43..0000000
--- a/awk/rawk/tests/stdlib/test_functional.rawk
+++ /dev/null
@@ -1,108 +0,0 @@
-$double = (x) -> x * 2;
-$add = (x, y) -> x + y;
-$square = (x) -> x * x;
-$add_one = (x) -> x + 1;
-$multiply = (x, y) -> x * y;
-
-BEGIN {
-    print "=== Functional Programming Test Suite ==="
-    print ""
-    
-    # Test 1: Basic dispatch_call
-    print "Test 1: Function Dispatch"
-    expect_equal(dispatch_call("double", 5), 10, "dispatch_call('double', 5) should be 10")
-    expect_equal(dispatch_call("add", 3, 4), 7, "dispatch_call('add', 3, 4) should be 7")
-    expect_equal(dispatch_call("square", 4), 16, "dispatch_call('square', 4) should be 16")
-    print "✓ Function dispatch working correctly"
-    print ""
-    
-    # Test 2: Map function
-    print "Test 2: Map Function"
-    numbers[1] = 1
-    numbers[2] = 2
-    numbers[3] = 3
-    numbers[4] = 4
-    numbers[5] = 5
-    
-    doubled_count = map("double", numbers, doubled)
-    expect_equal(doubled_count, 5, "doubled array should have 5 elements")
-    expect_equal(doubled[1], 2, "doubled[1] should be 2")
-    expect_equal(doubled[2], 4, "doubled[2] should be 4")
-    expect_equal(doubled[3], 6, "doubled[3] should be 6")
-    expect_equal(doubled[4], 8, "doubled[4] should be 8")
-    expect_equal(doubled[5], 10, "doubled[5] should be 10")
-    print "✓ Map function working correctly"
-    print ""
-    
-    # Test 3: Reduce function
-    print "Test 3: Reduce Function"
-    sum = reduce("add", numbers)
-    expect_equal(sum, 15, "sum of [1,2,3,4,5] should be 15")
-    
-    product = reduce("multiply", numbers)
-    expect_equal(product, 120, "product of [1,2,3,4,5] should be 120")
-    print "✓ Reduce function working correctly"
-    print ""
-    
-    # Test 4: Pipe function (single function)
-    print "Test 4: Pipe Function (Single)"
-    result = pipe(5, "double")
-    expect_equal(result, 10, "pipe(5, 'double') should be 10")
-    result = pipe(3, "square")
-    expect_equal(result, 9, "pipe(3, 'square') should be 9")
-    print "✓ Pipe function working correctly"
-    print ""
-    
-    # Test 5: Pipe_multi function (multiple functions)
-    print "Test 5: Pipe Function (Multiple)"
-    func_names[1] = "double"
-    func_names[2] = "add_one"
-    
-    result = pipe_multi(5, func_names)
-    expect_equal(result, 11, "pipe_multi(5, ['double', 'add_one']) should be 11")
-    
-    func_names[1] = "square"
-    func_names[2] = "double"
-    result = pipe_multi(3, func_names)
-    expect_equal(result, 18, "pipe_multi(3, ['square', 'double']) should be 18")
-    print "✓ Pipe_multi function working correctly"
-    print ""
-    
-    # Test 6: Complex functional composition
-    print "Test 6: Complex Functional Composition"
-    # Create array of squares
-    squared_count = map("square", numbers, squared)
-    expect_equal(squared_count, 5, "squared array should have 5 elements")
-    expect_equal(squared[1], 1, "squared[1] should be 1")
-    expect_equal(squared[2], 4, "squared[2] should be 4")
-    expect_equal(squared[3], 9, "squared[3] should be 9")
-    
-    # Sum of squares
-    sum_of_squares = reduce("add", squared)
-    expect_equal(sum_of_squares, 55, "sum of squares [1,4,9,16,25] should be 55")
-    print "✓ Complex functional composition working correctly"
-    print ""
-    
-    # Test 7: Error handling
-    print "Test 7: Error Handling"
-    # Test non-existent function
-    result = dispatch_call("nonexistent", 1)
-    expect_equal(result, "", "dispatch_call should return empty for non-existent function")
-    print "✓ Error handling working correctly"
-    print ""
-    
-    print "=== Functional Programming Test Summary ==="
-    print "Total tests: 7"
-    print "Passed: 7"
-    print "Failed: 0"
-    print "🎉 All functional programming tests passed!"
-    print ""
-    print "Features verified:"
-    print "✓ Function dispatch with switch statements"
-    print "✓ map() - Apply function to array elements"
-    print "✓ reduce() - Reduce array with function"
-    print "✓ pipe() - Single function pipeline"
-    print "✓ pipe_multi() - Multiple function pipeline"
-    print "✓ Error handling for non-existent functions"
-    print "✓ Complex functional composition"
-} 
\ No newline at end of file
diff --git a/awk/rawk/tests/stdlib/test_predicates.rawk b/awk/rawk/tests/stdlib/test_predicates.rawk
deleted file mode 100644
index 60cc4d7..0000000
--- a/awk/rawk/tests/stdlib/test_predicates.rawk
+++ /dev/null
@@ -1,196 +0,0 @@
-# Test suite for rawk predicate functions
-# This demonstrates all the new type checking and validation functions
-
-BEGIN {
-    print "=== rawk Predicate Functions Test Suite ==="
-    print ""
-    
-    # Test counters
-    total_tests = 0
-    passed_tests = 0
-    failed_tests = 0
-    
-    # Helper function to run tests
-    $run_test = (name, condition, expected) -> {
-        total_tests++
-        if (condition == expected) {
-            passed_tests++
-            print "✓ " name
-        } else {
-            failed_tests++
-            print "❌ " name " (expected " expected ", got " condition ")"
-        }
-    }
-    
-    # Helper function to print section headers
-    $print_section = (title) -> {
-        print ""
-        print "--- " title " ---"
-    }
-    
-    # Test basic type checking
-    print_section("Basic Type Checking")
-    
-    run_test("is_number(42)", is_number(42), 1)
-    run_test("is_number(0)", is_number(0), 1)
-    run_test("is_number(-3.14)", is_number(-3.14), 1)
-    run_test("is_number(\"hello\")", is_number("hello"), 0)
-    run_test("is_number(\"\")", is_number(""), 0)
-    
-    run_test("is_string(\"hello\")", is_string("hello"), 1)
-    run_test("is_string(\"\")", is_string(""), 1)
-    run_test("is_string(42)", is_string(42), 0)
-    run_test("is_string(0)", is_string(0), 0)
-    
-    # Test array detection
-    print_section("Array Detection")
-    
-    test_array[1] = "a"
-    test_array[2] = "b"
-    empty_array[0] = ""
-    
-    run_test("is_array(test_array)", is_array(test_array), 1)
-    run_test("is_array(empty_array)", is_array(empty_array), 1)
-    run_test("is_array(42)", is_array(42), 0)
-    run_test("is_array(\"hello\")", is_array("hello"), 0)
-    
-    # Test emptiness checking
-    print_section("Emptiness Checking")
-    
-    run_test("is_empty(\"\")", is_empty(""), 1)
-    run_test("is_empty(0)", is_empty(0), 1)
-    run_test("is_empty(\"hello\")", is_empty("hello"), 0)
-    run_test("is_empty(42)", is_empty(42), 0)
-    
-    # Test numeric predicates
-    print_section("Numeric Predicates")
-    
-    run_test("is_positive(42)", is_positive(42), 1)
-    run_test("is_positive(0)", is_positive(0), 0)
-    run_test("is_positive(-5)", is_positive(-5), 0)
-    
-    run_test("is_negative(-42)", is_negative(-42), 1)
-    run_test("is_negative(0)", is_negative(0), 0)
-    run_test("is_negative(5)", is_negative(5), 0)
-    
-    run_test("is_zero(0)", is_zero(0), 1)
-    run_test("is_zero(42)", is_zero(42), 0)
-    run_test("is_zero(-5)", is_zero(-5), 0)
-    
-    run_test("is_integer(42)", is_integer(42), 1)
-    run_test("is_integer(3.14)", is_integer(3.14), 0)
-    run_test("is_integer(0)", is_integer(0), 1)
-    
-    run_test("is_float(3.14)", is_float(3.14), 1)
-    run_test("is_float(42)", is_float(42), 0)
-    run_test("is_float(0)", is_float(0), 0)
-    
-    run_test("is_even(42)", is_even(42), 1)
-    run_test("is_even(43)", is_even(43), 0)
-    run_test("is_even(0)", is_even(0), 1)
-    
-    run_test("is_odd(43)", is_odd(43), 1)
-    run_test("is_odd(42)", is_odd(42), 0)
-    run_test("is_odd(0)", is_odd(0), 0)
-    
-    run_test("is_prime(2)", is_prime(2), 1)
-    run_test("is_prime(3)", is_prime(3), 1)
-    run_test("is_prime(4)", is_prime(4), 0)
-    run_test("is_prime(17)", is_prime(17), 1)
-    run_test("is_prime(1)", is_prime(1), 0)
-    
-    run_test("is_in_range(5, 1, 10)", is_in_range(5, 1, 10), 1)
-    run_test("is_in_range(0, 1, 10)", is_in_range(0, 1, 10), 0)
-    run_test("is_in_range(10, 1, 10)", is_in_range(10, 1, 10), 1)
-    
-    # Test boolean predicates
-    print_section("Boolean Predicates")
-    
-    run_test("is_boolean(1)", is_boolean(1), 1)
-    run_test("is_boolean(0)", is_boolean(0), 1)
-    run_test("is_boolean(2)", is_boolean(2), 0)
-    run_test("is_boolean(\"true\")", is_boolean("true"), 0)
-    
-    run_test("is_truthy(42)", is_truthy(42), 1)
-    run_test("is_truthy(\"hello\")", is_truthy("hello"), 1)
-    run_test("is_truthy(0)", is_truthy(0), 0)
-    run_test("is_truthy(\"\")", is_truthy(""), 0)
-    
-    run_test("is_falsy(0)", is_falsy(0), 1)
-    run_test("is_falsy(\"\")", is_falsy(""), 1)
-    run_test("is_falsy(42)", is_falsy(42), 0)
-    run_test("is_falsy(\"hello\")", is_falsy("hello"), 0)
-    
-    # Test string predicates
-    print_section("String Predicates")
-    
-    run_test("is_alpha(\"hello\")", is_alpha("hello"), 1)
-    run_test("is_alpha(\"Hello123\")", is_alpha("Hello123"), 0)
-    run_test("is_alpha(\"\")", is_alpha(""), 0)
-    
-    run_test("is_numeric(\"123\")", is_numeric("123"), 1)
-    run_test("is_numeric(\"123abc\")", is_numeric("123abc"), 0)
-    run_test("is_numeric(\"\")", is_numeric(""), 0)
-    
-    run_test("is_alphanumeric(\"Hello123\")", is_alphanumeric("Hello123"), 1)
-    run_test("is_alphanumeric(\"Hello 123\")", is_alphanumeric("Hello 123"), 0)
-    run_test("is_alphanumeric(\"\")", is_alphanumeric(""), 0)
-    
-    run_test("is_whitespace(\" \t\n\")", is_whitespace(" \t\n"), 1)
-    run_test("is_whitespace(\"hello\")", is_whitespace("hello"), 0)
-    run_test("is_whitespace(\"\")", is_whitespace(""), 0)
-    
-    run_test("is_uppercase(\"HELLO\")", is_uppercase("HELLO"), 1)
-    run_test("is_uppercase(\"Hello\")", is_uppercase("Hello"), 0)
-    run_test("is_uppercase(\"\")", is_uppercase(""), 0)
-    
-    run_test("is_lowercase(\"hello\")", is_lowercase("hello"), 1)
-    run_test("is_lowercase(\"Hello\")", is_lowercase("Hello"), 0)
-    run_test("is_lowercase(\"\")", is_lowercase(""), 0)
-    
-    run_test("is_palindrome(\"racecar\")", is_palindrome("racecar"), 1)
-    run_test("is_palindrome(\"hello\")", is_palindrome("hello"), 0)
-    run_test("is_palindrome(\"\")", is_palindrome(""), 1)
-    run_test("is_palindrome(\"A man a plan a canal Panama\")", is_palindrome("A man a plan a canal Panama"), 1)
-    
-    run_test("is_length(\"hello\", 5)", is_length("hello", 5), 1)
-    run_test("is_length(\"hello\", 3)", is_length("hello", 3), 0)
-    
-    # Test validation predicates
-    print_section("Validation Predicates")
-    
-    run_test("is_email(\"user@example.com\")", is_email("user@example.com"), 1)
-    run_test("is_email(\"invalid-email\")", is_email("invalid-email"), 0)
-    run_test("is_email(\"@example.com\")", is_email("@example.com"), 0)
-    run_test("is_email(\"user@\")", is_email("user@"), 0)
-    run_test("is_email(\"\")", is_email(""), 0)
-    
-    run_test("is_url(\"http://example.com\")", is_url("http://example.com"), 1)
-    run_test("is_url(\"https://example.com\")", is_url("https://example.com"), 1)
-    run_test("is_url(\"ftp://example.com\")", is_url("ftp://example.com"), 1)
-    run_test("is_url(\"example.com\")", is_url("example.com"), 0)
-    
-    run_test("is_ipv4(\"192.168.1.1\")", is_ipv4("192.168.1.1"), 1)
-    run_test("is_ipv4(\"256.1.2.3\")", is_ipv4("256.1.2.3"), 0)
-    run_test("is_ipv4(\"192.168.1\")", is_ipv4("192.168.1"), 0)
-    run_test("is_ipv4(\"192.168.1.1.1\")", is_ipv4("192.168.1.1.1"), 0)
-    
-    # Test array length (commented out due to AWK limitations)
-    # print_section("Array Length")
-    # 
-    # run_test("is_length(test_array, 2)", is_length(test_array, 2), 1)
-    # run_test("is_length(test_array, 3)", is_length(test_array, 3), 0)
-    
-    # Print summary
-    print ""
-    print "=== Test Summary ==="
-    print "Total tests: " total_tests
-    print "Passed: " passed_tests
-    print "Failed: " failed_tests
-    
-    if (failed_tests == 0) {
-        print "🎉 All predicate function tests passed!"
-    } else {
-        print "❌ Some tests failed!"
-    }
-} 
\ No newline at end of file
diff --git a/awk/rawk/tests/stdlib/test_predicates_simple.rawk b/awk/rawk/tests/stdlib/test_predicates_simple.rawk
deleted file mode 100644
index b5f6970..0000000
--- a/awk/rawk/tests/stdlib/test_predicates_simple.rawk
+++ /dev/null
@@ -1,61 +0,0 @@
-# Simple test for rawk predicate functions
-
-BEGIN {
-    print "=== Simple Predicate Functions Test ==="
-    print ""
-    
-    # Test basic type checking
-    print "is_number(42): " is_number(42)
-    print "is_number(\"hello\"): " is_number("hello")
-    print "is_string(\"hello\"): " is_string("hello")
-    print "is_string(42): " is_string(42)
-    print "is_empty(\"\"): " is_empty("")
-    print "is_empty(0): " is_empty(0)
-    print "is_empty(\"hello\"): " is_empty("hello")
-    
-    # Test numeric predicates
-    print ""
-    print "is_positive(42): " is_positive(42)
-    print "is_positive(-5): " is_positive(-5)
-    print "is_negative(-42): " is_negative(-42)
-    print "is_negative(5): " is_negative(5)
-    print "is_zero(0): " is_zero(0)
-    print "is_zero(42): " is_zero(42)
-    print "is_integer(42): " is_integer(42)
-    print "is_integer(3.14): " is_integer(3.14)
-    print "is_even(42): " is_even(42)
-    print "is_odd(43): " is_odd(43)
-    print "is_prime(17): " is_prime(17)
-    print "is_prime(4): " is_prime(4)
-    
-    # Test string predicates
-    print ""
-    print "is_alpha(\"hello\"): " is_alpha("hello")
-    print "is_alpha(\"Hello123\"): " is_alpha("Hello123")
-    print "is_numeric(\"123\"): " is_numeric("123")
-    print "is_numeric(\"123abc\"): " is_numeric("123abc")
-    print "is_uppercase(\"HELLO\"): " is_uppercase("HELLO")
-    print "is_lowercase(\"hello\"): " is_lowercase("hello")
-    print "is_palindrome(\"racecar\"): " is_palindrome("racecar")
-    print "is_palindrome(\"hello\"): " is_palindrome("hello")
-    
-    # Test validation predicates
-    print ""
-    print "is_email(\"user@example.com\"): " is_email("user@example.com")
-    print "is_email(\"invalid-email\"): " is_email("invalid-email")
-    print "is_url(\"http://example.com\"): " is_url("http://example.com")
-    print "is_url(\"example.com\"): " is_url("example.com")
-    print "is_ipv4(\"192.168.1.1\"): " is_ipv4("192.168.1.1")
-    print "is_ipv4(\"256.1.2.3\"): " is_ipv4("256.1.2.3")
-    
-    # Test string length
-    print ""
-    print "is_length(\"hello\", 5): " is_length("hello", 5)
-    print "is_length(\"hello\", 3): " is_length("hello", 3)
-    
-    print ""
-    print "🎉 Simple predicate function tests completed!"
-    print ""
-    print "Note: Array detection functions have limitations in standard awk"
-    print "and cannot be tested in this simple format."
-} 
\ No newline at end of file
diff --git a/awk/rawk/tests/stdlib/test_stdlib_simple.rawk b/awk/rawk/tests/stdlib/test_stdlib_simple.rawk
deleted file mode 100644
index 56010ff..0000000
--- a/awk/rawk/tests/stdlib/test_stdlib_simple.rawk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Simple standard library test
-$double = (x) -> x * 2;
-$square = (x) -> x * x;
-$add = (a, b) -> a + b;
-
-# Test the standard library with direct function calls
-BEGIN {
-    print "=== Testing Standard Library (Simple) ==="
-    
-    # Test direct function calls (these work)
-    print "double(5) =", double(5)
-    print "square(4) =", square(4)
-    print "add(3, 7) =", add(3, 7)
-    
-    # Test keys and values functions (these work)
-    data["a"] = 1
-    data["b"] = 2
-    data["c"] = 3
-    key_count = keys(data)
-    value_count = values(data)
-    get_keys(data, key_array)
-    get_values(data, value_array)
-    print "keys(data) =", key_array[1], key_array[2], key_array[3]
-    print "values(data) =", value_array[1], value_array[2], value_array[3]
-    print "key count =", key_count, "value count =", value_count
-    
-    # Test nested function calls
-    print "double(square(3)) =", double(square(3))
-    print "square(double(3)) =", square(double(3))
-} 
\ No newline at end of file