/** * @test * @dataProvider provideIncrementedProperty * @expectedException \DrdPlus\Person\ProfessionLevels\Exceptions\InvalidZeroLevelPropertyValue * @param Strength $strength * @param Agility $agility * @param Knack $knack * @param Will $will * @param Intelligence $intelligence * @param Charisma $charisma */ public function I_can_not_create_it_with_property_increment(Strength $strength, Agility $agility, Knack $knack, Will $will, Intelligence $intelligence, Charisma $charisma) { $professionZeroLevel = ProfessionZeroLevel::createZeroLevel($commoner = Commoner::getIt()); $reflection = new \ReflectionClass(ProfessionZeroLevel::class); /** @see \DrdPlus\Person\ProfessionLevels\ProfessionLevel::__construct */ $constructor = $reflection->getMethod('__construct'); $constructor->setAccessible(true); $constructor->invokeArgs($professionZeroLevel, [$commoner, LevelRank::getIt(0), $strength, $agility, $knack, $will, $intelligence, $charisma]); }
/** * @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); }
/** * @param string $propertyCodeTooHigh * * @test * @dataProvider providePropertyCodeOneByOne * @expectedException \DrdPlus\Person\ProfessionLevels\Exceptions\TooHighNextLevelPropertyIncrement */ public function I_can_not_create_next_level_with_too_high_property_increment($propertyCodeTooHigh) { ProfessionNextLevel::createNextLevel($this->createProfession(ProfessionCode::FIGHTER), $levelRank = LevelRank::getIt(2), Strength::getIt($propertyCodeTooHigh === Strength::STRENGTH ? 2 : 0), Agility::getIt($propertyCodeTooHigh === Agility::AGILITY ? 2 : 0), Knack::getIt($propertyCodeTooHigh === Knack::KNACK ? 2 : 0), Will::getIt($propertyCodeTooHigh === Will::WILL ? 2 : 0), Intelligence::getIt($propertyCodeTooHigh === Intelligence::INTELLIGENCE ? 2 : 0), Charisma::getIt($propertyCodeTooHigh === Charisma::CHARISMA ? 2 : 0)); }
/** * @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]; }
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()); }
/** * @param int $prohibitedValue * @test * @dataProvider provideProhibitedLevelValue * @expectedException \DrdPlus\Person\ProfessionLevels\Exceptions\InvalidLevelRank */ public function I_can_not_create_negative_level($prohibitedValue) { LevelRank::getIt($prohibitedValue); }