Exemple #1
0
class PlayerTestCase(TestCase):
    @patch("tekmate.items.Item.fill_attributes")
    def setUp(self, mock_fill):
        mock_fill.return_value = None
        self.player = Player()

        self.create_obtainable_item()
        self.create_usable_item()
        self.create_invalid_items()

    def create_obtainable_item(self):
        self.obtainable_item = Item([])
        self.obtainable_item.obtainable = True

    def create_usable_item(self):
        self.usable_item = Item([])
        self.usable_item.usable = True

    def create_invalid_items(self):
        self.not_usable_item = Item([])
        self.not_obtainable_item = Item([])

    def test_player_position_defaults_at_zero_450(self):
        self.assertEqual(self.player.position, (0, 400))

    def test_when_picking_up_obtainable_item_size_of_bag_should_be_one(self):
        self.player.add_item(self.obtainable_item)
        self.assertEqual(len(self.player.bag), 1)

    def test_when_picking_up_obtainable_item_parent_container_should_be_changed_to_bag(
            self):
        self.player.add_item(self.obtainable_item)
        self.assertIs(self.obtainable_item.parent_container, self.player.bag)

    def test_when_looked_at_item_in_bag_description_should_be_returned(self):
        self.player.add_item(self.obtainable_item)
        self.assertEqual("INSPECT", self.player.look_at(self.obtainable_item))

    def test_when_looked_at_item_in_space_inspect_message_should_be_returned(
            self):
        self.assertEqual(self.player.look_at(self.obtainable_item),
                         self.obtainable_item.get_look_at_message())

    def test_when_trigger_item_combination_is_called_item_combine_functions_are_called(
            self):
        mock_item1 = Mock(spec=Item)
        mock_item2 = Mock(spec=Item)
        self.player.trigger_item_combination(mock_item1, mock_item2)
        mock_item1.combine.assert_called_with(mock_item2)
        mock_item2.combine.assert_called_with(mock_item1)

    @patch("tekmate.items.Item.fill_attributes")
    def test_when_added_non_obtainable_item_return_false(self, mock_fill):
        mock_fill.return_value = None
        any_item = Item([])
        self.assertFalse(self.player.add_item(any_item))
Exemple #2
0
class PlayerTestCase(TestCase):
    @patch("tekmate.items.Item.fill_attributes")
    def setUp(self, mock_fill):
        mock_fill.return_value = None
        self.player = Player()

        self.create_obtainable_item()
        self.create_usable_item()
        self.create_invalid_items()

    def create_obtainable_item(self):
        self.obtainable_item = Item([])
        self.obtainable_item.obtainable = True

    def create_usable_item(self):
        self.usable_item = Item([])
        self.usable_item.usable = True

    def create_invalid_items(self):
        self.not_usable_item = Item([])
        self.not_obtainable_item = Item([])

    def test_player_position_defaults_at_zero_450(self):
        self.assertEqual(self.player.position, (0, 400))

    def test_when_picking_up_obtainable_item_size_of_bag_should_be_one(self):
        self.player.add_item(self.obtainable_item)
        self.assertEqual(len(self.player.bag), 1)

    def test_when_picking_up_obtainable_item_parent_container_should_be_changed_to_bag(self):
        self.player.add_item(self.obtainable_item)
        self.assertIs(self.obtainable_item.parent_container, self.player.bag)

    def test_when_looked_at_item_in_bag_description_should_be_returned(self):
        self.player.add_item(self.obtainable_item)
        self.assertEqual("INSPECT", self.player.look_at(self.obtainable_item))

    def test_when_looked_at_item_in_space_inspect_message_should_be_returned(self):
        self.assertEqual(self.player.look_at(self.obtainable_item), self.obtainable_item.get_look_at_message())

    def test_when_trigger_item_combination_is_called_item_combine_functions_are_called(self):
        mock_item1 = Mock(spec=Item)
        mock_item2 = Mock(spec=Item)
        self.player.trigger_item_combination(mock_item1, mock_item2)
        mock_item1.combine.assert_called_with(mock_item2)
        mock_item2.combine.assert_called_with(mock_item1)

    @patch("tekmate.items.Item.fill_attributes")
    def test_when_added_non_obtainable_item_return_false(self, mock_fill):
        mock_fill.return_value = None
        any_item = Item([])
        self.assertFalse(self.player.add_item(any_item))
Exemple #3
0
 def test_when_getting_obtainable_message_of_non_obtainable_item_get_not_obtainable_message(
         self, mock_fill):
     mock_fill.return_value = None
     any_item = Item([])
     self.assertEqual(any_item.add_not_obtainable_message,
                      any_item.get_add_message())
Exemple #4
0
 def test_when_parent_container_is_none_AssertionError_is_raised(self):
     with self.assertRaises(AssertionError):
         Item(None)
Exemple #5
0
 def test_when_key_combined_other_than_door_raise_exception(
         self, mock_fill):
     mock_fill.return_value = None
     any_item = Item([])
     comb = self.key.is_combination_possible(any_item)
     self.assertFalse(comb[0])
Exemple #6
0
 def test_when_letter_combined_other_than_door_return_false(
         self, mock_fill):
     mock_fill.return_value = None
     any_item = Item([])
     comb = self.letter.is_combination_possible(any_item)
     self.assertFalse(comb[0])
Exemple #7
0
 def test_when_combined_with_other_than_telephone_note_return_false(
         self, mock_fill):
     mock_fill.return_value = None
     any_item = Item([])
     comb = self.telephone.is_combination_possible(any_item)
     self.assertFalse(comb[0])
Exemple #8
0
 def test_when_combined_with_other_than_door_retrn_false(self, mock_fill):
     mock_fill.return_value = None
     obj = Item([])
     comb = self.paperclip.is_combination_possible(obj)
     self.assertFalse(comb[0])
Exemple #9
0
 def create_obtainable_item(self):
     self.obtainable_item = Item([])
     self.obtainable_item.obtainable = True
Exemple #10
0
class ItemTestCase(TestCase):
    @patch("tekmate.items.Item.fill_attributes")
    def setUp(self, mock_fill):
        mock_fill.return_value = None
        self.container = []
        self.item = Item(self.container)

    def test_can_create_item(self):
        self.assertEqual("NAME", self.item.get_name())

    def test_when_created_item_should_be_inside_parent_container(self):
        self.assertIn(self.item, self.item.parent_container)

    def test_not_obtainable_by_default(self):
        self.assertFalse(self.item.obtainable)

    def test_not_usable_by_default(self):
        self.assertFalse(self.item.usable)

    def test_looked_at_door_variable_status(self):
        self.assertEqual(self.item.looked_at, False)
        self.item.looked_at = True
        self.assertEqual(self.item.looked_at, True)

    def test_when_player_use_unusable_item_return_use_not_usable_message(self):
        self.item.usable = False
        self.assertEqual(self.item.get_use_message(), "NOT_USABLE")

    def test_when_parent_container_is_none_AssertionError_is_raised(self):
        with self.assertRaises(AssertionError):
            Item(None)

    def test_can_combine(self):
        item = self.item

        class MockItem(Item):
            def __init__(self, parent_container):
                super(MockItem, self).__init__(parent_container)
                self.called = False

            def combine(self, other):
                self.called = other is item

            def fill_attributes(self):
                pass

        mock_item = MockItem([])
        mock_item.combine(self.item)
        self.assertTrue(mock_item.called)

    def test_when_remove_from_container_parent_container_loses_item(self):
        self.item.remove_from_parent_container()
        self.assertNotIn(self.item, self.container)

    def test_when_add_to_container_container_should_change(self):
        container_new = []
        self.item.move_to_container(container_new)
        self.assertIn(self.item, container_new)
        self.assertNotIn(self.item, self.container)

    def test_when_looking_at_item_looked_at_must_be_true(self):
        self.item.get_look_at_message()
        self.assertTrue(self.item.looked_at)

    def test_when_inspecting_an_item_return_inspect_message(self):
        self.assertEqual(self.item.get_inspect_message(), "INSPECT")

    @patch("tekmate.items.load_item_data")
    def test_when_filling_attributes_values_are_set_correctly(
            self, mock_item_load_data):
        mock_item_load_data.return_value = {
            u'use': u'USE',
            u'inspect': u'INSPECT',
            u'look_at': u'LOOK_AT',
            u'usable': u'USABLE',
            u'obtainable': u'OBTAINABLE'
        }
        self.item.fill_attributes()
        self.assertEqual(self.item.get_use_message(), "USE")
        self.assertEqual(self.item.inspect_message, "INSPECT")
        self.assertEqual(self.item.get_look_at_message(), "LOOK_AT")
        self.assertTrue(self.item.usable)
        self.assertTrue(self.item.obtainable)

    @patch("tekmate.items.Item.fill_attributes")
    def test_when_getting_obtainable_message_of_non_obtainable_item_get_not_obtainable_message(
            self, mock_fill):
        mock_fill.return_value = None
        any_item = Item([])
        self.assertEqual(any_item.add_not_obtainable_message,
                         any_item.get_add_message())

    @patch("tekmate.items.Item.fill_attributes")
    def test_when_getting_obtainable_message_of_obtainable_item_get_add_message(
            self, mock_fill):
        mock_fill.return_value = None
        any_item = Item([])
        any_item.obtainable = True
        self.assertEqual(any_item.add_message, any_item.get_add_message())
Exemple #11
0
 def test_when_getting_obtainable_message_of_obtainable_item_get_add_message(self, mock_fill):
     mock_fill.return_value = None
     any_item = Item([])
     any_item.obtainable = True
     self.assertEqual(any_item.add_message, any_item.get_add_message())
Exemple #12
0
 def setUp(self, mock_fill):
     mock_fill.return_value = None
     self.container = []
     self.item = Item(self.container)
Exemple #13
0
class ItemTestCase(TestCase):
    @patch("tekmate.items.Item.fill_attributes")
    def setUp(self, mock_fill):
        mock_fill.return_value = None
        self.container = []
        self.item = Item(self.container)

    def test_can_create_item(self):
        self.assertEqual("NAME", self.item.get_name())

    def test_when_created_item_should_be_inside_parent_container(self):
        self.assertIn(self.item, self.item.parent_container)

    def test_not_obtainable_by_default(self):
        self.assertFalse(self.item.obtainable)

    def test_not_usable_by_default(self):
        self.assertFalse(self.item.usable)

    def test_looked_at_door_variable_status(self):
        self.assertEqual(self.item.looked_at, False)
        self.item.looked_at = True
        self.assertEqual(self.item.looked_at, True)

    def test_when_player_use_unusable_item_return_use_not_usable_message(self):
        self.item.usable = False
        self.assertEqual(self.item.get_use_message(), "NOT_USABLE")

    def test_when_parent_container_is_none_AssertionError_is_raised(self):
        with self.assertRaises(AssertionError):
            Item(None)

    def test_can_combine(self):
        item = self.item

        class MockItem(Item):
            def __init__(self, parent_container):
                super(MockItem, self).__init__(parent_container)
                self.called = False

            def combine(self, other):
                self.called = other is item

            def fill_attributes(self):
                pass


        mock_item = MockItem([])
        mock_item.combine(self.item)
        self.assertTrue(mock_item.called)

    def test_when_remove_from_container_parent_container_loses_item(self):
        self.item.remove_from_parent_container()
        self.assertNotIn(self.item, self.container)

    def test_when_add_to_container_container_should_change(self):
        container_new = []
        self.item.move_to_container(container_new)
        self.assertIn(self.item, container_new)
        self.assertNotIn(self.item, self.container)

    def test_when_looking_at_item_looked_at_must_be_true(self):
        self.item.get_look_at_message()
        self.assertTrue(self.item.looked_at)

    def test_when_inspecting_an_item_return_inspect_message(self):
        self.assertEqual(self.item.get_inspect_message(), "INSPECT")

    @patch("tekmate.items.load_item_data")
    def test_when_filling_attributes_values_are_set_correctly(self, mock_item_load_data):
        mock_item_load_data.return_value = {u'use': u'USE',
                                            u'inspect': u'INSPECT',
                                            u'look_at': u'LOOK_AT',
                                            u'usable': u'USABLE',
                                            u'obtainable': u'OBTAINABLE'}
        self.item.fill_attributes()
        self.assertEqual(self.item.get_use_message(), "USE")
        self.assertEqual(self.item.inspect_message, "INSPECT")
        self.assertEqual(self.item.get_look_at_message(), "LOOK_AT")
        self.assertTrue(self.item.usable)
        self.assertTrue(self.item.obtainable)

    @patch("tekmate.items.Item.fill_attributes")
    def test_when_getting_obtainable_message_of_non_obtainable_item_get_not_obtainable_message(self, mock_fill):
        mock_fill.return_value = None
        any_item = Item([])
        self.assertEqual(any_item.add_not_obtainable_message, any_item.get_add_message())

    @patch("tekmate.items.Item.fill_attributes")
    def test_when_getting_obtainable_message_of_obtainable_item_get_add_message(self, mock_fill):
        mock_fill.return_value = None
        any_item = Item([])
        any_item.obtainable = True
        self.assertEqual(any_item.add_message, any_item.get_add_message())
Exemple #14
0
 def test_when_added_non_obtainable_item_return_false(self, mock_fill):
     mock_fill.return_value = None
     any_item = Item([])
     self.assertFalse(self.player.add_item(any_item))
Exemple #15
0
 def create_invalid_items(self):
     self.not_usable_item = Item([])
     self.not_obtainable_item = Item([])
Exemple #16
0
 def create_usable_item(self):
     self.usable_item = Item([])
     self.usable_item.usable = True
Exemple #17
0
 def create_obtainable_item(self):
     self.obtainable_item = Item([])
     self.obtainable_item.obtainable = True
Exemple #18
0
 def setUp(self, mock_fill):
     mock_fill.return_value = None
     self.container = []
     self.item = Item(self.container)