public void CombinesParameters() { var measurements = new List<IMeasurement> { new Measurement(1, "V") }; var data = new OutputData(measurements, new Measurement(1, "Hz"), false); var s1 = new RenderedStimulus("stim1", new Dictionary<string, object>() { {"key1", "value"}, {"key2", 5} }, data); var s2 = new RenderedStimulus("stim2", new Dictionary<string, object>() { {"key1", "value"}, {"key2", 2}, {"key3", 0} }, data); var combine = new CombinedStimulus("CombinedStimulus", new Dictionary<string, object>(), new List<IStimulus>() {s1, s2}, CombinedStimulus.Add); var expected = new Dictionary<string, object>(); expected["stim0_stimulusID"] = "stim1"; expected["stim0_key1"] = "value"; expected["stim0_key2"] = 5; expected["stim1_stimulusID"] = "stim2"; expected["stim1_key1"] = "value"; expected["stim1_key2"] = 2; expected["stim1_key3"] = 0; Assert.That(combine.Parameters, Is.EqualTo(expected)); }
public void CombinesDataBlocks( [Values(100, 500, 1000, 5000)] double blockMilliseconds, [Values(5000, 10000)] double sampleRateHz, [Values(1, 4)] int numStim ) { var parameters = new Dictionary<string, object>(); var sampleRate = new Measurement((decimal)sampleRateHz, "Hz"); var data = new List<IOutputData>(); var stimuli = new List<IStimulus>(); for (int i = 0; i < numStim; i++) { IOutputData d = new OutputData(Enumerable.Range(0, (int)TimeSpan.FromSeconds(3).Samples(new Measurement((decimal)sampleRateHz, "Hz"))) .Select(j => new Measurement(j, "units")).ToList(), sampleRate, false); data.Add(d); stimuli.Add(new RenderedStimulus((string)"RenderedStimulus" + i, (IDictionary<string, object>)parameters, d)); } var combined = new CombinedStimulus("CombinedStimulus", new Dictionary<string, object>(), stimuli, CombinedStimulus.Add); var blockSpan = TimeSpan.FromMilliseconds(blockMilliseconds); IEnumerator<IOutputData> iter = combined.DataBlocks(blockSpan).GetEnumerator(); while (iter.MoveNext()) { IOutputData expectedData = null; foreach (var d in data.ToList()) { var cons = d.SplitData(blockSpan); data[data.IndexOf(d)] = cons.Rest; expectedData = expectedData == null ? cons.Head : expectedData.Zip(cons.Head, (m1, m2) => new Measurement(m1.QuantityInBaseUnits + m2.QuantityInBaseUnits, 0, m1.BaseUnits)); } Assert.That(iter.Current.Duration, Is.EqualTo(expectedData.Duration)); Assert.That(iter.Current.Data, Is.EqualTo(expectedData.Data)); } }
public void HoldsStimulusID() { var parameters = new Dictionary<string, object>(); const string stimID = "my.ID"; var s = new CombinedStimulus(stimID, new Dictionary<string, object>(), new List<IStimulus>(), CombinedStimulus.Add); Assert.That(s.StimulusID, Is.EqualTo(stimID)); }
public void MarksAsNotLastIfMoreBlocks() { var parameters = new Dictionary<string, object>(); var sampleRate = new Measurement(1000, "Hz"); IOutputData data = new OutputData(Enumerable.Range(0, 1000).Select(i => new Measurement(i, "units")).ToList(), sampleRate, true); var s1 = new RenderedStimulus("stim1", new Dictionary<string, object>(), data); var s2 = new RenderedStimulus("stim2", new Dictionary<string, object>(), data); var combine = new CombinedStimulus("CombinedStimulus", new Dictionary<string, object>(), new List<IStimulus>() { s1, s2 }, CombinedStimulus.Add); var block = TimeSpan.FromMilliseconds(100); IEnumerator<IOutputData> iter = combine.DataBlocks(block).GetEnumerator(); Assert.True(iter.MoveNext()); Assert.False(iter.Current.IsLast); }