/** * @test */ public function I_can_get_unused_skill_points_from_next_levels() { $skills = new PsychicalSkills(); $professionLevels = $this->createProfessionLevels($firstLevelWill = 123, $firstLevelIntelligence = 456, $nextLevelsWill = 321, $nextLevelsIntelligence = 654); self::assertSame($nextLevelsWill + $nextLevelsIntelligence, $skills->getUnusedNextLevelsPsychicalSkillPointsValue($professionLevels)); $skills->addPsychicalSkill($this->createPsychicalSkill($rankFromFirstLevel = 2, 1, Mythology::class)); self::assertSame($nextLevelsWill + $nextLevelsIntelligence, $skills->getUnusedNextLevelsPsychicalSkillPointsValue($professionLevels)); $skills->addPsychicalSkill($this->createPsychicalSkill($aRankFromNextLevel = 3, 2, Technology::class)); $skills->addPsychicalSkill($this->createPsychicalSkill($anotherRankFromNextLevel = 1, 3, Zoology::class)); self::assertSame($nextLevelsWill + $nextLevelsIntelligence - (array_sum(range(1, $aRankFromNextLevel)) + array_sum(range(1, $anotherRankFromNextLevel))), $skills->getUnusedNextLevelsPsychicalSkillPointsValue($professionLevels), 'Expected ' . ($nextLevelsWill + $nextLevelsIntelligence - (array_sum(range(1, $aRankFromNextLevel)) + array_sum(range(1, $anotherRankFromNextLevel))))); }