using System;
using Schedule;
namespace TimerTest
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
try
{
RangeTest();
IScheduledItem item = new SimpleInterval(DateTime.Now, new TimeSpan(0, 0, 3));
// item = new BlockWrapper(item, "ByMinute", "15", "45");
_Timer.AddJob(item, _f);
_Timer.Error += new ExceptionEventHandler(_Timer_Error);
_Timer.Start();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
finally
{
try { while(Console.ReadLine().ToLower() != "q"); } catch {};
}
}
static ScheduleTimer _Timer = new ScheduleTimer();
private delegate void f(DateTime time);
static f _f = new f(WriteEvent);
public static void WriteEvent(DateTime time)
{
DateTime actual = DateTime.Now;
Console.WriteLine("{0} - {1} = {2}", actual, time, (actual-time).TotalMilliseconds);
}
private static void _Timer_Error(object sender, ExceptionEventArgs Args)
{
Console.WriteLine(Args.EventTime);
Console.WriteLine(Args.Error.Message);
Console.WriteLine(Args.Error.StackTrace);
}
private static void RangeTest()
{
IScheduledItem item = new ScheduledTime("Weekly", "1,0:0:0");
TestItem(item, DateTime.Parse("1/1/04"), true, DateTime.Parse("1/5/04"));
TestItem(item, DateTime.Parse("1/2/04"), true, DateTime.Parse("1/5/04"));
TestItem(item, DateTime.Parse("12/30/03"), true, DateTime.Parse("1/5/04"));
TestItem(item, DateTime.Parse("1/5/04"), true, DateTime.Parse("1/5/04"));
TestItem(item, DateTime.Parse("1/5/04"), false, DateTime.Parse("1/12/04"));
TestItem(item, DateTime.Parse("1/6/04"), false, DateTime.Parse("1/12/04"));
TestItem(new ScheduledTime("Weekly", "0,0:0:0"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/4/04"));
TestItem(new ScheduledTime("Weekly", "1,0:0:0"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/5/04"));
TestItem(new ScheduledTime("Weekly", "2,0:0:0"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/6/04"));
TestItem(new ScheduledTime("Weekly", "3,0:0:0"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/7/04"));
TestItem(new ScheduledTime("Weekly", "4,0:0:0"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/1/04"));
TestItem(new ScheduledTime("Weekly", "5,0:0:0"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/2/04"));
TestItem(new ScheduledTime("Weekly", "6,0:0:0"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/3/04"));
TestItem(new ScheduledTime("Weekly", "4,0:0:0"), DateTime.Parse("1/1/04"), false, DateTime.Parse("1/8/04"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/1/04"), true, DateTime.Parse("1/4/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04"), true, DateTime.Parse("1/4/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04 3:00:00"), true, DateTime.Parse("1/4/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04 6:00:00"), true, DateTime.Parse("1/4/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04 6:33:00"), true, DateTime.Parse("1/4/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04 6:34:00"), true, DateTime.Parse("1/4/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04 6:34:23"), true, DateTime.Parse("1/4/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04 6:34:23"), false, DateTime.Parse("1/11/04 6:34:23"));
TestItem(new ScheduledTime("Weekly", "0,6:34:23"), DateTime.Parse("1/4/04 6:34:24"), true, DateTime.Parse("1/11/04 6:34:23"));
}
private static void TestItem(IScheduledItem item, DateTime input, bool AllowExact, DateTime ExpectedOutput)
{
DateTime Result = item.NextRunTime(input, AllowExact);
if (Result == ExpectedOutput)
Console.WriteLine("Success");
else
Console.WriteLine(string.Format("Failure: Received: {0} Expected: {1}", Result, ExpectedOutput));
}
}
}