49 lines
1.6 KiB
C#
49 lines
1.6 KiB
C#
using Jiaowu.Api.Infrastructure.AcademicCalendar;
|
|
|
|
namespace Jiaowu.Api.Tests;
|
|
|
|
public sealed class HolidayCnRangesTests
|
|
{
|
|
[Fact]
|
|
public void Group_merges_only_consecutive_days_with_the_same_name_and_status()
|
|
{
|
|
var ranges = HolidayCnRanges.Group(
|
|
[
|
|
new HolidayCnDay("国庆节", new DateOnly(2026, 10, 1), true),
|
|
new HolidayCnDay("国庆节", new DateOnly(2026, 10, 2), true),
|
|
new HolidayCnDay("国庆节", new DateOnly(2026, 10, 3), true),
|
|
new HolidayCnDay("国庆节", new DateOnly(2026, 10, 4), false),
|
|
new HolidayCnDay("国庆节", new DateOnly(2026, 10, 5), true),
|
|
new HolidayCnDay("国庆节", new DateOnly(2026, 10, 7), true)
|
|
]);
|
|
|
|
Assert.Collection(
|
|
ranges,
|
|
range =>
|
|
{
|
|
Assert.Equal("国庆节", range.Name);
|
|
Assert.Equal(new DateOnly(2026, 10, 1), range.StartsOn);
|
|
Assert.Equal(new DateOnly(2026, 10, 3), range.EndsOn);
|
|
Assert.True(range.IsOffDay);
|
|
},
|
|
range =>
|
|
{
|
|
Assert.Equal(new DateOnly(2026, 10, 4), range.StartsOn);
|
|
Assert.Equal(range.StartsOn, range.EndsOn);
|
|
Assert.False(range.IsOffDay);
|
|
},
|
|
range =>
|
|
{
|
|
Assert.Equal(new DateOnly(2026, 10, 5), range.StartsOn);
|
|
Assert.Equal(range.StartsOn, range.EndsOn);
|
|
Assert.True(range.IsOffDay);
|
|
},
|
|
range =>
|
|
{
|
|
Assert.Equal(new DateOnly(2026, 10, 7), range.StartsOn);
|
|
Assert.Equal(range.StartsOn, range.EndsOn);
|
|
Assert.True(range.IsOffDay);
|
|
});
|
|
}
|
|
}
|