STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
test_layer1_pressures_logic.py
Go to the documentation of this file.
1import unittest
2from unittest.mock import MagicMock
3import numpy as np
4from engine.pipeline.config_schemas import PintleEngineConfig, LOXTankConfig, FuelTankConfig
5
6class TestLayer1PressuresLogic(unittest.TestCase):
8 # This test verifies the logic I added to layer1_static_optimization.py
9 # by simulating the relevant section.
10
11 # 1. Setup mock objects
12 optimized_config = MagicMock(spec=PintleEngineConfig)
13 optimized_config.lox_tank = None
14 optimized_config.fuel_tank = None
15
16 opt_state = {
17 "best_x": np.array([0.001, 1.0, 8.0, 0.1, 0.015, 0.0006, 16, 0.003, 560.0, 660.0])
18 }
19
20 bounds = [(0,1)] * 10
21 bounds[8] = (200, 700)
22 bounds[9] = (200, 850)
23
24 # 2. Simulate the added logic
25 # Ensure tank configs exist
26 if optimized_config.lox_tank is None:
27 optimized_config.lox_tank = LOXTankConfig(lox_h=0.5, lox_radius=0.1, ox_tank_pos=1.0)
28 if optimized_config.fuel_tank is None:
29 optimized_config.fuel_tank = FuelTankConfig(rp1_h=0.5, rp1_radius=0.1, fuel_tank_pos=0.5)
30
31 # Extract optimized pressures
32 best_x = opt_state.get("best_x")
33 if len(best_x) >= 10:
34 P_O_start_optimized_psi = float(np.clip(best_x[8], bounds[8][0], bounds[8][1]))
35 P_F_start_optimized_psi = float(np.clip(best_x[9], bounds[9][0], bounds[9][1]))
36 optimized_config.lox_tank.initial_pressure_psi = P_O_start_optimized_psi
37 optimized_config.fuel_tank.initial_pressure_psi = P_F_start_optimized_psi
38
39 # 3. Verify
40 self.assertEqual(optimized_config.lox_tank.initial_pressure_psi, 560.0)
41 self.assertEqual(optimized_config.fuel_tank.initial_pressure_psi, 660.0)
42 print("✓ Logic correctly assigns pressures to config")
43
45 # Verify that LOXTankConfig and FuelTankConfig now have initial_pressure_psi
46 lox = LOXTankConfig(lox_h=0.5, lox_radius=0.1, ox_tank_pos=1.0, initial_pressure_psi=500.0)
47 fuel = FuelTankConfig(rp1_h=0.5, rp1_radius=0.1, fuel_tank_pos=0.5, initial_pressure_psi=600.0)
48
49 self.assertEqual(lox.initial_pressure_psi, 500.0)
50 self.assertEqual(fuel.initial_pressure_psi, 600.0)
51 print("✓ Schema correctly supports initial_pressure_psi")
52
53if __name__ == "__main__":
54 unittest.main()