summaryrefslogtreecommitdiff
path: root/openerp/addons/base/tests/test_func.py
diff options
context:
space:
mode:
Diffstat (limited to 'openerp/addons/base/tests/test_func.py')
-rw-r--r--openerp/addons/base/tests/test_func.py42
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]})],
+ }))