Skip to content

Commit

Permalink
fix: update csharp tests for scheduling
Browse files Browse the repository at this point in the history
  • Loading branch information
cmgriffing committed Feb 27, 2024
1 parent 78273af commit 7636438
Show file tree
Hide file tree
Showing 2 changed files with 269 additions and 57 deletions.
292 changes: 254 additions & 38 deletions clients/csharp/Vexilla.Client.Tests/SchedulerTest.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using NUnit.Framework;
using System.Text.Json;

namespace Vexilla.Client.Tests
{
Expand All @@ -25,13 +26,85 @@ public void TestSchedulerActiveNone()
}

[Test]
public void TestSchedulerActiveStartEnd()
public void TestSchedulerActiveStartEndSingleDay()
{
var now = DateTimeOffset.UtcNow;
var zeroDay = DateTimeOffset.FromUnixTimeMilliseconds(0);

for(int hour = 0; hour < 24; hour++) {

var mockedNow = new DateTimeOffset(
now.Year,
now.Month,
now.Day,
hour,
0,
0,
0,
TimeSpan.Zero
);

var zeroDayWithMockedTime = new DateTimeOffset(
zeroDay.Year,
zeroDay.Month,
zeroDay.Day,
hour,
0,
0,
0,
TimeSpan.Zero
);

var beforeSchedule = new Schedule
{
Start = mockedNow.ToUnixTimeMilliseconds(),
End = mockedNow.ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.StartEnd,
StartTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(3).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActiveWithNow(beforeSchedule,
ScheduleType.Global, mockedNow));

var duringSchedule = new Schedule
{
Start = mockedNow.ToUnixTimeMilliseconds(),
End = mockedNow.ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.StartEnd,
StartTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds()
};

Assert.True(Scheduler.IsScheduleActiveWithNow(duringSchedule,
ScheduleType.Global, mockedNow));

var afterSchedule = new Schedule
{
Start = mockedNow.ToUnixTimeMilliseconds(),
End = mockedNow.ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.StartEnd,
StartTime = zeroDayWithMockedTime.AddHours(-3).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActiveWithNow(afterSchedule,
ScheduleType.Global, mockedNow));
}
}

[Test]
public void TestSchedulerActiveStartEndMultiDay()
{
var now = DateTimeOffset.Now;
var zeroDay = DateTimeOffset.FromUnixTimeMilliseconds(0);

for(int hour = 0; hour < 24; hour++) {

var mocked_now = new DateTimeOffset(
var mockedNow = new DateTimeOffset(
now.Year,
now.Month,
now.Day,
Expand All @@ -42,53 +115,66 @@ public void TestSchedulerActiveStartEnd()
TimeSpan.Zero
);

var zeroDayWithMockedTime = new DateTimeOffset(
zeroDay.Year,
zeroDay.Month,
zeroDay.Day,
hour,
0,
0,
0,
TimeSpan.Zero
);

var beforeSchedule = new Schedule
{
Start = mocked_now.AddDays(1).ToUnixTimeMilliseconds(),
End = mocked_now.AddDays(2).ToUnixTimeMilliseconds(),
Start = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(2).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.StartEnd,
StartTime = 0,
EndTime = 0
StartTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(3).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActive(beforeSchedule,
ScheduleType.Global));
Assert.False(Scheduler.IsScheduleActiveWithNow(beforeSchedule,
ScheduleType.Global, mockedNow));

var duringSchedule = new Schedule
{
Start = mocked_now.AddDays(-1).ToUnixTimeMilliseconds(),
End = mocked_now.AddDays(1).ToUnixTimeMilliseconds(),
Start = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.StartEnd,
StartTime = 0,
EndTime = 0
StartTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds()
};

Assert.True(Scheduler.IsScheduleActive(duringSchedule,
ScheduleType.Global));
Assert.True(Scheduler.IsScheduleActiveWithNow(duringSchedule,
ScheduleType.Global, mockedNow));

var afterSchedule = new Schedule
{
Start = mocked_now.AddDays(-2).ToUnixTimeMilliseconds(),
End = mocked_now.AddDays(-1).ToUnixTimeMilliseconds(),
Start = mockedNow.AddDays(-2).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.StartEnd,
StartTime = 0,
EndTime = 0
StartTime = zeroDayWithMockedTime.AddHours(-3).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActive(afterSchedule,
ScheduleType.Global));
Assert.False(Scheduler.IsScheduleActiveWithNow(afterSchedule,
ScheduleType.Global, mockedNow));
}
}

[Test]
public void TestSchedulingActiveDaily()
public void TestSchedulingActiveDailySingleDay()
{
var now = DateTimeOffset.Now;
var zeroDay = DateTimeOffset.FromUnixTimeMilliseconds(0);

for(int hour = 0; hour < 24; hour++) {
var mocked_now = new DateTimeOffset(
var mockedNow = new DateTimeOffset(
now.Year,
now.Month,
now.Day,
Expand All @@ -99,46 +185,176 @@ public void TestSchedulingActiveDaily()
TimeSpan.Zero
);

var zeroDayWithMockedTime = new DateTimeOffset(
zeroDay.Year,
zeroDay.Month,
zeroDay.Day,
hour,
0,
0,
0,
TimeSpan.Zero
);

var beforeWholeSchedule = new Schedule
{
Start = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(3).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActiveWithNow(beforeWholeSchedule,
ScheduleType.Global, mockedNow));

var beforeDaySchedule = new Schedule
{
Start = now.AddDays(-1).ToUnixTimeMilliseconds(),
End = now.AddDays(1).ToUnixTimeMilliseconds(),
Start = mockedNow.ToUnixTimeMilliseconds(),
End = mockedNow.ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = mocked_now.AddHours(1).ToUnixTimeMilliseconds(),
EndTime = mocked_now.AddHours(3).ToUnixTimeMilliseconds()
StartTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(3).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActiveWithNow(beforeDaySchedule,
ScheduleType.Global, mocked_now));

ScheduleType.Global, mockedNow));

var duringSchedule = new Schedule
{
Start = now.AddDays(-1).ToUnixTimeMilliseconds(),
End = now.AddDays(1).ToUnixTimeMilliseconds(),
Start = mockedNow.ToUnixTimeMilliseconds(),
End = mockedNow.ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = mocked_now.AddHours(-1).ToUnixTimeMilliseconds(),
EndTime = mocked_now.AddHours(1).ToUnixTimeMilliseconds()
StartTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds()
};

Assert.True(Scheduler.IsScheduleActiveWithNow(duringSchedule,
ScheduleType.Global, mocked_now));
ScheduleType.Global, mockedNow));

var afterDaySchedule = new Schedule
{
Start = now.AddDays(-1).ToUnixTimeMilliseconds(),
End = now.AddDays(1).ToUnixTimeMilliseconds(),
Start = mockedNow.ToUnixTimeMilliseconds(),
End = mockedNow.ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = mocked_now.AddHours(-3).ToUnixTimeMilliseconds(),
EndTime = mocked_now.AddHours(-1).ToUnixTimeMilliseconds()
StartTime = zeroDayWithMockedTime.AddHours(-3).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds()
};
Assert.False(Scheduler.IsScheduleActiveWithNow(afterDaySchedule,
ScheduleType.Global, mocked_now));
ScheduleType.Global, mockedNow));

var afterWholeSchedule = new Schedule
{
Start = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = zeroDayWithMockedTime.AddHours(-3).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds()
};
Assert.False(Scheduler.IsScheduleActiveWithNow(afterWholeSchedule,
ScheduleType.Global, mockedNow));
}
}


[Test]
public void TestSchedulingActiveDailyMultiDay()
{
var now = DateTimeOffset.Now;
var zeroDay = DateTimeOffset.FromUnixTimeMilliseconds(0);

for(int hour = 0; hour < 24; hour++) {
var mockedNow = new DateTimeOffset(
now.Year,
now.Month,
now.Day,
hour,
0,
0,
0,
TimeSpan.Zero
);

var zeroDayWithMockedTime = new DateTimeOffset(
zeroDay.Year,
zeroDay.Month,
zeroDay.Day,
hour,
0,
0,
0,
TimeSpan.Zero
);

var beforeWholeSchedule = new Schedule
{
Start = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(3).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(3).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActiveWithNow(beforeWholeSchedule,
ScheduleType.Global, mockedNow));

var beforeDaySchedule = new Schedule
{
Start = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(3).ToUnixTimeMilliseconds()
};

Assert.False(Scheduler.IsScheduleActiveWithNow(beforeDaySchedule,
ScheduleType.Global, mockedNow));


var duringSchedule = new Schedule
{
Start = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(1).ToUnixTimeMilliseconds()
};

Assert.True(Scheduler.IsScheduleActiveWithNow(duringSchedule,
ScheduleType.Global, mockedNow));

var afterDaySchedule = new Schedule
{
Start = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = zeroDayWithMockedTime.AddHours(-3).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds()
};
Assert.False(Scheduler.IsScheduleActiveWithNow(afterDaySchedule,
ScheduleType.Global, mockedNow));

var afterWholeSchedule = new Schedule
{
Start = mockedNow.AddDays(-3).ToUnixTimeMilliseconds(),
End = mockedNow.AddDays(-1).ToUnixTimeMilliseconds(),
Timezone = "UTC",
TimeType = ScheduleTimeType.Daily,
StartTime = zeroDayWithMockedTime.AddHours(-3).ToUnixTimeMilliseconds(),
EndTime = zeroDayWithMockedTime.AddHours(-1).ToUnixTimeMilliseconds()
};
Assert.False(Scheduler.IsScheduleActiveWithNow(afterWholeSchedule,
ScheduleType.Global, mockedNow));
}
}
}
}
Loading

0 comments on commit 7636438

Please sign in to comment.