def test_from_equipment( self, num_sources: int, source_name: str, exception: Exception ): """Test the `from_equipment` factory and its exceptions. Parameters ---------- num_sources : Number of sources of the generated equipment source_name : Corresponding parameter of `from_equipment` exception : Expected exception """ sources = [ SignalSource(**self._default_source_kwargs({"name": f"source_{i}"})) for i in range(num_sources) ] equipment = MeasurementEquipment("Equipment", sources=sources) if exception is not None: with pytest.raises(exception): MeasurementChain.from_equipment( name="name", equipment=equipment, source_name=source_name ) else: MeasurementChain.from_equipment( name="name", equipment=equipment, source_name=source_name )
def test_get_equipment(self, signal_source, exception): """Test the `get_equipment` function and their exceptions. Parameters ---------- signal_source : Corresponding function parameter exception : Expected exception """ src_eq = MeasurementEquipment( "Source Eq", sources=[SignalSource(**self._default_source_kwargs())] ) tf_eq = MeasurementEquipment( "Transformation_eq", transformations=[ self._default_transformation({"name": "transformation_1"}) ], ) mc = MeasurementChain.from_equipment("Chain", src_eq) mc.add_transformation_from_equipment(tf_eq) mc.create_transformation("transformation_2", None, output_signal_unit="A") if exception is not None: with pytest.raises(exception): mc.get_equipment(signal_source=signal_source) else: mc.get_equipment(signal_source=signal_source)
def measurement_chain_with_equipment() -> MeasurementChain: """Get a default measurement chain with attached equipment.""" source = SignalSource( "Current measurement", output_signal=Signal(signal_type="analog", units="V"), error=Error(Q_(1, "percent")), ) ad_conversion = SignalTransformation( "AD conversion current measurement", error=Error(Q_(0, "percent")), func=MathematicalExpression(expression="a*x+b", parameters=dict(a=Q_(1, "1/V"), b=Q_(1, ""))), ) calibration = SignalTransformation( "Current measurement calibration", error=Error(Q_(1.2, "percent")), func=MathematicalExpression(expression="a*x+b", parameters=dict(a=Q_(1, "A"), b=Q_(1, "A"))), ) eq_source = MeasurementEquipment( name="Source Equipment", sources=[source], ) eq_ad_conversion = MeasurementEquipment(name="AD Equipment", transformations=[ad_conversion]) eq_calibration = MeasurementEquipment(name="Calibration Equipment", transformations=[calibration]) mc = MeasurementChain.from_equipment("Measurement chain", eq_source) mc.add_transformation_from_equipment(eq_ad_conversion) mc.add_transformation_from_equipment(eq_calibration) return mc