Пример #1
0
        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);
        }
Пример #2
0
        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]);
            }
        }
Пример #3
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]);
            }
        }
Пример #4
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);
            }
        }
Пример #5
0
        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);
        }