| Index: infra/libs/types/test/types_test.py
|
| diff --git a/infra/libs/types/test/types_test.py b/infra/libs/types/test/types_test.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3d269c9e124a44f2f5390d3e088c4e9a427420ca
|
| --- /dev/null
|
| +++ b/infra/libs/types/test/types_test.py
|
| @@ -0,0 +1,73 @@
|
| +# Copyright 2014 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 types
|
| +
|
| +
|
| +class TestFreeze(unittest.TestCase):
|
| + def testDict(self):
|
| + d = collections.OrderedDict()
|
| + d['cat'] = 100
|
| + d['dog'] = 0
|
| +
|
| + f = types.freeze(d)
|
| + self.assertEqual(d, f)
|
| + self.assertIsInstance(f, 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 = types.freeze(l)
|
| + self.assertSequenceEqual(l, f)
|
| + self.assertIsInstance(f, tuple)
|
| +
|
| + def testSet(self):
|
| + s = {1, 2, types.freeze({'bob': 100})}
|
| + f = types.freeze(s)
|
| + self.assertEqual(s, f)
|
| + self.assertIsInstance(f, frozenset)
|
| +
|
| +
|
| +class TestThaw(unittest.TestCase):
|
| + def testDict(self):
|
| + d = collections.OrderedDict()
|
| + d['cat'] = 100
|
| + d['dog'] = 0
|
| + f = types.freeze(d)
|
| + t = 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 = types.freeze(l)
|
| + t = 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 = types.freeze(s)
|
| + t = types.thaw(f)
|
| + self.assertEqual(s, f)
|
| + self.assertEqual(f, t)
|
| + self.assertEqual(t, s)
|
| + self.assertIsInstance(t, set)
|
|
|