예제 #1
0
        public void ItStoresTheName()
        {
            unity.Name.Returns("Eric");
            var cellPhone = new StandardUnit(conflictResolver, unity);

            Assert.AreEqual("Eric", cellPhone.UnitName);
        }
예제 #2
0
        public void ItIsAliveWhenItsHealthIsNotZero()
        {
            unity.InitialHealth.Returns(10);
            var cellPhone = new StandardUnit(conflictResolver, unity);

            Assert.IsTrue(cellPhone.Alive());
        }
예제 #3
0
        public void ItIsDeadWhenItsHealthIsZero()
        {
            unity.InitialHealth.Returns(0);
            var cellPhone = new StandardUnit(conflictResolver, unity);

            Assert.IsFalse(cellPhone.Alive());
        }
예제 #4
0
    /// <summary>
    /// Start this instance.
    /// </summary>
    void Start()
    {
        var stateMachine = GameRouter.stateMachine;

        // Create the standard Unit.  That object has all the game behavior.
        var unit = new StandardUnit(ConflictTable.resolver, this);

        // 'Bind' the controller.
        var controller = gameObject.GetComponent<UnitController>();
        controller.Bind(unit);

        // Instantiate a prefab for the health label
        var healthLabel = Instantiate(labelPreFab,
                                  transform.position,
                                  transform.rotation) as GameObject;

        // Bind it to the health label script
        var labelScript = healthLabel.GetComponent<HealthLabel>();
        labelScript.Bind(unit);
        labelScript.target = gameObject.transform;
        labelScript.offset = labelOffset;

        // Bind to the unit view.
        // So two views and one controller
        var unitView = gameObject.GetComponent<UnitView>();
        unitView.Bind(unit);

        // Assign the unit to it's player
        stateMachine.AddUnitToPlayer(gameObject.tag, unit);
    }
        public void ItDoesntCrashIfNobodyIsListeningForDoneWaiting()
        {
            var unity = Substitute.For<UnityObject>();
            var conflictResolver = Substitute.For<ConflictResolver>();
            var unit = new StandardUnit(conflictResolver, unity);

            unit.NotReadyForCommand();
        }
예제 #6
0
        public void ItDoesntCrashIfNobodyIsWaiting()
        {
            var unity            = Substitute.For <UnityObject>();
            var conflictResolver = Substitute.For <ConflictResolver>();
            var unit             = new StandardUnit(conflictResolver, unity);

            unit.PickMe();
        }
예제 #7
0
        public void ItDoesntCrashIfNobodyIsListeningForDoneWaiting()
        {
            var unity            = Substitute.For <UnityObject>();
            var conflictResolver = Substitute.For <ConflictResolver>();
            var unit             = new StandardUnit(conflictResolver, unity);

            unit.NotReadyForCommand();
        }
        public void ItDoesntCrashIfNobodyIsWaiting()
        {
            var unity = Substitute.For<UnityObject>();
            var conflictResolver = Substitute.For<ConflictResolver>();
            var unit = new StandardUnit(conflictResolver, unity);

            unit.PickMe();
        }
예제 #9
0
        public void ItsAttackStrengthComesFromItsConflictResolver()
        {
            var conflictResolver = Substitute.For <ConflictResolver>();
            var enemy            = Substitute.For <Unit>();
            var cellPhone        = new StandardUnit(conflictResolver, unity);

            conflictResolver.Resolve(enemy, cellPhone).Returns(1);

            Assert.AreEqual(1, cellPhone.AttackStrengthAgainst(enemy));
        }
        public void ItFiresTheAttackedEventWhenItsAttacked()
        {
            var unity = Substitute.For<UnityObject>();
            var conflictResolver = Substitute.For<ConflictResolver>();
            var unit = new StandardUnit(conflictResolver, unity);
            bool attacked = false;

            unit.Attacked += () => attacked = true;
            unit.AttackWith(unit);

            Assert.IsTrue(attacked);
        }
예제 #11
0
        public void ItFiresTheAttackedEventWhenItsAttacked()
        {
            var  unity            = Substitute.For <UnityObject>();
            var  conflictResolver = Substitute.For <ConflictResolver>();
            var  unit             = new StandardUnit(conflictResolver, unity);
            bool attacked         = false;

            unit.Attacked += () => attacked = true;
            unit.AttackWith(unit);

            Assert.IsTrue(attacked);
        }
예제 #12
0
        public void ItLosesTheDamageBasedOnTheUnits()
        {
            var unit = Substitute.For <Unit>();

            unity.InitialHealth.Returns(10);
            var cellPhone = new StandardUnit(conflictResolver, unity);

            unit.AttackStrengthAgainst(cellPhone).Returns(1);

            cellPhone.AttackWith(unit);

            Assert.AreEqual(9, cellPhone.Health);
        }
        public void ItFiresDoneWaitingWhenNotReadyForACommand()
        {
            var unity = Substitute.For<UnityObject>();
            var conflictResolver = Substitute.For<ConflictResolver>();
            var unit = new StandardUnit(conflictResolver, unity);

            bool doneWaiting = false;
            unit.DoneWaiting += () => doneWaiting = true;

            unit.NotReadyForCommand();

            Assert.IsTrue(doneWaiting);
        }
예제 #14
0
        public void ItFiresDoneWaitingWhenNotReadyForACommand()
        {
            var unity            = Substitute.For <UnityObject>();
            var conflictResolver = Substitute.For <ConflictResolver>();
            var unit             = new StandardUnit(conflictResolver, unity);

            bool doneWaiting = false;

            unit.DoneWaiting += () => doneWaiting = true;

            unit.NotReadyForCommand();

            Assert.IsTrue(doneWaiting);
        }
예제 #15
0
        public void ItFiresWaitingForPickMe()
        {
            var unity            = Substitute.For <UnityObject>();
            var conflictResolver = Substitute.For <ConflictResolver>();
            var unit             = new StandardUnit(conflictResolver, unity);

            bool waiting = false;

            unit.Waiting += () => waiting = true;

            unit.PickMe();

            Assert.IsTrue(waiting);
        }
        public void ItDoesNotFireTheDeadEventWhenItDoesntDie()
        {
            var unity = Substitute.For<UnityObject>();
            unity.InitialHealth.Returns(10);
            var conflictResolver = Substitute.For<ConflictResolver>();

            var unit = new StandardUnit(conflictResolver, unity);
            conflictResolver.Resolve(unit, unit).Returns(1);

            bool dead = false;
            unit.Dead += () => dead = true;

            unit.AttackWith(unit);

            Assert.IsFalse(dead);
        }
예제 #17
0
        public void ItFiresTheDeadEventWhenItDies()
        {
            var unity = Substitute.For <UnityObject>();

            unity.InitialHealth.Returns(1);
            var conflictResolver = Substitute.For <ConflictResolver>();

            var unit = new StandardUnit(conflictResolver, unity);

            conflictResolver.Resolve(unit, unit).Returns(1);

            bool dead = false;

            unit.Dead += () => dead = true;

            unit.AttackWith(unit);

            Assert.IsTrue(dead);
        }
        public void ItIsAliveWhenItsHealthIsNotZero()
        {
            unity.InitialHealth.Returns(10);
            var cellPhone = new StandardUnit(conflictResolver, unity);

            Assert.IsTrue (cellPhone.Alive ());
        }
        public void ItIsDeadWhenItsHealthIsZero()
        {
            unity.InitialHealth.Returns (0);
            var cellPhone = new StandardUnit(conflictResolver, unity);

            Assert.IsFalse (cellPhone.Alive ());
        }
        public void ItLosesTheDamageBasedOnTheUnits()
        {
            var unit = Substitute.For<Unit>();
            unity.InitialHealth.Returns(10);
            var cellPhone = new StandardUnit(conflictResolver, unity);

            unit.AttackStrengthAgainst(cellPhone).Returns(1);

            cellPhone.AttackWith(unit);

            Assert.AreEqual(9, cellPhone.Health);
        }
        public void ItsAttackStrengthComesFromItsConflictResolver()
        {
            var conflictResolver = Substitute.For<ConflictResolver>();
            var enemy = Substitute.For<Unit>();
            var cellPhone = new StandardUnit(conflictResolver, unity);

            conflictResolver.Resolve(enemy, cellPhone).Returns(1);

            Assert.AreEqual(1, cellPhone.AttackStrengthAgainst (enemy));
        }
        public void ItStoresTheName()
        {
            unity.Name.Returns("Eric");
            var cellPhone = new StandardUnit(conflictResolver, unity);

            Assert.AreEqual("Eric", cellPhone.UnitName);
        }
        public void ItFiresWaitingForPickMe()
        {
            var unity = Substitute.For<UnityObject>();
            var conflictResolver = Substitute.For<ConflictResolver>();
            var unit = new StandardUnit(conflictResolver, unity);

            bool waiting = false;
            unit.Waiting += () => waiting = true;

            unit.PickMe();

            Assert.IsTrue(waiting);
        }