127 lines
4.3 KiB
Python
127 lines
4.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script for camera integration with the scan wizard.
|
|
Tests the camera driver and integration with the UI.
|
|
"""
|
|
|
|
import sys
|
|
from PyQt6 import QtWidgets
|
|
|
|
def test_camera_import():
|
|
"""Test that the camera driver can be imported"""
|
|
print("Testing camera driver import...")
|
|
try:
|
|
from uc480_camera import UC480Camera, CameraStreamThread
|
|
print("✓ Camera driver imported successfully")
|
|
return True
|
|
except ImportError as e:
|
|
print(f"✗ Failed to import camera driver: {e}")
|
|
return False
|
|
|
|
def test_camera_class():
|
|
"""Test that the camera class can be instantiated"""
|
|
print("\nTesting camera class instantiation...")
|
|
try:
|
|
from uc480_camera import UC480Camera
|
|
camera = UC480Camera(camera_id=0)
|
|
print("✓ Camera class instantiated successfully")
|
|
print(f" Camera handle: {camera.h_cam}")
|
|
print(f" Initialized: {camera.is_initialized}")
|
|
return True
|
|
except Exception as e:
|
|
print(f"✗ Failed to instantiate camera class: {e}")
|
|
return False
|
|
|
|
def test_scanengine_import():
|
|
"""Test that the scanengine app can be imported with camera integration"""
|
|
print("\nTesting scanengine app import...")
|
|
try:
|
|
from scanengine_app import NewScanWizard, MainLauncher
|
|
print("✓ Scanengine app imported successfully")
|
|
return True
|
|
except ImportError as e:
|
|
print(f"✗ Failed to import scanengine app: {e}")
|
|
return False
|
|
|
|
def test_wizard_with_camera():
|
|
"""Test that the wizard can be created with camera integration"""
|
|
print("\nTesting wizard with camera integration...")
|
|
try:
|
|
app = QtWidgets.QApplication(sys.argv)
|
|
from scanengine_app import NewScanWizard
|
|
|
|
wizard = NewScanWizard()
|
|
print("✓ Wizard created successfully")
|
|
print(f" Camera object: {wizard.camera}")
|
|
print(f" Camera stream thread: {wizard.camera_stream_thread}")
|
|
print(f" CCD scene: {wizard.ccd_scene}")
|
|
|
|
# Check if camera methods exist
|
|
assert hasattr(wizard, 'initialize_camera'), "Missing initialize_camera method"
|
|
assert hasattr(wizard, 'start_camera_stream'), "Missing start_camera_stream method"
|
|
assert hasattr(wizard, 'stop_camera_stream'), "Missing stop_camera_stream method"
|
|
assert hasattr(wizard, 'cleanup_camera'), "Missing cleanup_camera method"
|
|
print("✓ All camera methods present")
|
|
|
|
# Test page change triggers
|
|
print("\nTesting page change behavior...")
|
|
current_page = wizard.stackedWidget.currentIndex()
|
|
print(f" Current page: {current_page}")
|
|
|
|
# Simulate page navigation to focus page (index 1)
|
|
print(" Navigating to focus page (index 1)...")
|
|
wizard.stackedWidget.setCurrentIndex(1)
|
|
print(f" Current page after navigation: {wizard.stackedWidget.currentIndex()}")
|
|
|
|
# Navigate back to first page
|
|
print(" Navigating back to page 0...")
|
|
wizard.stackedWidget.setCurrentIndex(0)
|
|
print(f" Current page after navigation: {wizard.stackedWidget.currentIndex()}")
|
|
|
|
# Cleanup
|
|
wizard.cleanup_camera()
|
|
print("✓ Camera cleanup successful")
|
|
|
|
return True
|
|
except Exception as e:
|
|
print(f"✗ Failed to test wizard with camera: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
def main():
|
|
"""Run all tests"""
|
|
print("=" * 60)
|
|
print("Camera Integration Test Suite")
|
|
print("=" * 60)
|
|
|
|
results = []
|
|
|
|
# Run tests
|
|
results.append(("Camera Import", test_camera_import()))
|
|
results.append(("Camera Class", test_camera_class()))
|
|
results.append(("Scanengine Import", test_scanengine_import()))
|
|
results.append(("Wizard Integration", test_wizard_with_camera()))
|
|
|
|
# Print summary
|
|
print("\n" + "=" * 60)
|
|
print("Test Summary")
|
|
print("=" * 60)
|
|
for test_name, passed in results:
|
|
status = "PASS" if passed else "FAIL"
|
|
symbol = "✓" if passed else "✗"
|
|
print(f"{symbol} {test_name}: {status}")
|
|
|
|
all_passed = all(result[1] for result in results)
|
|
print("\n" + "=" * 60)
|
|
if all_passed:
|
|
print("All tests passed!")
|
|
else:
|
|
print("Some tests failed.")
|
|
print("=" * 60)
|
|
|
|
return 0 if all_passed else 1
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|