Sic.Framework/UnitTest/MECF.Framework.Common.Test/MECF/Framework/Common/SicMath/TimeDomainArithmeticMeanFil...

64 lines
2.1 KiB
C#

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");
}
}
}