Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
using Omika.Core.Domain.Exceptions;
|
||||
using Omika.Core.Domain.ValueObjects;
|
||||
|
||||
namespace Omika.Tests.Domain;
|
||||
|
||||
/// <summary>
|
||||
/// Tests de l'objet de valeur <see cref="DateTimeRange"/>.
|
||||
/// </summary>
|
||||
public class DateTimeRangeTests
|
||||
{
|
||||
[Fact]
|
||||
public void DateTimeRange_RejectsEndBeforeStart()
|
||||
{
|
||||
var start = new DateTime(2026, 1, 10, 9, 0, 0);
|
||||
var end = new DateTime(2026, 1, 10, 8, 0, 0);
|
||||
|
||||
Assert.Throws<DomainValidationException>(() => new DateTimeRange(start, end));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DateTimeRange_AcceptsEqualDates()
|
||||
{
|
||||
var instant = new DateTime(2026, 1, 10, 9, 0, 0);
|
||||
var range = new DateTimeRange(instant, instant);
|
||||
|
||||
Assert.Equal(TimeSpan.Zero, range.Duration);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DateTimeRange_ComputesDurationAndContains()
|
||||
{
|
||||
var range = new DateTimeRange(
|
||||
new DateTime(2026, 1, 10, 9, 0, 0),
|
||||
new DateTime(2026, 1, 10, 11, 30, 0));
|
||||
|
||||
Assert.Equal(TimeSpan.FromMinutes(150), range.Duration);
|
||||
Assert.True(range.Contains(new DateTime(2026, 1, 10, 10, 0, 0)));
|
||||
Assert.False(range.Contains(new DateTime(2026, 1, 10, 12, 0, 0)));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DateTimeRange_DetectsOverlap()
|
||||
{
|
||||
var a = new DateTimeRange(
|
||||
new DateTime(2026, 1, 10, 9, 0, 0),
|
||||
new DateTime(2026, 1, 10, 11, 0, 0));
|
||||
var b = new DateTimeRange(
|
||||
new DateTime(2026, 1, 10, 10, 0, 0),
|
||||
new DateTime(2026, 1, 10, 12, 0, 0));
|
||||
var c = new DateTimeRange(
|
||||
new DateTime(2026, 1, 10, 13, 0, 0),
|
||||
new DateTime(2026, 1, 10, 14, 0, 0));
|
||||
|
||||
Assert.True(a.Overlaps(b));
|
||||
Assert.False(a.Overlaps(c));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user