diff options
Diffstat (limited to 'openerp/addons/base/tests/test_func.py')
| -rw-r--r-- | openerp/addons/base/tests/test_func.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/openerp/addons/base/tests/test_func.py b/openerp/addons/base/tests/test_func.py index d50b555265e..1be2469666a 100644 --- a/openerp/addons/base/tests/test_func.py +++ b/openerp/addons/base/tests/test_func.py @@ -3,6 +3,7 @@ import functools import unittest from openerp.tools.func import compose +from openerp.tools import frozendict class TestCompose(unittest.TestCase): def test_basic(self): @@ -19,3 +20,44 @@ class TestCompose(unittest.TestCase): return a * b self.assertEqual(mul(5, 42), u"210") + +class TestFrozendict(unittest.TestCase): + def test_frozendict_immutable(self): + """ Ensure that a frozendict is immutable. """ + vals = {'name': 'Joe', 'age': 42} + frozen_vals = frozendict(vals) + + # check __setitem__, __delitem__ + with self.assertRaises(Exception): + frozen_vals['surname'] = 'Jack' + with self.assertRaises(Exception): + frozen_vals['name'] = 'Jack' + with self.assertRaises(Exception): + del frozen_vals['name'] + + # check update, setdefault, pop, popitem, clear + with self.assertRaises(Exception): + frozen_vals.update({'surname': 'Jack'}) + with self.assertRaises(Exception): + frozen_vals.update({'name': 'Jack'}) + with self.assertRaises(Exception): + frozen_vals.setdefault('surname', 'Jack') + with self.assertRaises(Exception): + frozen_vals.pop('surname', 'Jack') + with self.assertRaises(Exception): + frozen_vals.pop('name', 'Jack') + with self.assertRaises(Exception): + frozen_vals.popitem() + with self.assertRaises(Exception): + frozen_vals.clear() + + def test_frozendict_hash(self): + """ Ensure that a frozendict is hashable. """ + # dict with simple values + hash(frozendict({'name': 'Joe', 'age': 42})) + + # dict with tuples, lists, and embedded dicts + hash(frozendict({ + 'user_id': (42, 'Joe'), + 'line_ids': [(0, 0, {'values': [42]})], + })) |
