def test_empty_args(self): # None for None info = object_util.resolve_info(None, None) expected = None self.assertEqual(info, expected) # No changes for dict info = object_util.resolve_info(None, self.info_by_id["2"]) expected = { "base": 3, "lobby_id": 2, "lobby_name": "Lobby 2", "rooms": None, "some": 222 } self.assertEqual(info, expected) # None if id given info = object_util.resolve_info(None, "3") expected = None self.assertEqual(info, expected) # Converting list to dict is possible without info_by_id info = object_util.resolve_info(None, self.info_by_id["3"], self.property_names) expected = { "lobby_id": 3, "lobby_name": "Lobby 3", "rooms": [6, 7, 8], # "some": None, "base": "4" } self.assertEqual(info, expected) # No converting without property_names info = object_util.resolve_info(None, self.info_by_id["3"]) expected = {} self.assertEqual(info, expected)
def test_array_to_object_with_inheritance(self): info = object_util.resolve_info(self.info_by_id, self.info_by_id["3"], self.property_names) # ("some": 222 - inherited from "2") expected = { "lobby_id": 3, "lobby_name": "Lobby 3", "rooms": [6, 7, 8], # "some": 222, "base": "4" } self.assertEqual(info, expected)
def test_inheritance_by_value(self): info = object_util.resolve_info(self.info_by_id, self.info_by_id["2"], self.property_names) info2 = self.info_by_id["2"] expected = { "base": 3, "lobby_id": 2, "lobby_name": "Lobby 2", "rooms": [6, 7, 8], "some": 222 } self.assertEqual(info, expected) # (resolve_info don't cache) self.assertNotEqual(info, info2) self.assertIsNot(info, info2)
def test_nested_inheritance_and_aliases(self): info = object_util.resolve_info(self.info_by_id, "5", self.property_names) # Resolved cached info1 = self.info_by_id["1"] info2 = self.info_by_id["2"] info3 = self.info_by_id["3"] # Result cached info4 = self.info_by_id["4"] info5 = self.info_by_id["5"] expected5 = { "base": 3, "lobby_id": 2, "lobby_name": "Lobby 2", "rooms": [6, 7, 8], "some": 222 } expected2 = { "base": 3, "lobby_id": 2, "lobby_name": "Lobby 2", "rooms": [6, 7, 8], "some": 222 } expected3 = { "base": "4", "lobby_id": 3, "lobby_name": "Lobby 3", "rooms": [6, 7, 8], # "some": 222 } self.assertEqual(info, expected5) # self.assertEqual(info1, expected1) self.assertEqual(info2, expected2) self.assertEqual(info3, expected3) self.assertEqual(info2, info5) self.assertIs(info1, info4)
def resolve_info(self, info): return object_util.resolve_info(self._info_by_id, info, self._property_names)