private static int ExponentForScaleFactorUnits(MultiClampInterop.ScaleFactorUnits scaleFactorUnits) { switch (scaleFactorUnits) { case MultiClampInterop.ScaleFactorUnits.V_V: return(0); case MultiClampInterop.ScaleFactorUnits.V_mV: return(-3); case MultiClampInterop.ScaleFactorUnits.V_uV: return(-6); case MultiClampInterop.ScaleFactorUnits.V_A: return(0); case MultiClampInterop.ScaleFactorUnits.V_mA: return(-3); case MultiClampInterop.ScaleFactorUnits.V_uA: return(-6); case MultiClampInterop.ScaleFactorUnits.V_nA: return(-9); case MultiClampInterop.ScaleFactorUnits.V_pA: return(-12); default: throw new ArgumentOutOfRangeException("scaleFactorUnits"); } }
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)); }
private static int DesiredUnitsExponentForScaleFactorUnits(MultiClampInterop.ScaleFactorUnits scaleFactorUnits) { switch (scaleFactorUnits) { case MultiClampInterop.ScaleFactorUnits.V_V: case MultiClampInterop.ScaleFactorUnits.V_mV: case MultiClampInterop.ScaleFactorUnits.V_uV: return(MEMBRANE_VOLTAGE_INPUT_EXPONENT); case MultiClampInterop.ScaleFactorUnits.V_A: case MultiClampInterop.ScaleFactorUnits.V_mA: case MultiClampInterop.ScaleFactorUnits.V_uA: case MultiClampInterop.ScaleFactorUnits.V_nA: case MultiClampInterop.ScaleFactorUnits.V_pA: return(MEMBRANE_CURRENT_INPUT_EXPONENT); default: throw new ArgumentOutOfRangeException("scaleFactorUnits"); } }
private static string UnitsForScaleFactorUnits(MultiClampInterop.ScaleFactorUnits scaleFactorUnits) { switch (scaleFactorUnits) { case MultiClampInterop.ScaleFactorUnits.V_V: case MultiClampInterop.ScaleFactorUnits.V_mV: case MultiClampInterop.ScaleFactorUnits.V_uV: return("V"); case MultiClampInterop.ScaleFactorUnits.V_A: case MultiClampInterop.ScaleFactorUnits.V_mA: case MultiClampInterop.ScaleFactorUnits.V_uA: case MultiClampInterop.ScaleFactorUnits.V_nA: case MultiClampInterop.ScaleFactorUnits.V_pA: return("A"); default: throw new ArgumentOutOfRangeException("scaleFactorUnits"); } }
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)); }