Spaces:
No application file
No application file
| #!/usr/bin/env python3 | |
| """ | |
| Test script for DAG visualization functionality | |
| """ | |
| import sys | |
| import os | |
| sys.path.append(os.path.dirname(os.path.abspath(__file__))) | |
| from dag_visualizer import DAGVisualizer | |
| import json | |
| def test_single_task(): | |
| """Test with a single task (no dependencies)""" | |
| print("Testing single task visualization...") | |
| task_data = { | |
| "tasks": [ | |
| { | |
| "task": "target_area_for_specific_robots_1", | |
| "instruction_function": { | |
| "name": "target_area_for_specific_robots", | |
| "robot_ids": ["robot_dump_truck_01"], | |
| "dependencies": [], | |
| "object_keywords": ["puddle1"] | |
| } | |
| } | |
| ] | |
| } | |
| visualizer = DAGVisualizer() | |
| image_path = visualizer.create_dag_visualization(task_data) | |
| if image_path and os.path.exists(image_path): | |
| print(f"β Single task visualization created: {image_path}") | |
| return True | |
| else: | |
| print("β Failed to create single task visualization") | |
| return False | |
| def test_multiple_tasks_with_dependencies(): | |
| """Test with multiple tasks with dependencies""" | |
| print("Testing multiple tasks with dependencies...") | |
| task_data = { | |
| "tasks": [ | |
| { | |
| "task": "target_area_for_specific_robots_1", | |
| "instruction_function": { | |
| "name": "target_area_for_specific_robots", | |
| "robot_ids": ["robot_dump_truck_01"], | |
| "dependencies": [], | |
| "object_keywords": ["puddle1"] | |
| } | |
| }, | |
| { | |
| "task": "avoid_areas_for_all_robots_1", | |
| "instruction_function": { | |
| "name": "avoid_areas_for_all_robots", | |
| "robot_ids": ["robot_dump_truck_01", "robot_excavator_01"], | |
| "dependencies": ["target_area_for_specific_robots_1"], | |
| "object_keywords": ["obstacle1", "obstacle2"] | |
| } | |
| }, | |
| { | |
| "task": "move_to_position_1", | |
| "instruction_function": { | |
| "name": "move_to_position", | |
| "robot_ids": ["robot_excavator_01"], | |
| "dependencies": ["avoid_areas_for_all_robots_1"], | |
| "object_keywords": ["soil_pile"] | |
| } | |
| } | |
| ] | |
| } | |
| visualizer = DAGVisualizer() | |
| image_path = visualizer.create_dag_visualization(task_data) | |
| if image_path and os.path.exists(image_path): | |
| print(f"β Multiple tasks visualization created: {image_path}") | |
| return True | |
| else: | |
| print("β Failed to create multiple tasks visualization") | |
| return False | |
| def test_simplified_visualization(): | |
| """Test simplified visualization""" | |
| print("Testing simplified visualization...") | |
| task_data = { | |
| "tasks": [ | |
| { | |
| "task": "excavate_soil_from_pile", | |
| "instruction_function": { | |
| "name": "excavate_soil_from_pile", | |
| "robot_ids": ["robot_excavator_01"], | |
| "dependencies": [], | |
| "object_keywords": ["soil_pile"] | |
| } | |
| }, | |
| { | |
| "task": "transport_soil_to_pit", | |
| "instruction_function": { | |
| "name": "transport_soil_to_pit", | |
| "robot_ids": ["robot_dump_truck_01"], | |
| "dependencies": ["excavate_soil_from_pile"], | |
| "object_keywords": ["pit"] | |
| } | |
| } | |
| ] | |
| } | |
| visualizer = DAGVisualizer() | |
| image_path = visualizer.create_simplified_dag_visualization(task_data) | |
| if image_path and os.path.exists(image_path): | |
| print(f"β Simplified visualization created: {image_path}") | |
| return True | |
| else: | |
| print("β Failed to create simplified visualization") | |
| return False | |
| def test_invalid_data(): | |
| """Test with invalid data""" | |
| print("Testing invalid data handling...") | |
| # Test with empty data | |
| visualizer = DAGVisualizer() | |
| image_path = visualizer.create_dag_visualization({}) | |
| if image_path is None: | |
| print("β Invalid data handled correctly (returned None)") | |
| return True | |
| else: | |
| print("β Invalid data not handled correctly") | |
| return False | |
| def main(): | |
| """Run all tests""" | |
| print("Starting DAG Visualization Tests...") | |
| print("=" * 50) | |
| tests = [ | |
| test_single_task, | |
| test_multiple_tasks_with_dependencies, | |
| test_simplified_visualization, | |
| test_invalid_data | |
| ] | |
| passed = 0 | |
| total = len(tests) | |
| for test in tests: | |
| try: | |
| if test(): | |
| passed += 1 | |
| print() | |
| except Exception as e: | |
| print(f"β Test failed with exception: {e}") | |
| print() | |
| print("=" * 50) | |
| print(f"Tests passed: {passed}/{total}") | |
| if passed == total: | |
| print("π All tests passed!") | |
| return True | |
| else: | |
| print("β Some tests failed!") | |
| return False | |
| if __name__ == "__main__": | |
| success = main() | |
| sys.exit(0 if success else 1) |