public void EventDataSetStream_AddSample_SimpleAdd() { EventDataSetStream testStream = new EventDataSetStream(); testStream.AddSample(0, 5); Assert.AreEqual(5, testStream.GetValue(0), "Value of added sample was not correctly retrieved. "); }
public void EventDataSetStream_GetValue_ReturnsLastValueOnTooLargeFrame() { EventDataSetStream testStream = new EventDataSetStream(); testStream.AddSample(5, 5); Assert.AreEqual(5, testStream.GetValue(100), "Final contained sample was not returned on too large query frame."); }
public void EventDataSetSTream_HasDataAfterFrame_ReturnsTrueOnLastSampleNonZero() { EventDataSetStream testStream = new EventDataSetStream(); testStream.AddSample(0, 1); testStream.AddSample(2, 1); Assert.AreEqual(true, testStream.HasDataAfterFrame(1), "HasDataAfterFrame returned false when there should be a sample with data following frame 1."); }
public void EventDataSetStream_HasDataAfterFrame_ReturnsFalseOnLastSampleEmptyData() { EventDataSetStream testStream = new EventDataSetStream(); testStream.AddSample(0, 1); testStream.AddSample(5, 0); Assert.AreEqual(false, testStream.HasDataAfterFrame(6), "HasDataAfterFrame returned true when last sample's data is empty and queried frame is past the last sample."); }
public void EventDataSetStream_GetValue_ReturnsZeroOnInvalidFrame() { EventDataSetStream testStream = new EventDataSetStream(); Assert.AreEqual(0, testStream.GetValue(0), "Expected default value of 0 because there are no samples currently in EventDataStream."); testStream.AddSample(0, 1); Assert.AreEqual(0, testStream.GetValue(-1), "Expected default value because there is no sample with frame -1."); }
public void EventDataSetStream_AddSample_OutOfOrderFrameFails() { EventDataSetStream testStream = new EventDataSetStream(); testStream.AddSample(5, 5); testStream.AddSample(0, 0); Assert.AreEqual(1, testStream.samples.Count, "Sample still added to stream despite the fact that the event should have been ignored."); }
void AddAlternativeSegments(EventDataSetStream stream, int data1, int data2, int startFrame, int frameIncrement, int count) { for (int i = 0; i < count; i++) { int sample = (i % 2) == 0 ? data1 : data2; stream.AddSample(startFrame + i * frameIncrement, sample); } }
public void EventDataSetStream_AddSample_ReplaceValueOnDuplicateAdd() { EventDataSetStream testStream = new EventDataSetStream(); testStream.AddSample(0, 5); testStream.AddSample(0, 6); Assert.AreEqual(6, testStream.GetValue(0), "Sample was not properly replaced. "); Assert.AreEqual(1, testStream.samples.Count, "Sample was not properly replaced."); }
public void EventDataSetStream_GetValue_ReturnsCorrectValueOnMultipleCalls() { EventDataSetStream testStream = new EventDataSetStream(); testStream.AddSample(0, 0); testStream.AddSample(1, 1); testStream.AddSample(2, 2); Assert.AreEqual(2, testStream.GetValue(2), "Incorrect value retrieved by GetValue."); Assert.AreEqual(1, testStream.GetValue(1), "Incorrect value retrieved by GetValue."); Assert.AreEqual(0, testStream.GetValue(0), "Incorrect value retrieved by GetValue."); }
public void LastSampleBeforeLastEndFrame_LastSegmentSpansToEndOfFrame() { EventDataSetStream stream = new EventDataSetStream(); stream.AddSample(50, 99); GraphUtility.Segment[] segs = GraphUtility.IterateSegments(stream, 0, 100, IsContinuationOfSegment).ToArray(); Assert.AreEqual(1, segs.Length); Assert.AreEqual(50, segs[0].frameStart); Assert.AreEqual(100, segs[0].frameEnd); Assert.AreEqual(99, segs[0].data); }
public void FirstSampleBeforeStartFrame_IsFirstSegmentAndCropped() { EventDataSetStream stream = new EventDataSetStream(); stream.AddSample(0, 99); GraphUtility.Segment[] segs = GraphUtility.IterateSegments(stream, 25, 100, IsContinuationOfSegment).ToArray(); Assert.AreEqual(1, segs.Length); Assert.AreEqual(25, segs[0].frameStart); Assert.AreEqual(100, segs[0].frameEnd); Assert.AreEqual(99, segs[0].data); }
public void SegmentBeforeStartFrame_IsIgnored() { EventDataSetStream stream = new EventDataSetStream(); stream.AddSample(0, 99); stream.AddSample(50, 0); GraphUtility.Segment[] segs = GraphUtility.IterateSegments(stream, 100, 200, IsContinuationOfSegment).ToArray(); Assert.AreEqual(1, segs.Length); Assert.AreEqual(0, segs[0].data); Assert.AreEqual(100, segs[0].frameStart); Assert.AreEqual(200, segs[0].frameEnd); }
public void MultipleSamples_SegmentPerSample() { EventDataSetStream stream = new EventDataSetStream(); const int kSampleCount = 20; const int kFrameIncrement = 100; AddAlternativeSegments(stream, -99, 99, 0, kFrameIncrement, kSampleCount); GraphUtility.Segment[] segs = GraphUtility.IterateSegments(stream, 0, kSampleCount * kFrameIncrement, IsContinuationOfSegment).ToArray(); Assert.AreEqual(kSampleCount, segs.Length); for (int i = 0; i < segs.Length; i++) { Assert.AreEqual(segs[i].data, (i % 2 == 0) ? -99 : 99); Assert.AreEqual(segs[i].frameStart, i * kFrameIncrement); Assert.AreEqual(segs[i].frameEnd, (i + 1) * kFrameIncrement); } }
internal static IEnumerable <Segment> IterateSegments(EventDataSetStream stream, int minFrame, int maxFrame, IsContinuationOfSegmentDelegate segmentCallback) { if (stream.samples.Count > 0) { // find last visible event. This can be the event that is right before the minFrame int segStartIdx; for (segStartIdx = stream.samples.Count - 1; segStartIdx > 0; segStartIdx--) { if (stream.samples[segStartIdx].frame < minFrame) { break; } } int curIdx = segStartIdx + 1; for (; curIdx < stream.samples.Count; curIdx++) { // keep iterating samples until the callback tells us this should be reported as a new segment if (segmentCallback(stream.samples[segStartIdx].data, stream.samples[curIdx].data)) { Segment segment; segment.frameStart = Math.Max(stream.samples[segStartIdx].frame, minFrame); segment.frameEnd = stream.samples[curIdx].frame; segment.data = stream.samples[segStartIdx].data; yield return(segment); // start working on a new segment from the current location segStartIdx = curIdx; } } // close off the last segment all the way to the end of the maxFrame Segment lastSegment; lastSegment.frameStart = Math.Max(stream.samples[segStartIdx].frame, minFrame); lastSegment.frameEnd = maxFrame; lastSegment.data = stream.samples[segStartIdx].data; yield return(lastSegment); } }
public override void Draw(EventDataSet dataSet, Rect rect, int startFrame, int frameCount, int inspectFrame, bool expanded, Material material, int maxValue) { if (dataSet == null) { return; } int endFrame = startFrame + frameCount; EventDataSetStream refStream = dataSet.GetStream(Stream); if (refStream != null) { foreach (GraphUtility.Segment s in GraphUtility.IterateSegments(refStream, startFrame, endFrame, IsContinuationOfSegment)) { if (s.data != 0) { float x = rect.xMin + GraphUtility.ValueToPixel(s.frameStart, startFrame, endFrame, rect.width); float w = (rect.xMin + GraphUtility.ValueToPixel(s.frameEnd, startFrame, endFrame, rect.width)) - x; EditorGUI.DrawRect(new Rect(x, rect.yMin, w, rect.height), GraphColor); } } } EventDataSetStream loadStream = dataSet.GetStream(m_LoadStatusStream); if (loadStream != null) { foreach (GraphUtility.Segment s in GraphUtility.IterateSegments(loadStream, startFrame, endFrame, IsContinuationOfSegment)) { if (s.data == 0) { float x = rect.xMin + GraphUtility.ValueToPixel(s.frameStart, startFrame, endFrame, rect.width); float w = (rect.xMin + GraphUtility.ValueToPixel(s.frameEnd, startFrame, endFrame, rect.width)) - x; EditorGUI.DrawRect(new Rect(x, rect.yMin, w, rect.height), m_LoadColor); } } } }
public void EventDataSetStream_HasDataAfterFrame_ReturnsFalseOnNoSamples() { EventDataSetStream testStream = new EventDataSetStream(); Assert.AreEqual(false, testStream.HasDataAfterFrame(5), "Should have returned true since no samples have been added to the stream. "); }