You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.9 KiB
93 lines
2.9 KiB
# Define a simple testing framework
|
|
from swarms.tools.tool_parse_exec import parse_and_execute_json
|
|
|
|
|
|
def run_test(test_name, test_func):
|
|
print(f"Running test: {test_name}")
|
|
print("------------------------------------------------")
|
|
try:
|
|
test_func()
|
|
print(f"✓ {test_name} passed")
|
|
print("------------------------------------------------")
|
|
except Exception as e:
|
|
print(f"✗ {test_name} failed: {str(e)}")
|
|
print("------------------------------------------------")
|
|
|
|
|
|
# Mock functions for testing
|
|
def mock_function_a(param1, param2):
|
|
return param1 + param2
|
|
|
|
|
|
def mock_function_b(param1):
|
|
if param1 < 0:
|
|
raise ValueError("Negative value not allowed")
|
|
return param1 * 2
|
|
|
|
|
|
# Test cases
|
|
def test_parse_and_execute_json_success():
|
|
functions = [mock_function_a, mock_function_b]
|
|
json_string = '{"functions": [{"name": "mock_function_a", "parameters": {"param1": 1, "param2": 2}}, {"name": "mock_function_b", "parameters": {"param1": 3}}]}'
|
|
|
|
result = parse_and_execute_json(functions, json_string)
|
|
expected_result = {
|
|
"results": {"mock_function_a": "3", "mock_function_b": "6"},
|
|
"summary": "mock_function_a: 3\nmock_function_b: 6",
|
|
}
|
|
|
|
assert (
|
|
result == expected_result
|
|
), f"Expected {expected_result}, but got {result}"
|
|
|
|
|
|
def test_parse_and_execute_json_function_not_found():
|
|
functions = [mock_function_a]
|
|
json_string = '{"functions": [{"name": "non_existent_function", "parameters": {}}]}'
|
|
|
|
result = parse_and_execute_json(functions, json_string)
|
|
expected_result = {
|
|
"results": {
|
|
"non_existent_function": "Error: Function non_existent_function not found"
|
|
},
|
|
"summary": "non_existent_function: Error: Function non_existent_function not found",
|
|
}
|
|
|
|
assert (
|
|
result == expected_result
|
|
), f"Expected {expected_result}, but got {result}"
|
|
|
|
|
|
def test_parse_and_execute_json_error_handling():
|
|
functions = [mock_function_b]
|
|
json_string = '{"functions": [{"name": "mock_function_b", "parameters": {"param1": -1}}]}'
|
|
|
|
result = parse_and_execute_json(functions, json_string)
|
|
expected_result = {
|
|
"results": {
|
|
"mock_function_b": "Error: Negative value not allowed"
|
|
},
|
|
"summary": "mock_function_b: Error: Negative value not allowed",
|
|
}
|
|
|
|
assert (
|
|
result == expected_result
|
|
), f"Expected {expected_result}, but got {result}"
|
|
|
|
|
|
# Run tests
|
|
run_test(
|
|
"Test parse_and_execute_json success",
|
|
test_parse_and_execute_json_success,
|
|
)
|
|
print("------------------------------------------------")
|
|
run_test(
|
|
"Test parse_and_execute_json function not found",
|
|
test_parse_and_execute_json_function_not_found,
|
|
)
|
|
print("------------------------------------------------")
|
|
run_test(
|
|
"Test parse_and_execute_json error handling",
|
|
test_parse_and_execute_json_error_handling,
|
|
)
|