64 lines
2.1 KiB
C#
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");
|
|
}
|
|
}
|
|
} |