44 SimulatorModelDependencyFileId ,
55 SimulatorModelRevisionDependency ,
66)
7+ from cognite .client .data_classes .simulators .simulators import (
8+ Simulator ,
9+ SimulatorQuantity ,
10+ SimulatorUnitEntry ,
11+ )
712
813
914class TestSimulatorModelRevisionDependency :
@@ -28,3 +33,102 @@ def test_load_list(self, input_data):
2833 assert result [0 ].arguments == {"fieldA" : "valueA" }
2934 assert isinstance (result [0 ].file , SimulatorModelDependencyFileId )
3035 assert result [1 ].file .id == 2222
36+
37+
38+ class TestSimulator :
39+ @pytest .fixture
40+ def simulator_with_quantities (self ):
41+ """Create a simulator with unit quantities for testing."""
42+ unit_m = SimulatorUnitEntry (label = "Meters" , name = "m" )
43+ unit_ft = SimulatorUnitEntry (label = "Feet" , name = "ft" )
44+ unit_kg = SimulatorUnitEntry (label = "Kilograms" , name = "kg" )
45+ unit_lb = SimulatorUnitEntry (label = "Pounds" , name = "lb" )
46+ unit_c = SimulatorUnitEntry (label = "Celsius" , name = "C" )
47+ unit_f = SimulatorUnitEntry (label = "Fahrenheit" , name = "F" )
48+
49+ quantity_length = SimulatorQuantity (name = "length" , label = "Length" , units = [unit_m , unit_ft ])
50+ quantity_mass = SimulatorQuantity (name = "mass" , label = "Mass" , units = [unit_kg , unit_lb ])
51+ quantity_temp = SimulatorQuantity (name = "temperature" , label = "Temperature" , units = [unit_c , unit_f ])
52+
53+ return Simulator (
54+ external_id = "test-simulator" ,
55+ id = 1 ,
56+ name = "Test Simulator" ,
57+ file_extension_types = [".sim" ],
58+ unit_quantities = [quantity_length , quantity_mass , quantity_temp ],
59+ )
60+
61+ @pytest .fixture
62+ def simulator_without_quantities (self ):
63+ """Create a simulator without unit quantities for testing."""
64+ return Simulator (
65+ external_id = "empty-simulator" ,
66+ id = 2 ,
67+ name = "Empty Simulator" ,
68+ file_extension_types = [".sim" ],
69+ unit_quantities = None ,
70+ )
71+
72+ def test_get_quantities_with_data (self , simulator_with_quantities ):
73+ """Test get_quantities returns correct list when quantities exist."""
74+ quantities = simulator_with_quantities .get_quantities ()
75+ assert quantities == ["length" , "mass" , "temperature" ]
76+ assert len (quantities ) == 3
77+ assert all (isinstance (q , str ) for q in quantities )
78+
79+ def test_get_quantities_empty (self , simulator_without_quantities ):
80+ """Test get_quantities returns empty list when no quantities exist."""
81+ quantities = simulator_without_quantities .get_quantities ()
82+ assert quantities == []
83+ assert len (quantities ) == 0
84+
85+ def test_get_units_valid_quantity (self , simulator_with_quantities ):
86+ """Test get_units returns correct units for valid quantities."""
87+ # Test length units
88+ length_units = simulator_with_quantities .get_units ("length" )
89+ assert length_units == ["m" , "ft" ]
90+ assert len (length_units ) == 2
91+
92+ # Test mass units
93+ mass_units = simulator_with_quantities .get_units ("mass" )
94+ assert mass_units == ["kg" , "lb" ]
95+ assert len (mass_units ) == 2
96+
97+ # Test temperature units
98+ temp_units = simulator_with_quantities .get_units ("temperature" )
99+ assert temp_units == ["C" , "F" ]
100+ assert len (temp_units ) == 2
101+
102+ def test_get_units_invalid_quantity (self , simulator_with_quantities ):
103+ """Test get_units raises ValueError for non-existent quantity."""
104+ with pytest .raises (ValueError ) as exc_info :
105+ simulator_with_quantities .get_units ("pressure" )
106+
107+ error_msg = str (exc_info .value )
108+ assert "Quantity 'pressure' not found" in error_msg
109+ assert "Available quantities: length, mass, temperature" in error_msg
110+
111+ def test_get_units_no_quantities (self , simulator_without_quantities ):
112+ """Test get_units raises ValueError when simulator has no quantities."""
113+ with pytest .raises (ValueError ) as exc_info :
114+ simulator_without_quantities .get_units ("any_quantity" )
115+
116+ error_msg = str (exc_info .value )
117+ assert "Quantity 'any_quantity' not found" in error_msg
118+ assert "This simulator has no unit quantities defined" in error_msg
119+
120+ def test_get_units_empty_units_list (self ):
121+ """Test get_units with quantity that has empty units list."""
122+ empty_quantity = SimulatorQuantity (name = "empty" , label = "Empty Quantity" , units = [])
123+
124+ simulator = Simulator (
125+ external_id = "test-sim" ,
126+ id = 3 ,
127+ name = "Test" ,
128+ file_extension_types = [".sim" ],
129+ unit_quantities = [empty_quantity ],
130+ )
131+
132+ units = simulator .get_units ("empty" )
133+ assert units == []
134+ assert len (units ) == 0
0 commit comments