diff options
Diffstat (limited to 'js/scripting-lang/baba-yaga-c/test_stdlib.sh')
-rwxr-xr-x | js/scripting-lang/baba-yaga-c/test_stdlib.sh | 296 |
1 files changed, 0 insertions, 296 deletions
diff --git a/js/scripting-lang/baba-yaga-c/test_stdlib.sh b/js/scripting-lang/baba-yaga-c/test_stdlib.sh deleted file mode 100755 index 6c13674..0000000 --- a/js/scripting-lang/baba-yaga-c/test_stdlib.sh +++ /dev/null @@ -1,296 +0,0 @@ -#!/bin/bash - -# Comprehensive Standard Library Test Suite for Baba Yaga C Implementation - -echo "=== Baba Yaga Standard Library Test Suite ===" -echo "" - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Function to run a test -run_test() { - local expression=$1 - local expected=$2 - local test_name=$3 - - echo -n "Testing $test_name... " - - local output - local exit_code - output=$(./bin/baba-yaga "$expression;" 2>&1) - exit_code=$? - - if [ $exit_code -eq 0 ] && [ "$(echo -n "$output")" = "$expected" ]; then - echo -e "${GREEN}PASS${NC} (got: $output)" - return 0 - else - echo -e "${RED}FAIL${NC}" - echo -e "${RED}Expected:${NC} $expected" - echo -e "${RED}Got:${NC} $output" - return 1 - fi -} - -# Function to run an error test -run_error_test() { - local expression=$1 - local test_name=$2 - - echo -n "Testing $test_name (should fail)... " - - local output - local exit_code - output=$(./bin/baba-yaga "$expression;" 2>&1) - exit_code=$? - - if [ $exit_code -eq 0 ] && echo "$output" | grep -q "Error:"; then - echo -e "${GREEN}PASS${NC} (correctly failed with error message)" - return 0 - else - echo -e "${RED}FAIL${NC}" - echo -e "${RED}Expected:${NC} Error message" - echo -e "${RED}Got:${NC} $output" - return 1 - fi -} - -# Counters -total_tests=0 -passed_tests=0 -failed_tests=0 - -echo "Running Arithmetic Function Tests..." -echo "===================================" - -# Basic arithmetic tests -arithmetic_tests=( - "add 5 3|8|Add Function" - "subtract 10 3|7|Subtract Function" - "multiply 6 7|42|Multiply Function" - "divide 15 3|5|Divide Function" - "modulo 10 3|1|Modulo Function" - "pow 2 3|8|Power Function" - "negate 5|-5|Negate Function" - "add 0 0|0|Add Zero" - "multiply 0 5|0|Multiply by Zero" - "divide 0 5|0|Divide Zero by Number" - "pow 5 0|1|Power to Zero" - "pow 1 100|1|Power of One" -) - -for test in "${arithmetic_tests[@]}"; do - IFS='|' read -r expression expected name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_test "$expression" "$expected" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "Running Arithmetic Error Tests..." -echo "=================================" - -# Arithmetic error tests -arithmetic_error_tests=( - "divide 10 0:Division by Zero" - "modulo 10 0:Modulo by Zero" - "add 5:Too Few Arguments for Add" - "add 1 2 3:Too Many Arguments for Add" - "divide 5:Too Few Arguments for Divide" - "divide 1 2 3:Too Many Arguments for Divide" -) - -for test in "${arithmetic_error_tests[@]}"; do - IFS=':' read -r expression name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_error_test "$expression" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "Running Comparison Function Tests..." -echo "===================================" - -# Comparison tests -comparison_tests=( - "equals 5 5|true|Equality True" - "equals 5 6|false|Equality False" - "not_equals 5 6|true|Inequality True" - "not_equals 5 5|false|Inequality False" - "less 3 5|true|Less Than True" - "less 5 3|false|Less Than False" - "less 5 5|false|Less Than Equal" - "less_equal 5 5|true|Less Equal True" - "less_equal 3 5|true|Less Equal True" - "less_equal 5 3|false|Less Equal False" - "greater 10 5|true|Greater Than True" - "greater 5 10|false|Greater Than False" - "greater 5 5|false|Greater Than Equal" - "greater_equal 5 5|true|Greater Equal True" - "greater_equal 10 5|true|Greater Equal True" - "greater_equal 5 10|false|Greater Equal False" -) - -for test in "${comparison_tests[@]}"; do - IFS='|' read -r expression expected name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_test "$expression" "$expected" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "Running Logical Function Tests..." -echo "=================================" - -# Logical tests -logical_tests=( - "and true true|true|And True True" - "and true false|false|And True False" - "and false true|false|And False True" - "and false false|false|And False False" - "or true true|true|Or True True" - "or true false|true|Or True False" - "or false true|true|Or False True" - "or false false|false|Or False False" - "xor true true|false|Xor True True" - "xor true false|true|Xor True False" - "xor false true|true|Xor False True" - "xor false false|false|Xor False False" - "not true|false|Not True" - "not false|true|Not False" -) - -for test in "${logical_tests[@]}"; do - IFS='|' read -r expression expected name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_test "$expression" "$expected" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "Running Higher-Order Function Tests..." -echo "======================================" - -# Higher-order function tests -higher_order_tests=( - "apply add 5 3|8|Apply Add Function" - "apply multiply 4 5|20|Apply Multiply Function" - "compose add 5 multiply 2|15|Compose Add and Multiply" -) - -for test in "${higher_order_tests[@]}"; do - IFS='|' read -r expression expected name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_test "$expression" "$expected" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "Running IO Function Tests..." -echo "============================" - -# IO function tests (basic functionality) -io_tests=( - "..out 42|42|Output Function" - "..out hello|hello|Output String" - "..assert true|true|Assert True" - "..assert false|false|Assert False" -) - -for test in "${io_tests[@]}"; do - IFS='|' read -r expression expected name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_test "$expression" "$expected" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "Running Type Error Tests..." -echo "==========================" - -# Type error tests -type_error_tests=( - "add 5 true:Type Mismatch Add" - "equals 5 hello:Type Mismatch Equals" - "less true false:Type Mismatch Less" - "and 5 3:Type Mismatch And" - "not 42:Type Mismatch Not" -) - -for test in "${type_error_tests[@]}"; do - IFS=':' read -r expression name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_error_test "$expression" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "Running Edge Case Tests..." -echo "=========================" - -# Edge case tests -edge_case_tests=( - "add 0.1 0.2|0.3|Floating Point Addition" - "multiply 0.5 0.5|0.25|Floating Point Multiplication" - "divide 1 3|0.3333333333333333|Floating Point Division" - "pow 2 0.5|1.4142135623730951|Square Root" - "pow 2 -1|0.5|Negative Power" - "modulo 5.5 2|1.5|Floating Point Modulo" -) - -for test in "${edge_case_tests[@]}"; do - IFS='|' read -r expression expected name <<< "$test" - total_tests=$((total_tests + 1)) - - if run_test "$expression" "$expected" "$name"; then - passed_tests=$((passed_tests + 1)) - else - failed_tests=$((failed_tests + 1)) - fi -done - -echo "" -echo "=== Test Summary ===" -echo "Total tests: $total_tests" -echo -e "Passed: ${GREEN}$passed_tests${NC}" -echo -e "Failed: ${RED}$failed_tests${NC}" - -if [ $failed_tests -eq 0 ]; then - echo -e "${GREEN}All standard library tests passed!${NC}" - exit 0 -else - echo -e "${RED}Some standard library tests failed.${NC}" - exit 1 -fi \ No newline at end of file |