public void ShouldThrowExceptionConvertingInputGivenEmptyParametersQueue() { var c = new Controller(); var mc = new FakeMulticlampCommander(); var mcd = new MultiClampDevice(mc, c, UNUSED_BACKGROUND_DICTIONARY); mcd.BindStream(new DAQInputStream(UNUSED_NAME)); Assert.Throws <MultiClampDeviceException>(() => mcd.ConvertInput(new Measurement(0, "V"), DateTimeOffset.Now)); }
public void ShouldThrowExceptionConvertingInputGivenNoParametersForTime() { var c = new Controller(); var mc = new FakeMulticlampCommander(); var mcd = new MultiClampDevice(mc, c, UNUSED_BACKGROUND_DICTIONARY); mcd.BindStream(new DAQInputStream(UNUSED_NAME)); mc.FireParametersChanged(DateTimeOffset.Now.Subtract(TimeSpan.FromHours(1)), new MultiClampInterop.MulticlampData()); Assert.Throws <MultiClampDeviceException>(() => mcd.ConvertInput(new Measurement(0, "V"), DateTimeOffset.Now)); }
public void ShouldThrowForUnexpectedScaleFactorUnitsWhenExpectingVolts( [Values(new object[] { MultiClampInterop.ScaleFactorUnits.V_A, MultiClampInterop.ScaleFactorUnits.V_mA, MultiClampInterop.ScaleFactorUnits.V_nA, MultiClampInterop.ScaleFactorUnits.V_uA, MultiClampInterop.ScaleFactorUnits.V_pA })] MultiClampInterop.ScaleFactorUnits scaleFactorUnits, [Values(new object[] { MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_V_MEMBx10, MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_V_MEMBx100, MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_V_CMD_EXT, MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_V_CMD_MEMB, MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_V_CMD_SUMMED })] MultiClampInterop.SignalIdentifier signalIdentifier ) { MultiClampInterop.OperatingMode mode; switch (signalIdentifier) { case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_V_CMD_EXT: case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_V_CMD_MEMB: case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_V_CMD_SUMMED: mode = MultiClampInterop.OperatingMode.VClamp; break; case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_V_MEMBx10: case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_V_MEMBx100: mode = MultiClampInterop.OperatingMode.IClamp; break; default: throw new ArgumentOutOfRangeException("signalIdentifier"); } var data = new MultiClampInterop.MulticlampData() { ScaledOutputSignal = signalIdentifier, ScaleFactorUnits = scaleFactorUnits, OperatingMode = mode }; Assert.Throws <MultiClampDeviceException>(() => MultiClampDevice.ConvertInput(UNUSED_MEASUREMENT, data), scaleFactorUnits + " is not an allowed unit conversion for scaled output mode."); }
public void ShouldThrowForUnexpectedScaleFactorUnitsWhenExpectingAmps( [Values(new object[] { MultiClampInterop.ScaleFactorUnits.V_mV, MultiClampInterop.ScaleFactorUnits.V_uV, MultiClampInterop.ScaleFactorUnits.V_V })] MultiClampInterop.ScaleFactorUnits scaleFactorUnits, [Values(new object[] { MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_I_MEMB, MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_I_CMD_MEMB, MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_I_CMD_SUMMED })] MultiClampInterop.SignalIdentifier signalIdentifier ) { var mc = new FakeMulticlampCommander(); MultiClampInterop.OperatingMode mode; switch (signalIdentifier) { case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_VC_GLDR_I_MEMB: mode = MultiClampInterop.OperatingMode.VClamp; break; case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_I_CMD_MEMB: case MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_I_CMD_SUMMED: mode = MultiClampInterop.OperatingMode.IClamp; break; default: throw new ArgumentOutOfRangeException("signalIdentifier"); } var data = new MultiClampInterop.MulticlampData() { ScaledOutputSignal = signalIdentifier, ScaleFactorUnits = scaleFactorUnits, OperatingMode = mode }; Assert.Throws <MultiClampDeviceException>( () => MultiClampDevice.ConvertInput(new Measurement(1.0m, "A"), data)); }
public void ShouldThrowExceptionConvertingInputGivenNoParametersForTime() { var c = new Controller(); var mc = new FakeMulticlampCommander(); var mcd = new MultiClampDevice(mc, c, UNUSED_BACKGROUND_DICTIONARY); mcd.BindStream(new DAQInputStream(UNUSED_NAME)); mc.FireParametersChanged(DateTimeOffset.Now.Subtract(TimeSpan.FromHours(1)), new MultiClampInterop.MulticlampData()); Assert.Throws<MultiClampDeviceException>(() => mcd.ConvertInput(new Measurement(0, "V"), DateTimeOffset.Now)); }
public void ShouldThrowExceptionConvertingInputGivenEmptyParametersQueue() { var c = new Controller(); var mc = new FakeMulticlampCommander(); var mcd = new MultiClampDevice(mc, c, UNUSED_BACKGROUND_DICTIONARY); mcd.BindStream(new DAQInputStream(UNUSED_NAME)); Assert.Throws<MultiClampDeviceException>(() => mcd.ConvertInput(new Measurement(0, "V"), DateTimeOffset.Now)); }
public void ShouldConvertInputUnitsInIClamp( [Values(MultiClampInterop.OperatingMode.IClamp, MultiClampInterop.OperatingMode.I0)] MultiClampInterop.OperatingMode operatingMode, [Values(new object[] { MultiClampInterop.ScaleFactorUnits.V_mV, MultiClampInterop.ScaleFactorUnits.V_uV, MultiClampInterop.ScaleFactorUnits.V_V })] MultiClampInterop.ScaleFactorUnits scaleFactorUnits, [Values(1, 2, 10, 20, 100)] double alpha ) { var data = new MultiClampInterop.MulticlampData() { OperatingMode = operatingMode, ScaleFactor = 2.5, ScaleFactorUnits = scaleFactorUnits, ScaledOutputSignal = MultiClampInterop.SignalIdentifier.AXMCD_OUT_PRI_IC_GLDR_V_MEMBx10, Alpha = alpha }; var cmd = new Measurement(20, -3, "V"); int exponent = 0; switch (scaleFactorUnits) { case MultiClampInterop.ScaleFactorUnits.V_V: exponent = -3; break; case MultiClampInterop.ScaleFactorUnits.V_mV: exponent = 0; break; case MultiClampInterop.ScaleFactorUnits.V_uV: exponent = 3; break; case MultiClampInterop.ScaleFactorUnits.V_A: exponent = -12; break; case MultiClampInterop.ScaleFactorUnits.V_mA: exponent = -9; break; case MultiClampInterop.ScaleFactorUnits.V_uA: exponent = -6; break; case MultiClampInterop.ScaleFactorUnits.V_nA: exponent = -3; break; case MultiClampInterop.ScaleFactorUnits.V_pA: exponent = 0; break; default: throw new ArgumentOutOfRangeException("scaleFactorUnits"); } var expected = new Measurement((cmd.QuantityInBaseUnit / (decimal)data.ScaleFactor / (decimal)alpha) * (decimal)Math.Pow(10, -exponent), -3, "V"); var actual = MultiClampDevice.ConvertInput(cmd, data); Assert.That(actual, Is.EqualTo(expected)); }
public void ShouldThrowExceptionConvertingInputGivenNoParametersForTime() { var c = new Controller(); var mc = new FakeMulticlampCommander(); var mcd = new MultiClampDevice(mc, c, UNUSED_BACKGROUND_DICTIONARY); mcd.BindStream(new DAQInputStream(UNUSED_NAME)); mc.FireParametersChanged(DateTimeOffset.Now.Subtract(TimeSpan.FromHours(1)), new MultiClampInterop.MulticlampData() { HardwareType = MultiClampInterop.HardwareType.MCTG_HW_TYPE_MC700B, ScaledOutputSignal700B = MultiClampInterop.SignalIdentifier700B.AXMCD_OUT_PRI_VC_GLDR_I_MEMB, }); Assert.Throws<MultiClampDeviceException>(() => mcd.ConvertInput(new Measurement(0, "V"), DateTimeOffset.Now)); }