コード例 #1
0
        public void TestOnNormalAttack()
        {
            // Create Mock
            var random = new Mock <IRandom>();

            random.Setup(r => r.Random()).Returns(1);
            var actorRepository = new Mock <IActorRepository>();
            var skillRepository = new Mock <ISkillRepository>();

            var attackerId = new ActorId("Attacker");
            var attacker   = CreateActor(attackerId);
            var victimId   = new ActorId("Victim");
            var victim     = CreateActor(victimId);
            var skill      = CreateSkill();

            actorRepository.Setup(repo => repo.Find(attackerId))
            .Returns(attacker);
            actorRepository.Setup(repo => repo.Find(victimId))
            .Returns(victim);
            skillRepository.Setup(repo => repo.Find(It.IsAny <SkillId>()))
            .Returns(skill);

            // Create Builders
            var innerBuilder       = new AttackPowerBuilderInner();
            var attackPowerBuilder = new AttackPowerBuilder(innerBuilder);
            var defenseBuilder     = new DefenseRateBuilder();

            // Create Attack Calculation
            var damageRate        = new Rate(0.06f);
            var attackCalculation = new AttackCalculation(
                actorRepository.Object,
                skillRepository.Object,
                attackPowerBuilder,
                defenseBuilder,
                random.Object,
                damageRate);

            var damage = attackCalculation.ExecuteCalculation(
                attackerId, victimId, new SkillId("Dummy"));

            // Check Damage
            var damageListener = new Mock <IDamageListener>();

            damageListener.Setup(l => l.ListenDamage(It.IsAny <int>()))
            .Callback <int>(val => Assert.AreEqual(300, val));
            damage.NotifyDamage(damageListener.Object);
        }
コード例 #2
0
        public void Build()
        {
            var defenseRateBuilder = new DefenseRateBuilder();

            defenseRateBuilder.Build();
        }