コード例 #1
0
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]]')
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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))
コード例 #5
0
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)))
コード例 #6
0
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))