private static function createPhysicalSkillEntities(Tables $tables, ProfessionFirstLevel $firstLevel) { $physicalSkillClasses = self::getListOfSkillClasses(PhysicalSkill::class); $physicalSkillPoint = PhysicalSkillPoint::createFromFirstLevelBackgroundSkillPoints($firstLevel, BackgroundSkillPoints::getIt(3, Heritage::getIt(5)), $tables); $requiredRankValue = new PositiveIntegerObject(1); $physicalSkillList = array_map(function ($physicalSkillClass) use($firstLevel, $physicalSkillPoint, $requiredRankValue) { /** @var PhysicalSkill $physicalSkill */ $physicalSkill = new $physicalSkillClass($firstLevel); $physicalSkill->addSkillRank($physicalSkillPoint); return $physicalSkill; }, $physicalSkillClasses); $physicalSkills = new PhysicalSkills(); foreach ($physicalSkillList as $physicalSkill) { $physicalSkills->addPhysicalSkill($physicalSkill); } $physicalSkillPoint = PhysicalSkillPoint::createFromFirstLevelBackgroundSkillPoints($firstLevel, BackgroundSkillPoints::getIt(3, Heritage::getIt(5)), $tables); $physicalSkillRank = new PhysicalSkillRank(new Swimming($firstLevel), PhysicalSkillPoint::createFromFirstLevelBackgroundSkillPoints($firstLevel, BackgroundSkillPoints::getIt(4, Heritage::getIt(5)), $tables), new PositiveIntegerObject(1)); return array_merge($physicalSkillList, [$physicalSkills, $physicalSkillPoint, $physicalSkillRank]); }
/** * @test */ public function I_can_get_malus_to_fight_for_shield() { $skills = new PhysicalSkills(); $armourer = $this->mockery(Armourer::class); $shield = $this->mockery(ShieldCode::class); $armourer->shouldReceive('getProtectiveArmamentRestrictionForSkill')->andReturnUsing(function (ShieldCode $givenShield, PositiveInteger $rank) use($shield) { self::assertSame($givenShield, $shield); self::assertSame(0, $rank->getValue()); return 'foo'; }); self::assertSame($expectedMalus = 'foo', $skills->getMalusToFightNumberWithProtective($shield, $armourer)); }