public void AddItemTestMultipleExecute() { int linkCompleted = 0; var linkItem = new LinkItem(); linkItem.Action = delegate(TimeEngine.ThreadContext threadContext) { linkCompleted++; threadContext.AddValue(linkItem.Link, 0); }; int listCompleted = 0; var listItem = new ListItem(); listItem.Action = delegate(TimeEngine.ThreadContext threadContext) { listCompleted++; threadContext.AddValue(listItem, 0); }; using (var timeEngine = new TimeEngine()) { timeEngine.AddValue(linkItem.Link, 0); timeEngine.AddValue(listItem, 0); timeEngine.EvaluateFrame(100); } Assert.GreaterOrEqual(linkCompleted, 2); Assert.GreaterOrEqual(listCompleted, 2); }
public void AddValueZero() { var linkItem = new LinkItem(); var listItem = new ListItem(); using (var timeEngine = new TimeEngine()) { timeEngine.AddValue(linkItem.Link, 0); timeEngine.AddValue(listItem, 0); var fractions = timeEngine.Timeslices[0].Fractions; Assert.AreEqual(1, fractions[0].Chain.Count); Assert.AreEqual(1, fractions[0].List.Count); Assert.AreEqual(linkItem.Link, fractions[0].Chain.Head); Assert.AreEqual(listItem, fractions[0].List[0]); } }
public void AddValueWholeTime() { var linkItem = new LinkItem(); var listItem = new ListItem(); ulong time = TimePrecision.TimeScaler; using (var timeEngine = new TimeEngine()) { timeEngine.AddValue(linkItem.Link, time); timeEngine.AddValue(listItem, time); //+ var fractions = timeEngine.Timeslices[1].Fractions; ulong fractionTime = (time & TimePrecision.TimePrecisionMask); Assert.AreEqual(1, fractions[fractionTime].Chain.Count); Assert.AreEqual(1, fractions[fractionTime].List.Count); Assert.AreEqual(linkItem.Link, fractions[fractionTime].Chain.Head); Assert.AreEqual(listItem, fractions[fractionTime].List[0]); } }
public void AddValueHibernateTime() { var linkItem = new LinkItem(); var listItem = new ListItem(); ulong time = (TimeSettings.MaxTimeslices << TimePrecision.TimePrecisionBits); using (var timeEngine = new TimeEngine()) { timeEngine.AddValue(linkItem.Link, time); timeEngine.AddValue(listItem, time); //+ var fractions = timeEngine.Timeslices[0].Fractions; ulong fractionTime = (time & TimePrecision.TimePrecisionMask); Assert.AreEqual(0, fractions.Count); //+ var hibernateSegment = timeEngine.HibernateSegments[0]; Assert.AreEqual(1, hibernateSegment.Chain.Count); Assert.AreEqual(1, hibernateSegment.List.Count); Assert.AreEqual(linkItem.Link, hibernateSegment.Chain.Head); Assert.AreEqual(listItem, hibernateSegment.List.First.Value.Object); } }
public void AddFutureItemTestExecute() { int linkCompleted = 0; var linkItem = new LinkItem(delegate(TimeEngine.ThreadContext threadContext) { linkCompleted++; }); int listCompleted = 0; var listItem = new ListItem(delegate(TimeEngine.ThreadContext threadContext) { listCompleted++; }); using (var timeEngine = new TimeEngine()) { timeEngine.AddValue(linkItem.Link, TimePrecision.ParseTime(1.0M)); timeEngine.AddValue(listItem, TimePrecision.ParseTime(1.0M)); timeEngine.EvaluateFrame(100); } Assert.AreEqual(1, linkCompleted); Assert.AreEqual(1, listCompleted); }