# -*- coding: utf-8 -*- from benedict import benedict import unittest import yaml class github_issue_0025_test_case(unittest.TestCase): """ https://github.com/fabiocaccamo/python-benedict/issues/25 To run this specific test: - For each method comment @unittest.skip decorator - Run python -m unittest tests.github.test_issue_0025 """ @staticmethod def load_dict(): yaml_str =""" SERVER: S01: alias: s01_alias ssh_port: s01_port host: s01_host credentials: username: s01_user password: s01_passw location: building: s01_building floar: s01_floar room: s01_room """ servers = yaml.safe_load(yaml_str) return servers def test_pointers_with_dict(self): servers = dict(self.load_dict()) s01_ptr=servers['SERVER']['S01'] s01_ptr['alias']='ptr_alias' s01_ptr['location']['building']='ptr_building' s01_ptr['credentials']['username']='ptr_unsername' self.assertEqual(s01_ptr, servers['SERVER']['S01']) def test_pointers_with_benedict_casting(self): d = self.load_dict() servers = benedict(d) s01_ptr=servers['SERVER.S01'] self.assertTrue(isinstance(s01_ptr, benedict)) self.assertEqual(type(s01_ptr), benedict) s01_ptr['alias']='ptr_alias' s01_ptr['location']['building']='ptr_building' s01_ptr['credentials']['username']='ptr_unsername' self.assertEqual(s01_ptr, servers['SERVER.S01']) def test_pointers_after_pointer_update(self): d = self.load_dict() b = benedict(d) d['SERVER']['S01']['alias'] = 'new_alias' d['SERVER_2'] = 'server_2' self.assertEqual(b, d) self.assertEqual(b.dict(), d) def test_pointers_after_pointer_clear(self): d = self.load_dict() b = benedict(d) d.clear() self.assertEqual(b, d) self.assertEqual(b.dict(), d)