Example #1
0
        public void Test_Last1()
        {
            var buffer = new CircularFifoBuffer <byte>(3);

            buffer.Write(Encoding.ASCII.GetBytes("ABCDE"));
            Assert.AreEqual('E', buffer.Last);
        }
Example #2
0
        public static IEnumerable <IReadOnlyList <T> > MovingWindows <T>([NotNull] this IEnumerable <T> values, uint windowSize, double overlap)
        {
            if (windowSize <= 0)
            {
                throw new ArgumentException("window size must be positive");
            }
            if (overlap < 0 || overlap >= 1)
            {
                throw new ArgumentException("overlap must in range of [0, 1)");
            }
            var  overlapSize = Math.Min((uint)(windowSize * overlap), windowSize - 1);
            var  windowStep  = windowSize - overlapSize;
            var  samples     = new CircularFifoBuffer <T>(windowSize);
            uint counter     = 0;

            foreach (var value in values)
            {
                samples.Add(value);
                counter++;
                if (samples.Count >= windowSize && counter >= windowStep)
                {
                    counter = 0;
                    yield return(samples);
                }
            }
        }
        public void Test_Circular_FirstItem()
        {
            var ringBuffer = new CircularFifoBuffer<byte>(5);

            ringBuffer.Write(GetBytes("ABCDEFG"));

            Assert.AreEqual("CDEFG", GetString(ringBuffer.ReadToArray()));
        }
Example #4
0
        public void Test_Circular_FirstItem()
        {
            var ringBuffer = new CircularFifoBuffer <byte>(5);

            ringBuffer.Write(GetBytes("ABCDEFG"));

            Assert.AreEqual("CDEFG", GetString(ringBuffer.ReadToArray()));
        }
 public void OrderOkUnderCapacity()
 {
     var buf = new CircularFifoBuffer<int>(10);
     buf.Enqueue(1);
     buf.Enqueue(2);
     buf.Enqueue(3);
     Assert.Equal(3, buf.First());
     Assert.Equal(1, buf.Last());
 }
 public void LengthOkUnderCapacity()
 {
     var buf = new CircularFifoBuffer<int>(10);
     buf.Enqueue(1);
     buf.Enqueue(2);
     buf.Enqueue(3);
     Assert.Equal(3, buf.Length);
     Assert.Equal(buf.Count(), buf.Length);
 }
Example #7
0
        public void Test_Circular1_Enumerator()
        {
            var ringBuffer = new CircularFifoBuffer <byte>(5);

            ringBuffer.Write(GetBytes("ABC"));
            ringBuffer.Write(GetBytes("DE"));
            ringBuffer.Write(GetBytes("F"));

            Assert.AreEqual("BCDEF", GetString(ringBuffer.ToArray()));
        }
        public void Test_Circular_Massive1()
        {
            var ringBuffer = new CircularFifoBuffer<byte>(5);

            ringBuffer.Write(GetBytes("ABC"));
            ringBuffer.Write(GetBytes("DE"));
            ringBuffer.Write(GetBytes("1234567890"));

            Assert.AreEqual("67890", GetString(ringBuffer.ReadToArray()));
        }
        public void Test_Circular1_Enumerator()
        {
            var ringBuffer = new CircularFifoBuffer<byte>(5);

            ringBuffer.Write(GetBytes("ABC"));
            ringBuffer.Write(GetBytes("DE"));
            ringBuffer.Write(GetBytes("F"));

            Assert.AreEqual("BCDEF", GetString(ringBuffer.ToArray()));
        }
Example #10
0
        public void Test_Circular_Massive2()
        {
            var ringBuffer = new CircularFifoBuffer <byte>(5);

            ringBuffer.Write(GetBytes("ABC"));
            ringBuffer.Write(GetBytes("DE"));
            ringBuffer.Write(GetBytes("123456789"));

            Assert.AreEqual("56789", GetString(ringBuffer.ReadToArray()));
        }
Example #11
0
        public void Test_Single_Size_Circular_Buffer()
        {
            var ringBuffer = new CircularFifoBuffer <byte>(1);

            for (var i = 0; i < 100; i++)
            {
                ringBuffer.Write(GetBytes("ABC"));
                Assert.AreEqual("C", GetString(ringBuffer.ReadToArray()));
                ringBuffer.Write(GetBytes("D"));
                Assert.AreEqual("D", GetString(ringBuffer.ReadToArray()));
            }
        }
Example #12
0
        public void Test_Last3()
        {
            var buffer = new CircularFifoBuffer <byte>(3);

            buffer.Write(Encoding.ASCII.GetBytes("ABC"));
            buffer.Write(Encoding.ASCII.GetBytes("DE"));
            buffer.Read();
            buffer.Read();
            buffer.Read();
            buffer.Read();
            buffer.Read();
            var x = buffer.Last;
        }
        public void Test_Circular1_As_List()
        {
            var ringBuffer = new CircularFifoBuffer<byte>(5);

            ringBuffer.Write(GetBytes("ABC"));
            ringBuffer.Write(GetBytes("DE"));
            ringBuffer.Write(GetBytes("F"));

            Assert.AreEqual('B', ringBuffer[0]);
            Assert.AreEqual('C', ringBuffer[1]);
            Assert.AreEqual('D', ringBuffer[2]);
            Assert.AreEqual('E', ringBuffer[3]);
            Assert.AreEqual('F', ringBuffer[4]);

            Assert.AreEqual(5, ringBuffer.Count);
        }
Example #14
0
        public void Test_Circular1_As_List()
        {
            var ringBuffer = new CircularFifoBuffer <byte>(5);

            ringBuffer.Write(GetBytes("ABC"));
            ringBuffer.Write(GetBytes("DE"));
            ringBuffer.Write(GetBytes("F"));

            Assert.AreEqual('B', ringBuffer[0]);
            Assert.AreEqual('C', ringBuffer[1]);
            Assert.AreEqual('D', ringBuffer[2]);
            Assert.AreEqual('E', ringBuffer[3]);
            Assert.AreEqual('F', ringBuffer[4]);

            Assert.AreEqual(5, ringBuffer.Count);
        }
 public void LengthOkOverCapacity()
 {
     var buf = new CircularFifoBuffer<int>(10);
     buf.Enqueue(1);
     buf.Enqueue(2);
     buf.Enqueue(3);
     buf.Enqueue(4);
     buf.Enqueue(5);
     buf.Enqueue(6);
     buf.Enqueue(7);
     buf.Enqueue(8);
     buf.Enqueue(9);
     buf.Enqueue(10);
     buf.Enqueue(11);
     Assert.Equal(10, buf.Length);
     Assert.Equal(buf.Count(), buf.Length);
 }
 public void OrderOkOverCapacity()
 {
     var buf = new CircularFifoBuffer<int>(10);
     buf.Enqueue(1);
     buf.Enqueue(2);
     buf.Enqueue(3);
     buf.Enqueue(4);
     buf.Enqueue(5);
     buf.Enqueue(6);
     buf.Enqueue(7);
     buf.Enqueue(8);
     buf.Enqueue(9);
     buf.Enqueue(10);
     buf.Enqueue(11);
     buf.Enqueue(12);
     Assert.Equal(12, buf.First());
     Assert.Equal(3, buf.Last());
 }
Example #17
0
        public void EventDetectedUsingIGCFile(string path, string airfield, int landingAfterSeconds, AircraftTrackEventTypes evtType)
        {
            var beacons = IGCAircraftBeaconReader.ReadFromIGCFile(path, 0x0A000001); // simulate fifo collection
            var beaconsBuffer = new CircularFifoBuffer<AircraftBeaconSpeedAndTrack>(beacons.Count() - 4); // gice the circular buffer a chance to fill the internal buffer
            var events = new List<AircraftTrackEvent>();

            int i = 0;
            foreach (var beacon in beacons)
            {
                beaconsBuffer.Enqueue(new AircraftBeaconSpeedAndTrack(beacon));
                if (i++ % 5 == 0) // analyse with sliding window after some beacons - in normale use triggered by timer.
                {
                    var pseudoTimeEvalDateTime = beacon.PositionTimeUTC.AddSeconds(10);
                    beaconsBuffer.AnalyseSpeedAndTrack(pseudoTimeEvalDateTime, TimeSpan.FromSeconds(60));
                    events.AddRange(beaconsBuffer.DetectTrackEvents(pseudoTimeEvalDateTime, TimeSpan.FromSeconds(60), testAirfields[airfield]));
                }
            }

            var expectedDateTime = beacons.First().PositionTimeUTC + TimeSpan.FromSeconds(landingAfterSeconds);
            var expectedEvents = events.Distinct(new AircraftTrackEventComparer()).Where(e => e.EventType == evtType && e.EventDateTimeUTC == expectedDateTime);

            Assert.True(expectedEvents.Any());
        }
        public void Test_Last3()
        {
            var buffer = new CircularFifoBuffer<byte>(3);

            buffer.Write(Encoding.ASCII.GetBytes("ABC"));
            buffer.Write(Encoding.ASCII.GetBytes("DE"));
            buffer.Read();
            buffer.Read();
            buffer.Read();
            buffer.Read();
            buffer.Read();
            var x = buffer.Last;
        }
        public void Test_Single_Size_Circular_Buffer()
        {
            var ringBuffer = new CircularFifoBuffer<byte>(1);

            for (var i = 0; i < 100; i++)
            {
                ringBuffer.Write(GetBytes("ABC"));
                Assert.AreEqual("C", GetString(ringBuffer.ReadToArray()));
                ringBuffer.Write(GetBytes("D"));
                Assert.AreEqual("D", GetString(ringBuffer.ReadToArray()));
            }
        }
 public void CapacityOk()
 {
     var buf = new CircularFifoBuffer<int>(10);
     buf.Enqueue(1);
     Assert.Equal(10, buf.Capacity);
 }
        public void Test_Last2()
        {
            var buffer = new CircularFifoBuffer<byte>(3);

            buffer.Write(Encoding.ASCII.GetBytes("ABC"));
            buffer.Write(Encoding.ASCII.GetBytes("DE"));
            Assert.AreEqual('E', buffer.Last);
        }