...
This commit is contained in:
		
							
								
								
									
										174
									
								
								packages/clients/myceliumclient/tests/rhai/run_all_tests.rhai
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								packages/clients/myceliumclient/tests/rhai/run_all_tests.rhai
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,174 @@ | ||||
| // Mycelium Rhai Test Runner | ||||
| // | ||||
| // This script runs all Mycelium-related Rhai tests and reports results. | ||||
| // It includes simplified versions of the individual tests to avoid dependency issues. | ||||
|  | ||||
| print("=== Mycelium Rhai Test Suite ==="); | ||||
| print("Running comprehensive tests for Mycelium Rhai integration...\n"); | ||||
|  | ||||
| let total_tests = 0; | ||||
| let passed_tests = 0; | ||||
| let failed_tests = 0; | ||||
| let skipped_tests = 0; | ||||
|  | ||||
| // Test 1: Function Registration | ||||
| print("Test 1: Function Registration"); | ||||
| total_tests += 1; | ||||
| try { | ||||
|     // Test that all mycelium functions are registered | ||||
|     let invalid_url = "http://localhost:99999"; | ||||
|     let all_functions_exist = true; | ||||
|  | ||||
|     try { mycelium_get_node_info(invalid_url); } catch(err) { | ||||
|         if !err.to_string().contains("Mycelium error") { all_functions_exist = false; } | ||||
|     } | ||||
|  | ||||
|     try { mycelium_list_peers(invalid_url); } catch(err) { | ||||
|         if !err.to_string().contains("Mycelium error") { all_functions_exist = false; } | ||||
|     } | ||||
|  | ||||
|     try { mycelium_send_message(invalid_url, "dest", "topic", "msg", -1); } catch(err) { | ||||
|         if !err.to_string().contains("Mycelium error") { all_functions_exist = false; } | ||||
|     } | ||||
|  | ||||
|     if all_functions_exist { | ||||
|         passed_tests += 1; | ||||
|         print("✓ PASSED: All mycelium functions are registered"); | ||||
|     } else { | ||||
|         failed_tests += 1; | ||||
|         print("✗ FAILED: Some mycelium functions are missing"); | ||||
|     } | ||||
| } catch(err) { | ||||
|     failed_tests += 1; | ||||
|     print(`✗ ERROR: Function registration test failed - ${err}`); | ||||
| } | ||||
|  | ||||
| // Test 2: Error Handling | ||||
| print("\nTest 2: Error Handling"); | ||||
| total_tests += 1; | ||||
| try { | ||||
|     mycelium_get_node_info("http://localhost:99999"); | ||||
|     failed_tests += 1; | ||||
|     print("✗ FAILED: Should have failed with connection error"); | ||||
| } catch(err) { | ||||
|     if err.to_string().contains("Mycelium error") { | ||||
|         passed_tests += 1; | ||||
|         print("✓ PASSED: Error handling works correctly"); | ||||
|     } else { | ||||
|         failed_tests += 1; | ||||
|         print(`✗ FAILED: Unexpected error format - ${err}`); | ||||
|     } | ||||
| } | ||||
|  | ||||
| // Test 3: Parameter Validation | ||||
| print("\nTest 3: Parameter Validation"); | ||||
| total_tests += 1; | ||||
| try { | ||||
|     mycelium_get_node_info(""); | ||||
|     failed_tests += 1; | ||||
|     print("✗ FAILED: Should have failed with empty API URL"); | ||||
| } catch(err) { | ||||
|     passed_tests += 1; | ||||
|     print("✓ PASSED: Parameter validation works correctly"); | ||||
| } | ||||
|  | ||||
| // Test 4: Timeout Parameter Handling | ||||
| print("\nTest 4: Timeout Parameter Handling"); | ||||
| total_tests += 1; | ||||
| try { | ||||
|     let invalid_url = "http://localhost:99999"; | ||||
|  | ||||
|     // Test negative timeout (should be treated as no timeout) | ||||
|     try { | ||||
|         mycelium_receive_messages(invalid_url, "topic", -1); | ||||
|         failed_tests += 1; | ||||
|         print("✗ FAILED: Should have failed with connection error"); | ||||
|     } catch(err) { | ||||
|         if err.to_string().contains("Mycelium error") { | ||||
|             passed_tests += 1; | ||||
|             print("✓ PASSED: Timeout parameter handling works correctly"); | ||||
|         } else { | ||||
|             failed_tests += 1; | ||||
|             print(`✗ FAILED: Unexpected error - ${err}`); | ||||
|         } | ||||
|     } | ||||
| } catch(err) { | ||||
|     failed_tests += 1; | ||||
|     print(`✗ ERROR: Timeout test failed - ${err}`); | ||||
| } | ||||
|  | ||||
| // Check if Mycelium is available for integration tests | ||||
| let test_api_url = "http://localhost:8989"; | ||||
| let fallback_api_url = "http://localhost:7777"; | ||||
| let available_api_url = ""; | ||||
|  | ||||
| try { | ||||
|     mycelium_get_node_info(test_api_url); | ||||
|     available_api_url = test_api_url; | ||||
| } catch(err) { | ||||
|     try { | ||||
|         mycelium_get_node_info(fallback_api_url); | ||||
|         available_api_url = fallback_api_url; | ||||
|     } catch(err2) { | ||||
|         // No Mycelium node available | ||||
|     } | ||||
| } | ||||
|  | ||||
| if available_api_url != "" { | ||||
|     print(`\n✓ Mycelium node available at: ${available_api_url}`); | ||||
|  | ||||
|     // Test 5: Get Node Info | ||||
|     print("\nTest 5: Get Node Info"); | ||||
|     total_tests += 1; | ||||
|     try { | ||||
|         let node_info = mycelium_get_node_info(available_api_url); | ||||
|  | ||||
|         if type_of(node_info) == "map" { | ||||
|             passed_tests += 1; | ||||
|             print("✓ PASSED: Node info retrieved successfully"); | ||||
|         } else { | ||||
|             failed_tests += 1; | ||||
|             print("✗ FAILED: Node info should be an object"); | ||||
|         } | ||||
|     } catch(err) { | ||||
|         failed_tests += 1; | ||||
|         print(`✗ ERROR: Node info test failed - ${err}`); | ||||
|     } | ||||
|  | ||||
|     // Test 6: List Peers | ||||
|     print("\nTest 6: List Peers"); | ||||
|     total_tests += 1; | ||||
|     try { | ||||
|         let peers = mycelium_list_peers(available_api_url); | ||||
|  | ||||
|         if type_of(peers) == "array" { | ||||
|             passed_tests += 1; | ||||
|             print("✓ PASSED: Peers listed successfully"); | ||||
|         } else { | ||||
|             failed_tests += 1; | ||||
|             print("✗ FAILED: Peers should be an array"); | ||||
|         } | ||||
|     } catch(err) { | ||||
|         failed_tests += 1; | ||||
|         print(`✗ ERROR: List peers test failed - ${err}`); | ||||
|     } | ||||
| } else { | ||||
|     print("\n⚠ No Mycelium node available - skipping integration tests"); | ||||
|     skipped_tests += 2; // Skip node info and list peers tests | ||||
|     total_tests += 2; | ||||
| } | ||||
|  | ||||
| // Print final results | ||||
| print("\n=== Test Results ==="); | ||||
| print(`Total Tests: ${total_tests}`); | ||||
| print(`Passed: ${passed_tests}`); | ||||
| print(`Failed: ${failed_tests}`); | ||||
| print(`Skipped: ${skipped_tests}`); | ||||
|  | ||||
| if failed_tests == 0 { | ||||
|     print("\n✓ All tests passed!"); | ||||
| } else { | ||||
|     print(`\n✗ ${failed_tests} test(s) failed.`); | ||||
| } | ||||
|  | ||||
| print("\n=== Mycelium Rhai Test Suite Completed ==="); | ||||
		Reference in New Issue
	
	Block a user