public void Test_Last1() { var buffer = new CircularFifoBuffer <byte>(3); buffer.Write(Encoding.ASCII.GetBytes("ABCDE")); Assert.AreEqual('E', buffer.Last); }
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())); }
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); }
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())); }
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())); }
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 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); }
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()); }
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); }