Index: third_party/infra/libs/infra_types/test/infra_types_test.py |
diff --git a/third_party/infra/libs/infra_types/test/infra_types_test.py b/third_party/infra/libs/infra_types/test/infra_types_test.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..77b8f417bd253b0ca590bddb3c1c7125e1e46ed3 |
--- /dev/null |
+++ b/third_party/infra/libs/infra_types/test/infra_types_test.py |
@@ -0,0 +1,85 @@ |
+# Copyright 2015 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import unittest |
+import collections |
+ |
+from infra.libs import infra_types |
+ |
+ |
+class TestFreeze(unittest.TestCase): |
+ def testDict(self): |
+ d = collections.OrderedDict() |
+ d['cat'] = 100 |
+ d['dog'] = 0 |
+ |
+ f = infra_types.freeze(d) |
+ self.assertEqual(d, f) |
+ self.assertIsInstance(f, infra_types.FrozenDict) |
+ self.assertEqual( |
+ hash(f), |
+ hash((0, ('cat', 100))) ^ hash((1, ('dog', 0))) |
+ ) |
+ self.assertEqual(len(d), len(f)) |
+ |
+ # Cover equality |
+ self.assertEqual(f, f) |
+ self.assertNotEqual(f, 'dog') |
+ self.assertNotEqual(f, {'bob': 'hat'}) |
+ self.assertNotEqual(f, {'cat': 20, 'dog': 10}) |
+ |
+ def testList(self): |
+ l = [1, 2, {'bob': 100}] |
+ f = infra_types.freeze(l) |
+ self.assertSequenceEqual(l, f) |
+ self.assertIsInstance(f, tuple) |
+ |
+ def testSet(self): |
+ s = {1, 2, infra_types.freeze({'bob': 100})} |
+ f = infra_types.freeze(s) |
+ self.assertEqual(s, f) |
+ self.assertIsInstance(f, frozenset) |
+ |
+ |
+class TestThaw(unittest.TestCase): |
+ def testDict(self): |
+ d = { |
+ 'cat': 100, |
+ 'dog': 0, |
+ } |
+ f = infra_types.freeze(d) |
+ t = infra_types.thaw(f) |
+ self.assertEqual(d, f) |
+ self.assertEqual(t, f) |
+ self.assertEqual(d, t) |
+ self.assertIsInstance(t, collections.OrderedDict) |
+ |
+ def testOrderedDictRetainsOrder(self): |
+ d = collections.OrderedDict() |
+ d['cat'] = 100 |
+ d['dog'] = 0 |
+ f = infra_types.freeze(d) |
+ t = infra_types.thaw(f) |
+ self.assertEqual(d, f) |
+ self.assertEqual(t, f) |
+ self.assertEqual(d, t) |
+ self.assertIsInstance(t, collections.OrderedDict) |
+ |
+ def testList(self): |
+ l = [1, 2, {'bob': 100}] |
+ f = infra_types.freeze(l) |
+ t = infra_types.thaw(f) |
+ self.assertSequenceEqual(l, f) |
+ self.assertSequenceEqual(f, t) |
+ self.assertSequenceEqual(l, t) |
+ self.assertIsInstance(t, list) |
+ |
+ def testSet(self): |
+ s = {1, 2, 'cat'} |
+ f = infra_types.freeze(s) |
+ t = infra_types.thaw(f) |
+ self.assertEqual(s, f) |
+ self.assertEqual(f, t) |
+ self.assertEqual(t, s) |
+ self.assertIsInstance(t, set) |