コード例 #1
0
        public void Update_YieldsThrow()
        {
            var player = new Player();

            var frame1 = new Frame {
                Match = { GameClock = 300f }
            };
            var possessionChangeEvent1 = new PossessionChangeEvent(frame1, null, null);

            var frame2 = new Frame {
                Match = { GameClock = 300f }
            };
            var possessionChangeEvent2 = new PossessionChangeEvent(frame1, player, HandSide.Right);

            var frame3 = new Frame {
                Match = { GameClock = 300f }
            };

            var frame4 = new Frame {
                Match = { GameClock = 300f - ThrowPlaySensor.SLAP_THRESHOLD_TIME - 1 }
            };
            var throwEvent = new ThrowEvent(frame4, player);

            var sensor = new ThrowPlaySensor();

            sensor.Initialize(new IStateSensor[0]);

            //
            var result1 = sensor.Update(frame1, new[] { possessionChangeEvent1 });
            var result2 = sensor.Update(frame2, new[] { possessionChangeEvent2 });
            var result3 = sensor.Update(frame3, new GameEvent[0]);
            var result4 = sensor.Update(frame4, new[] { throwEvent });

            //

            Assert.IsNull(result1);
            Assert.IsNull(result2);
            Assert.IsNull(result3);

            var slap = result4 as ThrowPlay;

            Assert.IsNotNull(slap);
            Assert.AreEqual(player, slap.Player);
        }
コード例 #2
0
        public void Update_YieldsThrowIfPlayerMismatch()
        {
            var player1 = new Player {
                Id = 1
            };
            var player2 = new Player {
                Id = 2
            };

            var frame1 = new Frame {
                Match = { GameClock = 300f }
            };
            var possessionChangeEvent1 = new PossessionChangeEvent(frame1, player1, HandSide.Right);

            var frame2 = new Frame {
                Match = { GameClock = 300f - ThrowPlaySensor.SLAP_THRESHOLD_TIME }
            };
            var throwEvent = new ThrowEvent(frame2, player2);

            var sensor = new ThrowPlaySensor();

            sensor.Initialize(new IStateSensor[0]);

            //
            var result1 = sensor.Update(frame1, new[] { possessionChangeEvent1 });
            var result2 = sensor.Update(frame2, new[] { throwEvent });

            //

            Assert.IsNull(result1);

            var slap = result2 as ThrowPlay;

            Assert.IsNotNull(slap);
            Assert.AreEqual(player2, slap.Player);
        }
コード例 #3
0
        public void Update_Sequence()
        {
            var player = new Player();

            var frame1 = new Frame {
                Match = { GameClock = 300f }
            };
            var possessionChangeEvent1 = new PossessionChangeEvent(frame1, player, HandSide.Left);

            var frame2 = new Frame {
                Match = { GameClock = 300f }
            };
            var possessionChangeEvent2 = new PossessionChangeEvent(frame1, null, null);

            var frame3 = new Frame {
                Match = { GameClock = 300f }
            };
            var possessionChangeEvent3 = new PossessionChangeEvent(frame1, player, HandSide.Right);

            var frame4 = new Frame {
                Match = { GameClock = 300f - PossessionPlaySensor.PICKUP_THRESHOLD / 2f }
            };
            var frame5 = new Frame {
                Match = { GameClock = 300f - PossessionPlaySensor.PICKUP_THRESHOLD }
            };
            var frame6 = new Frame {
                Match = { GameClock = 300f - (PossessionPlaySensor.PICKUP_THRESHOLD + PossessionPlaySensor.CARRY_THRESHOLD) / 2f }
            };
            var frame7 = new Frame {
                Match = { GameClock = 300f - PossessionPlaySensor.CARRY_THRESHOLD }
            };

            var sensor = new PossessionPlaySensor();

            sensor.Initialize(new IStateSensor[0]);

            //
            var result1 = sensor.Update(frame1, new[] { possessionChangeEvent1 });
            var result2 = sensor.Update(frame2, new[] { possessionChangeEvent2 });
            var result3 = sensor.Update(frame3, new[] { possessionChangeEvent3 });
            var result4 = sensor.Update(frame4, new GameEvent[0]);
            var result5 = sensor.Update(frame5, new GameEvent[0]);
            var result6 = sensor.Update(frame6, new GameEvent[0]);
            var result7 = sensor.Update(frame7, new GameEvent[0]);

            //

            Assert.IsNull(result1);
            Assert.IsNull(result2);
            Assert.IsNull(result3);
            Assert.IsNull(result4);

            var play5 = result5 as GrabDiscPlay;

            Assert.IsNotNull(play5);
            Assert.AreEqual(player, play5.Player);
            Assert.AreEqual(HandSide.Right, play5.Hand);

            Assert.IsNull(result6);

            var play7 = result7 as CarryPlay;

            Assert.IsNotNull(play7);
            Assert.AreEqual(player, play7.Player);
        }