def test_remove_component(): bob = DummyInstrument('bob', gates=['one']) station = Station() station.add_component(bob, 'bob') assert ['bob'] == list(station.components.keys()) assert bob == station.components['bob'] bob2 = station.remove_component('bob') with pytest.raises(KeyError, match='bob'): _ = station.components['bob'] assert bob == bob2 with pytest.raises(KeyError, match='Component bobby is not part of the ' 'station'): _ = station.remove_component('bobby')
def test_station_after_instrument_is_closed(): """ Test that station is aware of the fact that its components could be removed within the lifetime of the station. Here we instantiate an instrument, add it to a station, then close the instrument, and then perform an action on the station to ensure that the closed instrument does not break the work of the station object. """ bob = DummyInstrument('bob', gates=['one']) station = Station(bob) assert bob == station['bob'] bob.close() # 'bob' is closed, but it is still part of the station assert bob == station['bob'] # check that snapshot method executes without exceptions snapshot = station.snapshot() # check that 'bob's snapshot is not here (because 'bob' is closed, # hence it was ignored, and even removed from the station by # `snapshot_base` method) assert { 'instruments': {}, 'parameters': {}, 'components': {}, 'config': None, 'default_measurement': [] } == snapshot # check that 'bob' has been removed from the station with pytest.raises(KeyError, match='bob'): _ = station.components['bob'] # check that 'bob' has been removed from the station, again with pytest.raises(KeyError, match='Component bob is not part of the ' 'station'): station.remove_component('bob')