def test_equality_operator(self) -> None: self.assertEqual( common.Income(coins=10, workers=1, bridges=2, priests=4, power=10), common.Income(coins=10, workers=1, bridges=2, priests=4, power=10)) self.assertNotEqual( common.Income(coins=10, workers=1, bridges=2, priests=4, power=4), common.Income(coins=10, workers=1, bridges=2, priests=4, power=3))
def _tp_income_spots(self) -> List[common.Income]: return [ common.Income(coins=2, power=1) for _ in range( Faction.TOTAL_STRUCTURES[common.Structure.TRADING_POST] // 2) ] + [ common.Income(coins=2, power=2) for _ in range( Faction.TOTAL_STRUCTURES[common.Structure.TRADING_POST] // 2) ]
def test_addition_operator(self) -> None: self.assertEqual( common.Income(power=1) + common.Income(power=2, priests=4), common.Income(power=3, priests=4)) self.assertEqual( sum((common.Income(power=10), common.Income(power=2, bridges=4))), common.Income(power=12, bridges=4)) income = common.Income(power=10) income += common.Income(power=1) self.assertEqual(income, common.Income(power=11))
def test_income_for_structures(self) -> None: engineer = faction.Engineers() # tests SH + SA + DW income, with 1 DW incoming missing. self.assertEqual( engineer.income_for_structures({ common.Structure.DWELLING: 4, common.Structure.STRONGHOLD: 1, common.Structure.SANCTUARY: 1 }), common.Income(workers=3, priests=1, power=2)) # Test TP + TE income, extra power. self.assertEqual( engineer.income_for_structures({ common.Structure.TRADING_POST: 3, common.Structure.TEMPLE: 2 }), common.Income(priests=1, coins=6, power=9))
def test_income_for_structures(self) -> None: halfling = faction.Halflings() # tests SH + SA + DW income. self.assertEqual( halfling.income_for_structures({ common.Structure.DWELLING: 4, common.Structure.STRONGHOLD: 1, common.Structure.SANCTUARY: 1 }), common.Income(workers=(4 + 1), priests=1, power=2)) # Tests last DW does not give income + TP + TE income self.assertEqual( halfling.income_for_structures({ common.Structure.DWELLING: 8, common.Structure.TRADING_POST: 3, common.Structure.TEMPLE: 1 }), common.Income(workers=8, priests=1, coins=6, power=4))
def _worker_income_spots(self) -> List[common.Income]: return [ common.Income(workers=1), common.Income(workers=1), common.Income(), common.Income(workers=1), common.Income(workers=1), common.Income(), common.Income(workers=1), common.Income(workers=1) ]
def test_subtraction(self) -> None: self.assertEqual( common.Income(power=1) - common.Income(power=1, priests=4), common.Income(power=0, priests=-4)) income = common.Income(power=10) income -= common.Income(power=1) self.assertEqual(income, common.Income(power=9))
def test_income_from_bonus_cards(self) -> None: self.assertEqual(common.BonusCard.PRIEST.player_income(), common.Income(priests=1)) self.assertEqual(common.BonusCard.WORKER_3POWER.player_income(), common.Income(workers=1, power=3)) self.assertEqual(common.BonusCard.COIN6.player_income(), common.Income(coins=6)) self.assertEqual(common.BonusCard.POWER3_SHIPPING.player_income(), common.Income(power=3)) self.assertEqual(common.BonusCard.SPADE_COIN2.player_income(), common.Income(coins=2)) self.assertEqual(common.BonusCard.CULT_COIN4.player_income(), common.Income(coins=4)) self.assertEqual(common.BonusCard.DWELLING_COIN2.player_income(), common.Income(coins=2)) self.assertEqual(common.BonusCard.TRADING_POST_WORKER.player_income(), common.Income(workers=1)) self.assertEqual(common.BonusCard.STRONGHOLD_WORKER2.player_income(), common.Income(workers=2))
def _temple_income_spots(self) -> List[common.Income]: return [ common.Income(priests=1), common.Income(power=5), common.Income(priests=1) ]
def _default_income(self) -> common.Income: return common.Income()
def _temple_income_spots(self) -> List[common.Income]: return [ common.Income(priests=1) for _ in range(Faction.TOTAL_STRUCTURES[common.Structure.TEMPLE]) ]
def _worker_income_spots(self) -> List[common.Income]: return [ common.Income(workers=1) for _ in range( Faction.TOTAL_STRUCTURES[common.Structure.DWELLING] - 1) ] + [common.Income()]
def test_functions_raise_errors(self) -> None: with self.assertRaises(utils.InternalError): common.Income().is_valid() with self.assertRaises(utils.InternalError): common.Income().force_valid()
def testIncomeFromFavorTiel(self) -> None: self.assertEqual(common.FavorTile.COIN3_FIRE.player_income(), common.Income(coins=3)) self.assertEqual(common.FavorTile.WORKER_POWER_EARTH2.player_income(), common.Income(workers=1, power=1)) self.assertEqual(common.FavorTile.POWER4_AIR2.player_income(), common.Income(power=4)) self.assertEqual(common.FavorTile.TP3VP_WATER.player_income(), common.Income()) self.assertEqual(common.FavorTile.DWELLING2_EARTH.player_income(), common.Income()) self.assertEqual(common.FavorTile.TP1234_AIR.player_income(), common.Income()) self.assertEqual(common.FavorTile.TOWN_FIRE2.player_income(), common.Income()) self.assertEqual(common.FavorTile.CULTACTION_AIR2.player_income(), common.Income()) self.assertEqual(common.FavorTile.FIRE3.player_income(), common.Income()) self.assertEqual(common.FavorTile.WATER3.player_income(), common.Income()) self.assertEqual(common.FavorTile.EARTH3.player_income(), common.Income()) self.assertEqual(common.FavorTile.AIR3.player_income(), common.Income())
def _sanctuary_income(self) -> common.Income: return common.Income(priests=1)
def _strong_hold_income(self) -> common.Income: return common.Income(power=2)
def _default_income(self) -> common.Income: return common.Income(workers=1)