Spaces:
Configuration error
Configuration error
| import unittest | |
| import numpy as np | |
| import pandas as pd | |
| from unittest.mock import patch, MagicMock | |
| from src.optimization import OrbitalPathOptimizer | |
| class TestOptimization(unittest.TestCase): | |
| """Pruebas unitarias para el m贸dulo de optimizaci贸n de rutas orbitales.""" | |
| def setUp(self): | |
| """Configuraci贸n inicial para las pruebas.""" | |
| self.optimizer = OrbitalPathOptimizer() | |
| # Datos de prueba | |
| self.satellite_state = {"position": (1000.0, 2000.0, 3000.0)} | |
| self.debris_data = pd.DataFrame({ | |
| "debris_id": [101, 102, 103], | |
| "x": [1100.0, 1200.0, 1300.0], | |
| "y": [2100.0, 2200.0, 2300.0], | |
| "z": [3100.0, 3200.0, 3300.0] | |
| }) | |
| def test_optimize_route_success(self, mock_solve): | |
| """Prueba que la optimizaci贸n de ruta funcione correctamente.""" | |
| # Configurar el mock para simular una soluci贸n exitosa | |
| mock_solution = MagicMock() | |
| mock_solve.return_value = mock_solution | |
| # Configurar el comportamiento del mock para simular una ruta | |
| mock_solution.Value.return_value = 1 # Simular el siguiente nodo | |
| # Parchear el m茅todo IsEnd para controlar el flujo del bucle | |
| with patch('src.optimization.pywrapcp.RoutingModel.IsEnd', side_effect=[False, False, False, True]): | |
| # Parchear IndexToNode para simular los 铆ndices de nodos | |
| with patch('src.optimization.pywrapcp.RoutingIndexManager.IndexToNode', side_effect=[0, 1, 2, 3]): | |
| # Ejecutar la funci贸n | |
| result = self.optimizer.optimize_route(self.satellite_state, self.debris_data) | |
| # Verificar el resultado | |
| self.assertEqual(len(result), 2) # Deber铆a haber 2 puntos en la ruta (omitiendo el nodo inicial) | |
| def test_optimize_route_empty_data(self): | |
| """Prueba que la optimizaci贸n maneje correctamente datos vac铆os.""" | |
| # Datos de entrada vac铆os | |
| empty_debris_data = pd.DataFrame() | |
| # Ejecutar la funci贸n | |
| result = self.optimizer.optimize_route(self.satellite_state, empty_debris_data) | |
| # Verificar que se devuelve una lista vac铆a | |
| self.assertEqual(result, []) | |
| def test_optimize_route_missing_position(self): | |
| """Prueba que la optimizaci贸n maneje correctamente un estado sin posici贸n.""" | |
| # Estado sin posici贸n | |
| invalid_state = {"velocity": (1.0, 2.0, 3.0)} | |
| # Ejecutar la funci贸n | |
| result = self.optimizer.optimize_route(invalid_state, self.debris_data) | |
| # Verificar que se devuelve una lista vac铆a | |
| self.assertEqual(result, []) | |
| if __name__ == '__main__': | |
| unittest.main() |