示例#1
0
文件: test_dicts.py 项目: UPCnet/max
    def test_deepcopy(self):
        """
        """
        from max.utils.dicts import deepcopy
        from max.models import User

        actor = User.from_object(None, {'username': '******', 'displayName': 'Sheldon'})

        old_dict = {
            'level1_key': {
                'level2_key': {
                    'level3_key': {},
                    'level3_value': 54
                },
                'level2_value': [
                    {'inner': 'item'}
                ]
            },
            'actor': actor
        }

        dict_copy = deepcopy(old_dict)

        # Dicts and lists get copied
        self.assertNotEqual(id(old_dict), id(dict_copy))
        self.assertNotEqual(id(old_dict['level1_key']), id(dict_copy['level1_key']))
        self.assertNotEqual(id(old_dict['level1_key']['level2_key']), id(dict_copy['level1_key']['level2_key']))
        self.assertNotEqual(id(old_dict['level1_key']['level2_value']), id(dict_copy['level1_key']['level2_value']))
        self.assertNotEqual(id(old_dict['level1_key']['level2_key']['level3_key']), id(dict_copy['level1_key']['level2_key']['level3_key']))
        self.assertNotEqual(id(old_dict['level1_key']['level2_value'][0]), id(dict_copy['level1_key']['level2_value'][0]))

        # Primitives and objects remain referenced
        self.assertEqual(id(old_dict['actor']), id(dict_copy['actor']))
        self.assertEqual(id(old_dict['level1_key']['level2_key']['level3_value']), id(dict_copy['level1_key']['level2_key']['level3_value']))
        self.assertEqual(id(old_dict['level1_key']['level2_value'][0]['inner']), id(dict_copy['level1_key']['level2_value'][0]['inner']))
示例#2
0
文件: test_dicts.py 项目: UPCnet/max
    def test_recursive_update_dict(self):
        """
        """
        from max.utils.dicts import RUDict
        from max.models import User

        actor = User.from_object(None, {'username': '******', 'displayName': 'Sheldon'})

        old_dict = {
            'level1_key': {
                'level2_key': {
                    'level3_key': {},
                    'level3_value': 54
                },
                'level2_value': []
            },
            'actor': {}
        }

        new_dict = {
            'level1_key': {
                'level2_key': {
                    'level3_key': {
                        'new_value': 'new'
                    },
                },
                'level2_key2': {'value': 3}
            },
            'actor': actor
        }

        rdict = RUDict(old_dict)
        rdict.update(new_dict)

        self.assertIsInstance(rdict['actor'], User)
        self.assertEqual(rdict['level1_key']['level2_value'], [])
        self.assertEqual(rdict['level1_key']['level2_key']['level3_value'], 54)
        self.assertEqual(rdict['level1_key']['level2_key']['level3_key']['new_value'], 'new')
        self.assertEqual(rdict['level1_key']['level2_key2']['value'], 3)

        self.assertNotEqual(id(rdict['level1_key']), id(new_dict['level1_key']['level2_key']))
        self.assertNotEqual(id(rdict['level1_key']['level2_key']), id(new_dict['level1_key']['level2_key']))
        self.assertNotEqual(id(rdict['level1_key']['level2_key2']), id(new_dict['level1_key']['level2_key2']))
        self.assertEqual(id(rdict['level1_key']['level2_key']['level3_key']['new_value']), id(new_dict['level1_key']['level2_key']['level3_key']['new_value']))
        self.assertEqual(id(rdict['actor']), id(new_dict['actor']))