class TestSpecies(unittest.TestCase): def setUp(self): self.attacker = Species() self.attacker.traits = [TraitCard(CARNIVORE)] self.defender = Species() self.left_neighbor = Species() self.right_neighbor = Species() self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 3, 3) self.species_list = [ self.species_2, self.species_4, self.species_3, self.species_5, self.species_1 ] self.player_1 = PlayerState(1) self.player_2 = PlayerState(2) def test_all_attackable_species(self): self.species_1.traits = [TraitCard(CARNIVORE)] self.species_2.traits = [TraitCard(CLIMBING)] self.species_4.traits = [TraitCard(HARDSHELL)] self.player_1.species = [self.species_2, self.species_3] self.player_2.species = [self.species_4, self.species_5] self.assertEqual( self.species_1.all_attackable_species( [self.player_1, self.player_2]), [self.species_3, self.species_5]) def test_attackable_species(self): self.species_1.traits = [TraitCard(CARNIVORE)] self.species_2.traits = [TraitCard(CLIMBING)] self.species_4.traits = [TraitCard(HARDSHELL)] self.player_1.species = [ self.species_2, self.species_3, self.species_4, self.species_5 ] self.assertEqual(self.species_1.attackable_species(self.player_1), [self.species_3, self.species_5]) def test_trait_names(self): self.assertEqual(self.defender.trait_names(), []) self.assertEqual(self.attacker.trait_names(), [CARNIVORE]) def test_attackable(self): self.assertTrue(self.defender.is_attackable(self.attacker)) def test_no_carnivore(self): self.attacker.traits = [] self.assertFalse(self.defender.is_attackable(self.attacker)) def test_burrowing(self): self.defender.traits = [TraitCard(BURROWING)] self.defender.population, self.defender.food = (4, 4) self.assertFalse(self.defender.is_attackable(self.attacker)) self.defender.food = 3 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_climbing(self): self.defender.traits = [TraitCard(CLIMBING)] self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.traits.append(TraitCard(CLIMBING)) self.assertTrue(self.defender.is_attackable(self.attacker)) def test_hard_shell(self): self.defender.traits = [TraitCard(HARDSHELL)] self.defender.body = 3 self.attacker.body = 6 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.body = 7 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_herding(self): self.defender.traits = [TraitCard(HERDING)] self.defender.population = 4 self.attacker.population = 3 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.population = 5 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_symbiosis(self): self.defender.traits = [TraitCard(SYMBIOSIS)] self.defender.body = 3 self.right_neighbor.body = 5 self.assertFalse( self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.right_neighbor.body = 2 self.assertTrue( self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) def test_warning_call(self): self.left_neighbor.traits = [TraitCard(WARNINGCALL)] self.right_neighbor.traits = [TraitCard(WARNINGCALL)] self.assertFalse( self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) self.assertFalse( self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.attacker.traits.append(TraitCard(AMBUSH)) self.assertTrue( self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) def test_show_changes(self): self.assertEquals(self.species_1.show_changes(self.species_3), '[[body, 4->3]]') self.assertEquals(self.species_1.show_changes(self.species_2), '') self.species_2.traits = [TraitCard(CLIMBING)] self.assertEquals(self.species_1.show_changes(self.species_2), '[[traits: new cards: [climbing, 0]]]') self.species_3.traits = [TraitCard(HERDING)] self.assertEquals( self.species_2.show_changes(self.species_3), '[[body, 4->3], [traits: [0, [climbing, 0]->[herding, 0]]]]') self.species_3.population = 1 self.species_3.food = 0 self.species_3.traits.append(TraitCard(BURROWING)) self.assertEquals( self.species_2.show_changes(self.species_3), '[[population, 4->1], [food, 4->0], [body, 4->3], ' '[traits: new cards: [herding, 0], [burrowing, 0]]]') self.species_2.traits = [TraitCard(CLIMBING)] self.species_3.traits = [TraitCard(CLIMBING)] self.assertEquals(self.species_2.show_changes(self.species_3), '[[population, 4->1], [food, 4->0], [body, 4->3]]')
class TestSpecies(unittest.TestCase): def setUp(self): self.attacker = Species() self.attacker.traits = [TraitCard("carnivore")] self.defender = Species() self.left_neighbor = Species() self.right_neighbor = Species() self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 3, 3) self.species_list = [self.species_2, self.species_4, self.species_3, self.species_5, self.species_1] def test_can_eat(self): self.assertFalse(self.species_1.can_eat()) self.assertTrue(self.species_4.can_eat()) fat_tissue = Species(4, 3, 4, [TraitCard("fat-tissue")], 3) self.assertTrue(fat_tissue.can_eat()) fat_tissue.fat_storage = 4 self.assertFalse(fat_tissue.can_eat()) def test_trait_names(self): self.assertEqual(self.defender.trait_names(), []) self.assertEqual(self.attacker.trait_names(), ["carnivore"]) def test_attackable(self): self.assertTrue(self.defender.is_attackable(self.attacker)) def test_no_carnivore(self): self.attacker.traits = [] self.assertFalse(self.defender.is_attackable(self.attacker)) def test_burrowing(self): self.defender.traits = [TraitCard("burrowing")] self.defender.population, self.defender.food = (4, 4) self.assertFalse(self.defender.is_attackable(self.attacker)) self.defender.food = 3 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_climbing(self): self.defender.traits = [TraitCard("climbing")] self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.traits.append(TraitCard("climbing")) self.assertTrue(self.defender.is_attackable(self.attacker)) def test_hard_shell(self): self.defender.traits = [TraitCard("hard-shell")] self.defender.body = 3 self.attacker.body = 6 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.body = 7 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_herding(self): self.defender.traits = [TraitCard("herding")] self.defender.population = 4 self.attacker.population = 3 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.population = 5 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_symbiosis(self): self.defender.traits = [TraitCard("symbiosis")] self.defender.body = 3 self.right_neighbor.body = 5 self.assertFalse(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.right_neighbor.body = 2 self.assertTrue(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) def test_warning_call(self): self.left_neighbor.traits = [TraitCard("warning-call")] self.right_neighbor.traits = [TraitCard("warning-call")] self.assertFalse(self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) self.assertFalse(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.attacker.traits.append(TraitCard("ambush")) self.assertTrue(self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) def test_is_larger(self): # Population different self.defender.population = 2 self.attacker.population = 1 self.assertEqual(Species.is_larger(self.defender, self.attacker), 1) self.assertEqual(Species.is_larger(self.attacker, self.defender), -1) # Same population different food self.attacker.population = 2 self.defender.food = 2 self.attacker.food = 1 self.assertEqual(Species.is_larger(self.defender, self.attacker), 1) self.assertEqual(Species.is_larger(self.attacker, self.defender), -1) # Same population and food different body self.attacker.food = 2 self.defender.body = 4 self.attacker.body = 3 self.assertEqual(Species.is_larger(self.defender, self.attacker), 1) self.assertEqual(Species.is_larger(self.attacker, self.defender), -1) # Equal population, food, and body self.attacker.body = 4 self.assertEqual(Species.is_larger(self.defender, self.attacker), 0) def test_sort_lex(self): sorted_list = [self.species_2, self.species_1, self.species_3, self.species_4, self.species_5] self.assertEqual(Species.sort_lex(self.species_list), sorted_list) self.assertNotEqual(Species.sort_lex(self.species_list), self.species_list) def test_largest_tied_species(self): tied_species = [self.species_2, self.species_1] self.assertEqual(Species.largest_tied_species(self.species_list), tied_species) def test_largest_fatty_need(self): self.species_1.traits = [TraitCard("fat-tissue")] self.species_2.traits = [TraitCard("fat-tissue")] self.species_4.traits = [TraitCard("fat-tissue")] self.assertEqual(Species.largest_fatty_need([self.species_1, self.species_4]), self.species_4) self.assertEqual(Species.largest_fatty_need([self.species_1, self.species_2]), self.species_1)
class TestSpecies(unittest.TestCase): def setUp(self): self.attacker = Species() self.attacker.traits = [TraitCard("carnivore")] self.defender = Species() self.left_neighbor = Species() self.right_neighbor = Species() self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 3, 3) self.species_list = [ self.species_2, self.species_4, self.species_3, self.species_5, self.species_1 ] def test_trait_names(self): self.assertEqual(self.defender.trait_names(), []) self.assertEqual(self.attacker.trait_names(), ["carnivore"]) def test_attackable(self): self.assertTrue(self.defender.is_attackable(self.attacker)) def test_no_carnivore(self): self.attacker.traits = [] self.assertFalse(self.defender.is_attackable(self.attacker)) def test_burrowing(self): self.defender.traits = [TraitCard("burrowing")] self.defender.population, self.defender.food = (4, 4) self.assertFalse(self.defender.is_attackable(self.attacker)) self.defender.food = 3 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_climbing(self): self.defender.traits = [TraitCard("climbing")] self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.traits.append(TraitCard("climbing")) self.assertTrue(self.defender.is_attackable(self.attacker)) def test_hard_shell(self): self.defender.traits = [TraitCard("hard-shell")] self.defender.body = 3 self.attacker.body = 6 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.body = 7 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_herding(self): self.defender.traits = [TraitCard("herding")] self.defender.population = 4 self.attacker.population = 3 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.population = 5 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_symbiosis(self): self.defender.traits = [TraitCard("symbiosis")] self.defender.body = 3 self.right_neighbor.body = 5 self.assertFalse( self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.right_neighbor.body = 2 self.assertTrue( self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) def test_warning_call(self): self.left_neighbor.traits = [TraitCard("warning-call")] self.right_neighbor.traits = [TraitCard("warning-call")] self.assertFalse( self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) self.assertFalse( self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.attacker.traits.append(TraitCard("ambush")) self.assertTrue( self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) def test_is_larger(self): # Population different self.defender.population = 2 self.attacker.population = 1 self.assertEqual(Species.is_larger(self.defender, self.attacker), 1) self.assertEqual(Species.is_larger(self.attacker, self.defender), -1) # Same population different food self.attacker.population = 2 self.defender.food = 2 self.attacker.food = 1 self.assertEqual(Species.is_larger(self.defender, self.attacker), 1) self.assertEqual(Species.is_larger(self.attacker, self.defender), -1) # Same population and food different body self.attacker.food = 2 self.defender.body = 4 self.attacker.body = 3 self.assertEqual(Species.is_larger(self.defender, self.attacker), 1) self.assertEqual(Species.is_larger(self.attacker, self.defender), -1) # Equal population, food, and body self.attacker.body = 4 self.assertEqual(Species.is_larger(self.defender, self.attacker), 0) def test_sort_lex(self): sorted_list = [ self.species_2, self.species_1, self.species_3, self.species_4, self.species_5 ] self.assertEqual(Species.sort_lex(self.species_list), sorted_list) self.assertNotEqual(Species.sort_lex(self.species_list), self.species_list) def test_largest_tied_species(self): tied_species = [self.species_2, self.species_1] self.assertEqual(Species.largest_tied_species(self.species_list), tied_species) def test_largest_fatty_need(self): self.species_1.traits = [TraitCard("fat-tissue")] self.species_2.traits = [TraitCard("fat-tissue")] self.species_4.traits = [TraitCard("fat-tissue")] self.assertEqual( Species.largest_fatty_need([self.species_1, self.species_4]), self.species_4) self.assertEqual( Species.largest_fatty_need([self.species_1, self.species_2]), self.species_1)
class TestSpecies(unittest.TestCase): def setUp(self): self.attacker = Species() self.attacker.traits = [TraitCard(CARNIVORE)] self.defender = Species() self.left_neighbor = Species() self.right_neighbor = Species() self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 3, 3) self.species_list = [self.species_2, self.species_4, self.species_3, self.species_5, self.species_1] def test_trait_names(self): self.assertEqual(self.defender.trait_names(), []) self.assertEqual(self.attacker.trait_names(), [CARNIVORE]) def test_attackable(self): self.assertTrue(self.defender.is_attackable(self.attacker)) def test_no_carnivore(self): self.attacker.traits = [] self.assertFalse(self.defender.is_attackable(self.attacker)) def test_burrowing(self): self.defender.traits = [TraitCard(BURROWING)] self.defender.population, self.defender.food = (4, 4) self.assertFalse(self.defender.is_attackable(self.attacker)) self.defender.food = 3 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_climbing(self): self.defender.traits = [TraitCard(CLIMBING)] self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.traits.append(TraitCard(CLIMBING)) self.assertTrue(self.defender.is_attackable(self.attacker)) def test_hard_shell(self): self.defender.traits = [TraitCard(HARDSHELL)] self.defender.body = 3 self.attacker.body = 6 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.body = 7 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_herding(self): self.defender.traits = [TraitCard(HERDING)] self.defender.population = 4 self.attacker.population = 3 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.population = 5 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_symbiosis(self): self.defender.traits = [TraitCard(SYMBIOSIS)] self.defender.body = 3 self.right_neighbor.body = 5 self.assertFalse(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.right_neighbor.body = 2 self.assertTrue(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) def test_warning_call(self): self.left_neighbor.traits = [TraitCard(WARNINGCALL)] self.right_neighbor.traits = [TraitCard(WARNINGCALL)] self.assertFalse(self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) self.assertFalse(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.attacker.traits.append(TraitCard(AMBUSH)) self.assertTrue(self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor))
class TestDealer(unittest.TestCase): def setUp(self): self.dealer = Dealer([Player(), Player(), Player(), Player()]) self.dealer.watering_hole = 10 self.dealer.player_sets[0]['state'].name = 0; self.dealer.player_sets[1]['state'].name = 1; self.dealer.player_sets[2]['state'].name = 2; self.dealer.player_sets[3]['state'].name = 3; self.dealer.current_player_index = 2 self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 3, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 3, 3) self.species_list = [self.species_1, self.species_2, self.species_3, self.species_4, self.species_5] self.dealer.player_sets[0]['state'].species = [self.species_1] self.dealer.player_sets[1]['state'].species = [self.species_2] self.dealer.player_sets[2]['state'].species = [self.species_3] self.dealer.player_sets[3]['state'].species = [self.species_4, self.species_5] def test_check_for_hungries(self): hungries = self.dealer.check_for_hungries(self.species_list) self.assertEqual(2, len(hungries)) self.assertEqual(self.species_4, hungries[0]) def test_opponents(self): opponents = self.dealer.opponents() self.assertEqual(3, len(opponents)) opponents_name_2 = filter(lambda p: p.name == 2, opponents) self.assertEqual(0, len(opponents_name_2)) def test_carnivore_targets(self): list_of_opponents = self.dealer.opponents() self.species_3.traits = [TraitCard("carnivore")] self.species_2.traits = [TraitCard("climbing")] self.species_4.traits = [TraitCard("climbing")] self.species_5.traits = [TraitCard("climbing")] self.assertEqual(Dealer.carnivore_targets(self.species_3, list_of_opponents), [self.species_1]) self.species_1.traits = [TraitCard("climbing")] self.assertEqual(Dealer.carnivore_targets(self.species_3, list_of_opponents), []) def test_auto_eat(self): self.dealer.current_player_index = 2 self.species_3.traits= [TraitCard("fat-tissue")] self.species_3.fat_storage = 0 self.assertEqual(self.dealer.auto_eat(), [0, 3]) self.species_3.traits = [] self.species_3.food = 2 self.assertEqual(self.dealer.auto_eat(), 0) self.species_3.traits = [TraitCard("carnivore")] self.assertIsNone(self.dealer.auto_eat()) self.species_2.traits = [TraitCard("climbing")] self.species_4.traits = [TraitCard("climbing")] self.species_5.traits = [TraitCard("climbing")] self.assertEqual(self.dealer.auto_eat(), [0, 0, 0]) self.species_3.food = 4 self.assertIsNone(self.dealer.auto_eat()) def test_feed_1_herbivore(self): # current player has single hungry herbivore -> auto_eat self.dealer.feed1() self.assertEqual(self.dealer.watering_hole, 9) self.assertEqual(self.dealer.current_player_index, 3) self.assertEqual(self.species_3.food, 4) def test_feed_1_fatty(self): # current player is feeding fat-tissue species self.species_3.traits = [TraitCard("fat-tissue")] self.dealer.feed1() self.assertEqual(self.dealer.watering_hole, 7) self.assertEqual(self.dealer.current_player_index, 3) self.assertEqual(self.species_3.food, 3) self.assertEqual(self.species_3.fat_storage, 3) def test_feed_1_carnivore(self): self.species_3.traits = [TraitCard("carnivore")] self.species_2.traits = [TraitCard("climbing")] self.species_4.traits = [TraitCard("climbing")] self.species_5.traits = [TraitCard("climbing")] self.dealer.feed1() self.assertEqual(self.dealer.watering_hole, 9) self.assertEqual(self.dealer.current_player_index, 3) self.assertEqual(self.species_3.food, 4) self.assertEqual(self.species_1.population, 3) def test_feed_1_cant_feed(self): self.dealer.feed1() self.assertEqual(self.dealer.current_player_index, 3) def test_feed_1_no_wh_food(self): self.dealer.watering_hole = 0 with self.assertRaises(Exception): self.dealer.feed1() def test_feed_1_scavenger(self): self.species_3.traits.append(TraitCard("carnivore")) self.species_4.traits.append(TraitCard("scavenger")) self.species_2.traits.append(TraitCard("climbing")) self.species_4.traits.append(TraitCard("climbing")) self.species_5.traits.append(TraitCard("climbing")) self.dealer.feed1() self.assertEqual(self.species_3.food, 4) self.assertEqual(self.species_4.food, 4) self.assertEqual(self.species_1.population, 3) self.assertEqual(self.dealer.watering_hole, 8) def test_feed_1_double_foraging(self): self.species_3.traits.append(TraitCard("foraging")) self.species_3.food = 1 self.dealer.feed1() self.assertEqual(self.species_3.food, 3) def test_feed_1_foraging(self): self.species_3.traits.append(TraitCard("foraging")) self.species_3.food = 3 self.dealer.feed1() self.assertEqual(self.species_3.food, 4) def test_feed_1_cooperation(self): self.dealer.current_player_index = 3 self.species_4.traits.append(TraitCard("cooperation")) self.species_5.food = 1 self.dealer.feed1() self.assertEqual(self.species_4.food, 4) self.assertEqual(self.species_5.food, 2) def test_feed_1_scavenger_cooperation(self): self.species_3.traits.append(TraitCard("carnivore")) self.species_4.traits.append(TraitCard("climbing")) self.species_4.traits.append(TraitCard("cooperation")) self.species_4.traits.append(TraitCard("scavenger")) self.species_2.traits.append(TraitCard("climbing")) self.species_5.traits.append(TraitCard("climbing")) self.species_5.food = 2 self.dealer.feed1() self.assertTrue("cooperation" in self.species_4.trait_names()) self.assertEqual(self.species_4.food, 4) self.assertEqual(self.species_5.food, 3) def test_feed_1_cooperation_chain(self): self.dealer.player_sets[3]['state'].species.append(self.species_3) self.dealer.current_player_index = 3 self.species_4.traits.append(TraitCard("cooperation")) self.species_5.traits.append(TraitCard("cooperation")) self.species_5.food = 1 self.species_3.food = 0 self.dealer.feed1() self.assertEqual(self.species_4.food, 4) self.assertEqual(self.species_5.food, 2) self.assertEqual(self.species_3.food, 1) def test_feed_1_carnivore_foraging(self): self.species_3.food = 0 self.species_3.traits.append(TraitCard("carnivore")) self.species_3.traits.append(TraitCard("foraging")) self.species_2.traits.append(TraitCard("climbing")) self.species_4.traits.append(TraitCard("climbing")) self.species_5.traits.append(TraitCard("climbing")) self.dealer.feed1() self.assertEqual(self.species_3.food, 2) def test_feed_1_horns(self): self.species_3.food = 0 self.species_3.traits.append(TraitCard("carnivore")) self.species_1.traits.append(TraitCard("horns")) self.species_2.traits.append(TraitCard("climbing")) self.species_4.traits.append(TraitCard("climbing")) self.species_5.traits.append(TraitCard("climbing")) self.dealer.feed1() self.assertEqual(self.species_3.population, 3) self.assertEqual(self.species_3.food, 1) def test_feed_1_horns_no_food(self): self.species_3.traits.append(TraitCard("carnivore")) self.species_1.traits.append(TraitCard("horns")) self.species_2.traits.append(TraitCard("climbing")) self.species_4.traits.append(TraitCard("climbing")) self.species_5.traits.append(TraitCard("climbing")) self.dealer.feed1() self.assertEqual(self.species_3.population, 3) self.assertEqual(self.species_3.food, 3) def test_player_can_feed(self): self.assertFalse(self.dealer.player_can_feed(self.dealer.player_state(0))) self.assertTrue(self.dealer.player_can_feed(self.dealer.player_state(2))) self.species_4.traits.append(TraitCard("carnivore")) self.species_1.traits.append(TraitCard("climbing")) self.species_2.traits.append(TraitCard("climbing")) self.species_3.traits.append(TraitCard("climbing")) self.species_5.traits.append(TraitCard("climbing")) self.assertFalse(self.dealer.player_can_feed(self.dealer.player_state(3)))
class TestSpecies(unittest.TestCase): def setUp(self): self.attacker = Species() self.attacker.traits = [TraitCard("carnivore")] self.defender = Species() self.left_neighbor = Species() self.right_neighbor = Species() self.species_1 = Species(4, 4, 4) self.species_2 = Species(4, 4, 4) self.species_3 = Species(4, 4, 3) self.species_4 = Species(4, 3, 3) self.species_5 = Species(3, 3, 3) self.species_list = [self.species_2, self.species_4, self.species_3, self.species_5, self.species_1] def test_can_eat(self): self.assertFalse(self.species_1.can_eat()) self.assertTrue(self.species_4.can_eat()) fat_tissue = Species(4, 3, 4, [TraitCard("fat-tissue")], 3) self.assertTrue(fat_tissue.can_eat()) fat_tissue.fat_storage = 4 self.assertTrue(fat_tissue.can_eat()) fat_tissue.food = 4 self.assertFalse(fat_tissue.can_eat()) def test_trait_names(self): self.assertEqual(self.defender.trait_names(), []) self.assertEqual(self.attacker.trait_names(), ["carnivore"]) def test_attackable(self): self.assertTrue(self.defender.is_attackable(self.attacker)) def test_no_carnivore(self): self.attacker.traits = [] self.assertFalse(self.defender.is_attackable(self.attacker)) def test_burrowing(self): self.defender.traits = [TraitCard("burrowing")] self.defender.population, self.defender.food = (4, 4) self.assertFalse(self.defender.is_attackable(self.attacker)) self.defender.food = 3 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_climbing(self): self.defender.traits = [TraitCard("climbing")] self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.traits.append(TraitCard("climbing")) self.assertTrue(self.defender.is_attackable(self.attacker)) def test_hard_shell(self): self.defender.traits = [TraitCard("hard-shell")] self.defender.body = 3 self.attacker.body = 6 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.body = 7 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_herding(self): self.defender.traits = [TraitCard("herding")] self.defender.population = 4 self.attacker.population = 3 self.assertFalse(self.defender.is_attackable(self.attacker)) self.attacker.population = 5 self.assertTrue(self.defender.is_attackable(self.attacker)) def test_symbiosis(self): self.defender.traits = [TraitCard("symbiosis")] self.defender.body = 3 self.right_neighbor.body = 5 self.assertFalse(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.right_neighbor.body = 2 self.assertTrue(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) def test_warning_call(self): self.left_neighbor.traits = [TraitCard("warning-call")] self.right_neighbor.traits = [TraitCard("warning-call")] self.assertFalse(self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor)) self.assertFalse(self.defender.is_attackable(self.attacker, right_neighbor=self.right_neighbor)) self.attacker.traits.append(TraitCard("ambush")) self.assertTrue(self.defender.is_attackable(self.attacker, left_neighbor=self.left_neighbor))