105 lines
2.7 KiB
C#
105 lines
2.7 KiB
C#
namespace Workflow.Tests.Condition;
|
|
|
|
using System.Text.Json;
|
|
using FluentAssertions;
|
|
using Workflow.Domain.Expressions.Comparators;
|
|
using Xunit;
|
|
|
|
public class RangeComparatorTests
|
|
{
|
|
private readonly RangeComparator _sut = new();
|
|
|
|
[Fact]
|
|
public void Compare_Between_NumericInRange_ReturnsTrue()
|
|
{
|
|
_sut.Compare(5, "between", "1,10").Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_NumericOutOfRange_ReturnsFalse()
|
|
{
|
|
_sut.Compare(15, "between", "1,10").Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_NumericAtLowerBound_ReturnsTrue()
|
|
{
|
|
_sut.Compare(1, "between", "1,10").Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_NumericAtUpperBound_ReturnsTrue()
|
|
{
|
|
_sut.Compare(10, "between", "1,10").Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_DateInRange_ReturnsTrue()
|
|
{
|
|
_sut.Compare("2024-06-15", "between", "2024-01-01,2024-12-31").Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_DateOutOfRange_ReturnsFalse()
|
|
{
|
|
_sut.Compare("2023-06-15", "between", "2024-01-01,2024-12-31").Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_JsonArray_ReturnsTrue()
|
|
{
|
|
var range = JsonDocument.Parse("[1, 100]").RootElement;
|
|
_sut.Compare(50, "between", range).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_JsonArrayDate_ReturnsTrue()
|
|
{
|
|
var range = JsonDocument.Parse("""["2024-01-01", "2024-12-31"]""").RootElement;
|
|
_sut.Compare("2024-06-15", "between", range).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_NonNumericNonDate_ReturnsFalse()
|
|
{
|
|
_sut.Compare("hello", "between", "a,z").Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_NullField_ReturnsFalse()
|
|
{
|
|
_sut.Compare(null, "between", "1,10").Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_InvalidRange_ReturnsFalse()
|
|
{
|
|
_sut.Compare(5, "between", "single").Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_UnsupportedOperator_ReturnsFalse()
|
|
{
|
|
_sut.Compare(5, "==", "1,10").Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_StringNumericField_ReturnsTrue()
|
|
{
|
|
_sut.Compare("5", "between", "1,10").Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Between_JsonDateAtBound_ReturnsTrue()
|
|
{
|
|
var range = JsonDocument.Parse("""["2024-01-01", "2024-12-31"]""").RootElement;
|
|
_sut.Compare("2024-01-01", "between", range).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void SupportedOperators_ContainsBetween()
|
|
{
|
|
_sut.SupportedOperators.Should().Contain("between");
|
|
}
|
|
}
|