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));
        }