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);
            }
        }
Exemple #14
0
        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. ");
        }