private void SetupOutputPipeline(IDAQController c, out IOutputData expectedOutput, out DAQOutputStream outStream)
        {
            string units      = "V";
            var    data       = Enumerable.Range(0, 1000).Select(i => new Measurement(i, units)).ToList();
            var    sampleRate = new Measurement(100, "Hz");
            var    config     = new Dictionary <string, object>();

            expectedOutput = new OutputData(data,
                                            sampleRate, true);

            outStream            = new DAQOutputStream("OUT");
            outStream.SampleRate = sampleRate;
            outStream.MeasurementConversionTarget = units;
            (c as IMutableDAQController).AddStream(outStream);

            var outQueue = new Dictionary <IDAQOutputStream, Queue <IOutputData> >();

            outQueue[outStream] = new Queue <IOutputData>();
            outQueue[outStream].Enqueue(expectedOutput);

            TestDevice dev = new TestDevice("OUT-DEVICE", outQueue);

            dev.BindStream(outStream);
            dev.MeasurementConversionTarget = units;
        }
        public void ShouldNotApplyBackgroundToRunningStreams()
        {
            const string units = "V";
            const MultiClampInterop.OperatingMode vclampMode = MultiClampInterop.OperatingMode.VClamp;
            const MultiClampInterop.OperatingMode iclampMode = MultiClampInterop.OperatingMode.IClamp;


            var c  = new Controller();
            var mc = new FakeMulticlampCommander();

            var vclampBackground = new Measurement(2, -3, units);

            var background = new Dictionary <MultiClampInterop.OperatingMode, IMeasurement>()
            {
                { vclampMode, vclampBackground }
            };

            var dataVClamp = new MultiClampInterop.MulticlampData()
            {
                OperatingMode = vclampMode,
                ExternalCommandSensitivity      = 2.5,
                ExternalCommandSensitivityUnits = MultiClampInterop.ExternalCommandSensitivityUnits.V_V
            };


            var daq = new DynamicMock(typeof(IDAQController));
            var s   = new DAQOutputStream("test", daq.MockInstance as IDAQController);


            var mcd = new MultiClampDevice(mc, c, background);

            mcd.BindStream(s);

            daq.ExpectAndReturn("get_Running", true);
            daq.ExpectNoCall("ApplyStreamBackground");

            mc.FireParametersChanged(DateTimeOffset.Now, dataVClamp);

            daq.Verify();
        }
        private void SetupInputPipeline(IDAQController c, out IOutputData expectedOutput, out DAQOutputStream outStream, out DAQInputStream inStream)
        {
            SetupOutputPipeline(c, out expectedOutput, out outStream);

            inStream            = new DAQInputStream("IN");
            inStream.SampleRate = outStream.SampleRate;
            outStream.Device.BindStream(inStream);
            inStream.MeasurementConversionTarget = outStream.MeasurementConversionTarget;
        }