public void ShouldBitShiftAndMergePulledOutputData() { var controller = new NIDAQController(); var s = new NIDigitalDAQOutputStream("OUT", controller); controller.SampleRate = new Measurement(10000, 1, "Hz"); TimeSpan duration = TimeSpan.FromSeconds(0.5); for (ushort bitPosition = 1; bitPosition < 32; bitPosition += 2) { var dataQueue = new Dictionary<IDAQOutputStream, Queue<IOutputData>>(); dataQueue[s] = new Queue<IOutputData>(); var data = new OutputData(Enumerable.Range(0, 10000).Select(i => new Measurement(i % 2, Measurement.UNITLESS)).ToList(), s.SampleRate, false); dataQueue[s].Enqueue(data.SplitData(duration).Head); dataQueue[s].Enqueue(data.SplitData(duration).Head); TestDevice dev = new TestDevice("OUT-DEVICE" + bitPosition, dataQueue); dev.BindStream(s); s.BitPositions[dev] = bitPosition; } var expected = Enumerable.Range(0, 10000).Select(i => new Measurement((long)(i % 2 * 0xaaaaaaaa), Measurement.UNITLESS)).ToList(); var pull1 = s.PullOutputData(duration); Assert.AreEqual(expected, pull1.Data); var pull2 = s.PullOutputData(duration); Assert.AreEqual(expected, pull2.Data); }
public void ShouldBitShiftAndMergeBackground() { var controller = new NIDAQController(); var s = new NIDigitalDAQOutputStream("OUT", controller); controller.SampleRate = new Measurement(10000, 1, "Hz"); for (ushort bitPosition = 1; bitPosition < 32; bitPosition += 2) { TestDevice dev = new TestDevice { Background = new Measurement(1, Measurement.UNITLESS) }; dev.BindStream(s); s.BitPositions[dev] = bitPosition; } ulong q = 0xaaaaaaaa; var expected = new Measurement((long)q, Measurement.UNITLESS); Assert.AreEqual(expected, s.Background); }