#!/usr/bin/env python3 """ Test ANSYS session manager functionality """ import sys from pathlib import Path import json # Add project root to path sys.path.insert(0, str(Path(__file__).parent.parent)) from backend.pymechanical.session_manager import ANSYSSessionManager def test_session_manager(): """Test ANSYS session manager functionality""" print("Testing ANSYS Session Manager...") # Test 1: Initialize session manager print("\n1. Testing session manager initialization...") session_manager = ANSYSSessionManager(simulation_mode=True) print(f"✓ Session manager initialized") # Test 2: Get initial session info print("\n2. Testing initial session info...") session_info = session_manager.get_session_info() print(f"✓ Initial session info: {json.dumps(session_info, indent=2, default=str)}") # Test 3: Start session print("\n3. Testing session startup...") success = session_manager.start_session(batch_mode=True) print(f"✓ Session startup: {'Success' if success else 'Failed'}") session_info = session_manager.get_session_info() print(f"✓ Session info after startup: {json.dumps(session_info, indent=2, default=str)}") # Test 4: Import geometry print("\n4. Testing geometry import...") blade_file = Path("resource/blade.step") if blade_file.exists(): success = session_manager.import_geometry(str(blade_file)) print(f"✓ Geometry import: {'Success' if success else 'Failed'}") session_info = session_manager.get_session_info() print(f"✓ Session info after import: {json.dumps(session_info, indent=2, default=str)}") else: print("✗ Test file resource/blade.step not found, skipping geometry import test") # Test 5: Validate geometry print("\n5. Testing geometry validation...") validation_result = session_manager.validate_geometry() print(f"✓ Geometry validation: {json.dumps(validation_result, indent=2, default=str)}") # Test 6: Test invalid geometry import print("\n6. Testing invalid geometry import...") success = session_manager.import_geometry("nonexistent_file.step") print(f"✓ Invalid geometry import: {'Failed as expected' if not success else 'Unexpected success'}") # Test 7: Close session print("\n7. Testing session close...") success = session_manager.close_session() print(f"✓ Session close: {'Success' if success else 'Failed'}") session_info = session_manager.get_session_info() print(f"✓ Session info after close: {json.dumps(session_info, indent=2, default=str)}") # Test 8: Cleanup print("\n8. Testing cleanup...") success = session_manager.cleanup_temp_files() print(f"✓ Cleanup: {'Success' if success else 'Failed'}") def test_context_manager(): """Test context manager functionality""" print("\n" + "="*50) print("Testing Context Manager...") blade_file = Path("resource/blade.step") if not blade_file.exists(): print("✗ Test file resource/blade.step not found, skipping context manager test") return try: with ANSYSSessionManager(simulation_mode=True) as session: print("✓ Session started via context manager") session_info = session.get_session_info() print(f"✓ Session active: {session_info['is_active']}") success = session.import_geometry(str(blade_file)) print(f"✓ Geometry import in context: {'Success' if success else 'Failed'}") print("✓ Context manager completed (session should be closed automatically)") # Verify session is closed session_info = session.get_session_info() print(f"✓ Session active after context exit: {session_info['is_active']}") except Exception as e: print(f"✗ Context manager test failed: {str(e)}") def test_error_scenarios(): """Test error handling scenarios""" print("\n" + "="*50) print("Testing Error Scenarios...") session_manager = ANSYSSessionManager(simulation_mode=True) # Test 1: Import geometry without session print("\n1. Testing geometry import without active session...") success = session_manager.import_geometry("test.step") print(f"✓ Import without session: {'Failed as expected' if not success else 'Unexpected success'}") # Test 2: Close non-existent session print("\n2. Testing close of non-existent session...") success = session_manager.close_session() print(f"✓ Close non-existent session: {'Success' if success else 'Failed'}") # Test 3: Validate geometry without import print("\n3. Testing geometry validation without import...") validation_result = session_manager.validate_geometry() print(f"✓ Validation without geometry: {'Failed as expected' if not validation_result['valid'] else 'Unexpected success'}") if __name__ == '__main__': print("CAE Mesh Generator ANSYS Session Manager Test") print("=" * 60) test_session_manager() test_context_manager() test_error_scenarios() print("\n" + "="*60) print("✓ All ANSYS session manager tests completed!")