/** * @test */ public function I_can_create_it() { $zeroLevel = $this->createZeroLevel(); $firstLevel = $this->createFirstLevel('fighter'); $withFirstLevelOnly = new ProfessionLevels($zeroLevel, $firstLevel); self::assertNotNull($withFirstLevelOnly); $anotherInstance = ProfessionLevels::createIt($zeroLevel, $firstLevel); self::assertEquals($withFirstLevelOnly, $anotherInstance); $yetAnotherInstance = ProfessionLevels::createIt($zeroLevel, $firstLevel); self::assertNotSame($anotherInstance, $yetAnotherInstance); $withExplicitlyEmptyNextLevels = ProfessionLevels::createIt($zeroLevel, $firstLevel, []); self::assertEquals($withFirstLevelOnly, $withExplicitlyEmptyNextLevels); $withNextLevels = ProfessionLevels::createIt($zeroLevel, $firstLevel, $nextLevels = [ProfessionNextLevel::createNextLevel(Fighter::getIt(), LevelRank::getIt(2), Strength::getIt(1), Agility::getIt(0), Knack::getIt(0), Will::getIt(0), Intelligence::getIt(1), Charisma::getIt(0))]); self::assertNotEquals($withFirstLevelOnly, $withNextLevels); }
/** * @test */ public function I_can_set_and_get_profession_levels() { $professionNextLevel = ProfessionNextLevel::createNextLevel($this->createProfession(ProfessionCode::FIGHTER), $this->createLevelRank(2), $this->createStrength(ProfessionCode::FIGHTER), $this->createAgility(ProfessionCode::FIGHTER), $this->createKnack(ProfessionCode::FIGHTER), $this->createWill(ProfessionCode::FIGHTER), $this->createIntelligence(ProfessionCode::FIGHTER), $this->createCharisma(ProfessionCode::FIGHTER), new \DateTimeImmutable()); self::assertNull($professionNextLevel->getProfessionLevels()); $professionNextLevel->setProfessionLevels($professionLevels = $this->createProfessionLevels()); self::assertSame($professionLevels, $professionNextLevel->getProfessionLevels()); }
/** * @return array */ public static function createEntities() { $professionLevels = new ProfessionLevels(ProfessionZeroLevel::createZeroLevel(Commoner::getIt()), ProfessionFirstLevel::createFirstLevel($profession = Theurgist::getIt())); $professionLevels->addLevel(ProfessionNextLevel::createNextLevel($profession, LevelRank::getIt(2), Strength::getIt(1), Agility::getIt(0), Knack::getIt(0), Will::getIt(0), Intelligence::getIt(1), Charisma::getIt(0))); return [ProfessionZeroLevel::createZeroLevel(Commoner::getIt()), ProfessionFirstLevel::createFirstLevel(Fighter::getIt()), ProfessionNextLevel::createNextLevel(Wizard::getIt(), LevelRank::getIt(2), Strength::getIt(1), Agility::getIt(1), Knack::getIt(0), Will::getIt(0), Intelligence::getIt(0), Charisma::getIt(0)), $professionLevels]; }
private function checkNextLevelPaymentByPropertyIncrement(ProfessionNextLevel $professionNextLevel) { $relatedProperties = $this->sortAlphabetically($this->getRelatedProperties()); $missingPropertyAdjustment = false; switch ($relatedProperties) { case $this->sortAlphabetically([Strength::STRENGTH, Agility::AGILITY]): $missingPropertyAdjustment = $professionNextLevel->getStrengthIncrement()->getValue() === 0 && $professionNextLevel->getAgilityIncrement()->getValue() === 0; break; case $this->sortAlphabetically([Will::WILL, Intelligence::INTELLIGENCE]): $missingPropertyAdjustment = $professionNextLevel->getWillIncrement()->getValue() === 0 && $professionNextLevel->getIntelligenceIncrement()->getValue() === 0; break; case $this->sortAlphabetically([Knack::KNACK, Charisma::CHARISMA]): $missingPropertyAdjustment = $professionNextLevel->getKnackIncrement()->getValue() === 0 && $professionNextLevel->getCharismaIncrement()->getValue() === 0; break; } if ($missingPropertyAdjustment) { throw new Exceptions\MissingPropertyAdjustmentForPayment('The profession ' . $professionNextLevel->getProfession()->getValue() . ' of level ' . $professionNextLevel->getLevelRank()->getValue() . ' has to have adjusted either ' . implode(' or ', $this->getRelatedProperties())); } }
public static function createSkillsEntity(Tables $tables) { return Skills::createSkills(ProfessionLevels::createIt(ProfessionFirstLevel::createFirstLevel($profession = Fighter::getIt()), [ProfessionNextLevel::createNextLevel($profession, LevelRank::getIt(2), Strength::getIt(0), Agility::getIt(1), Knack::getIt(0), Will::getIt(0), Intelligence::getIt(1), Charisma::getIt(0))]), BackgroundSkillPoints::getIt(2, Heritage::getIt(7)), $tables, new PhysicalSkills(), new PsychicalSkills(), new CombinedSkills()); }