using System.Threading; using Xunit; namespace MECF.Framework.Common.SicMath.Tests { public class TimeDomainArithmeticMeanFilterTests { private IFilter _filterUnderTest; [Fact()] public void FilterEmptyBufferTest() { _filterUnderTest = new TimeDomainArithmeticMeanFilter(3); var output = _filterUnderTest.Filter(); Assert.True(double.IsNaN(output), "The output is not double.NaN"); } [Fact()] public void FilterZeroFilterDurationTest() { _filterUnderTest = new TimeDomainArithmeticMeanFilter(0); _filterUnderTest.Feed(1); _filterUnderTest.Feed(2); _filterUnderTest.Feed(3); var output = _filterUnderTest.Filter(); Assert.True(output == 3, $"The output {output} is not last value."); } [Fact()] public void FilterNormalTest() { _filterUnderTest = new TimeDomainArithmeticMeanFilter(3); _filterUnderTest.Feed(1); _filterUnderTest.Feed(2); _filterUnderTest.Feed(3); var output = _filterUnderTest.Filter(); Assert.True(output == 2, $"The output {output} is not 2."); } [Fact()] public void FilterIfContainDoubleNaNTest() { _filterUnderTest = new TimeDomainArithmeticMeanFilter(3); _filterUnderTest.Feed(1); _filterUnderTest.Feed(double.NaN); _filterUnderTest.Feed(3); var output = _filterUnderTest.Filter(); Assert.True(output == 2, $"The output {output} is not 2."); } [Fact()] public void FilterNormalWithFirstElementShouldBeRemovedTest() { _filterUnderTest = new TimeDomainArithmeticMeanFilter(1); _filterUnderTest.Feed(1); Thread.Sleep(1200); _filterUnderTest.Feed(2); _filterUnderTest.Feed(3); var output = _filterUnderTest.Filter(); Assert.True(output == 2.5, $"The output {output} is not 2.5"); } } }