public void LiveTest() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(null, new DateTime(2020, 6, 15)); algo.AddRule(new Rule(Guid.NewGuid(), new DateTime(2020, 6, 1, 8, 0, 0), new DateTime(2020, 6, 1, 20, 0, 0), 1, TimeMeasure.Days)); algo.AddRule(new Exclusion(new DateTime(2020, 6, 3, 8, 0, 0), new DateTime(2020, 6, 3, 20, 0, 0), 7, TimeMeasure.Days)); var result = algo.GetResult(); Assert.AreEqual(12, result.Count); }
public void RealTest() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(null, DateTime.Now.AddDays(60)); Guid rule1 = new Guid(); Guid rule2 = new Guid(); algo.AddRule(new Rule(rule1, new DateTime(2020, 8, 2, 8, 0, 0), new DateTime(2020, 8, 3, 0, 0, 0), null, TimeMeasure.None)); algo.AddRule(new Rule(rule2, new DateTime(2020, 8, 10, 8, 0, 0), new DateTime(2020, 8, 11, 0, 0, 0), null, TimeMeasure.None)); var result = algo.GetResult(true); Assert.AreEqual(rule1, result.First().Guid); Assert.AreEqual(rule2, result.Last().Guid); Assert.AreEqual(2, result.Count); }
public void TwoEntersecException() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 8, 1), new DateTime(2020, 8, 3, 23, 59, 59)); var guid = new Guid(); Rule rule1 = new Rule(guid, new DateTime(2020, 6, 1, 9, 0, 0), new DateTime(2020, 6, 1, 17, 0, 0), 1, TimeMeasure.Days); Exclusion exclusion1 = new Exclusion( new DateTime(2020, 8, 2, 8, 0, 0), new DateTime(2020, 8, 2, 10, 0, 0), 0, TimeMeasure.None); Exclusion exclusion2 = new Exclusion( new DateTime(2020, 8, 2, 9, 0, 0), new DateTime(2020, 8, 2, 11, 0, 0), 0, TimeMeasure.None); algo.AddRule(rule1); algo.AddRule(exclusion1); algo.AddRule(exclusion2); var result = algo.GetResult(); Assert.AreEqual(3, result.Count); Assert.AreEqual(new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 8, 1, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 1, 17, 0, 0) }, result[0]); Assert.AreEqual(new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 8, 2, 11, 0, 0), EndDateTime = new DateTime(2020, 8, 2, 17, 0, 0) }, result[1]); Assert.AreEqual(new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 8, 3, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 3, 17, 0, 0) }, result[2]); }
public void IncludeCutPeriodTest() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 6, 5, 11, 30, 00), new DateTime(2020, 6, 15, 11, 30, 00)); var guid = Guid.NewGuid(); algo.AddRule(new Rule(guid, new DateTime(2020, 6, 1, 8, 0, 0), new DateTime(2020, 6, 1, 13, 0, 0), 1, TimeMeasure.Days)); var result = algo.GetResult(true); Assert.AreEqual(11, result.Count); Assert.AreEqual(new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 6, 5, 8, 0, 0), EndDateTime = new DateTime(2020, 6, 5, 13, 0, 0) }, result[0]); Assert.AreEqual(new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 6, 6, 8, 0, 0), EndDateTime = new DateTime(2020, 6, 6, 13, 0, 0) }, result[1]); }
public void TwoIntersecRules() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 8, 1), new DateTime(2020, 8, 3, 23, 59, 59)); var guid1 = Guid.NewGuid(); var guid2 = Guid.NewGuid(); Rule rule1 = new Rule(guid1, new DateTime(2020, 6, 1, 9, 0, 0), new DateTime(2020, 6, 1, 17, 0, 0), 1, TimeMeasure.Days); Rule rule2 = new Rule(guid2, new DateTime(2020, 6, 1, 12, 0, 0), new DateTime(2020, 6, 1, 13, 0, 0), 1, TimeMeasure.Days, 1); algo.AddRule(rule1); algo.AddRule(rule2); var result = algo.GetResult(); Assert.AreEqual(6, result.Count); Assert.AreEqual(new ResultStructure() { Guid = guid1, StartDateTime = new DateTime(2020, 8, 1, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 1, 17, 0, 0) }, result[0]); Assert.AreEqual(new ResultStructure() { Guid = guid1, StartDateTime = new DateTime(2020, 8, 2, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 2, 17, 0, 0) }, result[1]); Assert.AreEqual(new ResultStructure() { Guid = guid1, StartDateTime = new DateTime(2020, 8, 3, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 3, 17, 0, 0) }, result[2]); }
public void CutPeriodTest() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 6, 5, 11, 30, 00), new DateTime(2020, 6, 15, 11, 30, 00)); algo.AddRule(new Rule(new Guid(), new DateTime(2020, 6, 1, 8, 0, 0), new DateTime(2020, 6, 1, 13, 0, 0), 1, TimeMeasure.Days)); var result = algo.GetResult(true); Assert.AreEqual(11, result.Count); }
public void TwoNonIntersecRules() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 8, 1), new DateTime(2020, 8, 3, 23, 59, 59)); Rule rule1 = new Rule(new Guid(), new DateTime(2020, 6, 1, 9, 0, 0), new DateTime(2020, 6, 1, 17, 0, 0), 1, TimeMeasure.Days); Rule rule2 = new Rule(new Guid(), new DateTime(2020, 6, 1, 18, 0, 0), new DateTime(2020, 6, 1, 20, 0, 0), 1, TimeMeasure.Days); algo.AddRule(rule1); algo.AddRule(rule2); var result = algo.GetResult(); Assert.AreEqual(6, result.Count); }
public void OneNonPeriodicalRule() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 8, 1), new DateTime(2020, 8, 3, 23, 59, 59)); var rule0 = new Guid(); Rule rule1 = new Rule(rule0, new DateTime(2020, 8, 2, 9, 0, 0), new DateTime(2020, 8, 2, 17, 0, 0), 0, TimeMeasure.None); Rule rule2 = new Rule(new Guid(), new DateTime(2020, 7, 2, 9, 0, 0), new DateTime(2020, 7, 2, 17, 0, 0), 1, TimeMeasure.None); Rule rule3 = new Rule(new Guid(), new DateTime(2020, 7, 2, 9, 0, 0), new DateTime(2020, 7, 2, 17, 0, 0), 0, TimeMeasure.Days); algo.AddRule(rule1); algo.AddRule(rule2); algo.AddRule(rule3); var result = algo.GetResult(); Assert.AreEqual(1, result.Count); ResultStructure resultStructure = new ResultStructure() { Guid = rule0, StartDateTime = new DateTime(2020, 8, 2, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 2, 17, 0, 0) }; Assert.AreEqual(resultStructure, (ResultStructure)(result[0])); }
static void Main(string[] args) { Console.WriteLine("Start program: " + DateTime.Now.Minute + ":" + DateTime.Now.Second + ":" + DateTime.Now.Millisecond); Rule rule1 = new Rule( new Guid(), new DateTime(2020, 6, 1, 9, 0, 0), new DateTime(2020, 6, 1, 17, 0, 0), 1, TimeMeasure.Days); Rule rule2 = new Rule( new Guid(), new DateTime(2020, 6, 1, 6, 0, 0), new DateTime(2020, 6, 1, 7, 0, 0), null, TimeMeasure.None); Exclusion exclusion1 = new Exclusion( new DateTime(2020, 6, 6, 0, 0, 0), new DateTime(2020, 6, 8, 0, 0, 0), 7, TimeMeasure.Days); Exclusion exclusion2 = new Exclusion( new DateTime(2020, 6, 2, 13, 0, 0), new DateTime(2020, 6, 2, 14, 0, 0), 7, TimeMeasure.Days); Console.WriteLine("Before loop: " + DateTime.Now.Minute + ":" + DateTime.Now.Second + ":" + DateTime.Now.Millisecond); BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(null, new DateTime(2020, 8, 1)); algo.AddRule(rule1); algo.AddRule(rule2); algo.AddRule(exclusion1); algo.AddRule(exclusion2); var result = algo.GetResult(); Console.WriteLine("After loop: " + DateTime.Now.Minute + ":" + DateTime.Now.Second + ":" + DateTime.Now.Millisecond); Console.WriteLine("Finish!"); }
public void RuleAndException_1() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 8, 1), new DateTime(2020, 8, 3, 23, 59, 59)); Rule rule1 = new Rule(new Guid(), new DateTime(2020, 6, 1, 9, 0, 0), new DateTime(2020, 6, 1, 17, 0, 0), 1, TimeMeasure.Days); Exclusion exclusion1 = new Exclusion( new DateTime(2020, 8, 2, 0, 0, 0), new DateTime(2020, 8, 3, 0, 0, 0), 0, TimeMeasure.None ); algo.AddRule(rule1); algo.AddRule(exclusion1); var result = algo.GetResult(); Assert.AreEqual(2, result.Count); }
public void OnePeriodicalRule() { BentleyOttmanAlgorithm algo = new BentleyOttmanAlgorithm(new DateTime(2020, 8, 1), new DateTime(2020, 8, 3, 23, 59, 59)); var guid = new Guid(); Rule rule1 = new Rule( guid, new DateTime(2020, 6, 1, 9, 0, 0), new DateTime(2020, 6, 1, 17, 0, 0), 1, TimeMeasure.Days); algo.AddRule(rule1); var result = algo.GetResult(); Assert.AreEqual(3, result.Count); Assert.AreEqual( new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 8, 1, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 1, 17, 0, 0) }, result[0]); Assert.AreEqual(new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 8, 2, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 2, 17, 0, 0) }, result[1]); Assert.AreEqual(new ResultStructure() { Guid = guid, StartDateTime = new DateTime(2020, 8, 3, 9, 0, 0), EndDateTime = new DateTime(2020, 8, 3, 17, 0, 0) }, result[2]); }