Пример #1
0
        public void TestMultipleMoves()
        {
            var date = DateTime.MinValue;

            GameScheduler.SetLogicalTime(date);

            var tile  = _party.Tile;
            var next1 = tile.GetNeighbor(Direction.SOUTH);
            var next2 = next1.GetNeighbor(Direction.SOUTH);
            var next3 = next2.GetNeighbor(Direction.SOUTH);

            _path.Add(new Position(next1.X, next1.Y));
            _path.Add(new Position(next2.X, next2.Y));
            _path.Add(new Position(next3.X, next3.Y));

            SendMoveRequest();

            Assert.AreEqual(tile, _party.Tile);

            date += _party.Course.Delay;
            GameScheduler.Tick(date);
            Assert.AreEqual(next1, _party.Tile);

            date += _party.Course.Delay;
            GameScheduler.Tick(date);
            Assert.AreEqual(next2, _party.Tile);

            date += _party.Course.Delay;
            GameScheduler.Tick(date);
            Assert.AreEqual(next3, _party.Tile);

            var moveEvents = _player.ReceivedEventsOfType <EntityMoveEvent>();

            Assert.AreEqual(3, moveEvents.Count);
        }
Пример #2
0
        public void TestNextTask()
        {
            GameScheduler.SetLogicalTime(DateTime.UnixEpoch);

            var t1 = new TestTask(TimeSpan.FromSeconds(10));

            GameScheduler.Tick(DateTime.UnixEpoch + TimeSpan.FromMilliseconds(1));

            Assert.AreEqual(t1, GameScheduler.NextTask);
            Assert.AreEqual(1, GameScheduler.PendingTasks);
        }
Пример #3
0
        public void TestOrdering()
        {
            GameScheduler.SetLogicalTime(DateTime.UnixEpoch);

            var t1 = new TestTask(TimeSpan.FromSeconds(1));
            var t2 = new TestTask(TimeSpan.FromSeconds(2));
            var t3 = new TestTask(TimeSpan.FromSeconds(3));

            var minute = (long)GameScheduler.NowTimespan.TotalMinutes;
            var queue  = GameScheduler.Queue;

            Assert.AreEqual(t1, queue.First());
            Assert.AreEqual(t3, queue.Last());
            Assert.AreEqual(3, GameScheduler.PendingTasks);
        }
Пример #4
0
        public void TestTickNotRunningTasks()
        {
            var time = DateTime.UnixEpoch;

            GameScheduler.SetLogicalTime(time);

            var t1 = new TestTask(TimeSpan.FromSeconds(1));
            var t2 = new TestTask(TimeSpan.FromSeconds(1 + 60));
            var t3 = new TestTask(TimeSpan.FromSeconds(1 + 120));

            GameScheduler.Tick(time);

            Assert.IsFalse(t1.Ran);
            Assert.IsFalse(t2.Ran);
            Assert.IsFalse(t3.Ran);
            Assert.AreEqual(t1, GameScheduler.NextTask);
        }
Пример #5
0
        public void TestRunningTwoTasks()
        {
            var time = DateTime.UnixEpoch;

            GameScheduler.SetLogicalTime(time);

            var t1 = new TestTask(TimeSpan.FromSeconds(1));
            var t2 = new TestTask(TimeSpan.FromSeconds(5));
            var t3 = new TestTask(TimeSpan.FromSeconds(7));

            GameScheduler.Tick(time + TimeSpan.FromSeconds(5));

            Assert.IsTrue(t1.Ran);
            Assert.IsTrue(t2.Ran);
            Assert.IsFalse(t3.Ran);
            Assert.AreEqual(t3, GameScheduler.NextTask);
            Assert.AreEqual(1, GameScheduler.PendingTasks);
        }
Пример #6
0
        public void TestCourseMovingParty()
        {
            var date = DateTime.MinValue;

            GameScheduler.SetLogicalTime(date);

            var tile = _party.Tile;
            var next = tile.GetNeighbor(Direction.SOUTH);

            _path.Add(new Position(next.X, next.Y));

            SendMoveRequest();

            Assert.AreEqual(tile, _party.Tile);

            GameScheduler.Tick(date + _party.Course.Delay);

            Assert.AreEqual(next, _party.Tile);
        }
Пример #7
0
 public void Setup()
 {
     GameScheduler.SetLogicalTime(DateTime.UtcNow);
     GameScheduler.Clear();
 }