| Index: tools/json_schema_compiler/json_parse_test.py
|
| diff --git a/tools/json_schema_compiler/json_parse_test.py b/tools/json_schema_compiler/json_parse_test.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..65fedd6c26db1b1a7f76ff86cf3be06129ba20b5
|
| --- /dev/null
|
| +++ b/tools/json_schema_compiler/json_parse_test.py
|
| @@ -0,0 +1,126 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2012 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 copy
|
| +import unittest
|
| +
|
| +from json_parse import OrderedDict
|
| +
|
| +class OrderedDictTest(unittest.TestCase):
|
| + def setUp(self):
|
| + self.items = [
|
| + ('a', 1),
|
| + ('b', 2),
|
| + ('c', 3),
|
| + ('d', 4)
|
| + ]
|
| +
|
| + def testGetSetPop(self):
|
| + od = OrderedDict(self.items)
|
| + self.assertEqual(1, od['a'])
|
| + self.assertEqual(2, od.get('b'))
|
| + self.assertEqual(None, od.get('z'))
|
| + self.assertEqual([], od.get('z', default=[]))
|
| + self.assertTrue('a' in od)
|
| + self.assertEqual(4, len(od))
|
| + del od['a']
|
| + self.assertEqual(3, len(od))
|
| + self.assertFalse('a' in od)
|
| + self.assertEqual(None, od.get('a'))
|
| + self.assertTrue('b' in od)
|
| + self.assertEqual(2, od.pop('b'))
|
| + self.assertFalse('b' in od)
|
| + self.assertEqual(None, od.get('b'))
|
| + od['b'] = 100
|
| + self.assertEqual(100, od.get('b'))
|
| + self.assertEqual(100, od['b'])
|
| + self.assertEqual(3, od['c'])
|
| + od['c'] = 5
|
| + self.assertEqual(5, od['c'])
|
| + od['od'] = od
|
| + self.assertEqual(5, od['od']['c'])
|
| + self.assertEqual(5, od['od']['od']['c'])
|
| + self.assertEqual(od, od.pop('od'))
|
| + self.assertEqual(None, od.get('od'))
|
| +
|
| + def testKeysValuesItems(self):
|
| + od = OrderedDict(self.items)
|
| + self.assertEqual(self.items, od.items())
|
| + self.assertEqual([i[0] for i in self.items], od.keys())
|
| + self.assertEqual([i[1] for i in self.items], od.values())
|
| + for i, v in enumerate(od.iteritems()):
|
| + self.assertEqual(self.items[i], v)
|
| +
|
| + items2 = [('%s2' % k, v + 1) for k, v in self.items]
|
| + od2 = OrderedDict(items2)
|
| + self.items.extend(items2)
|
| + self.assertEqual(4, len(od))
|
| + od.update(od2)
|
| + self.assertEqual(8, len(od))
|
| + self.assertEqual(self.items, od.items())
|
| + self.assertEqual([i[0] for i in self.items], od.keys())
|
| + self.assertEqual([i[1] for i in self.items], od.values())
|
| + for i, v in enumerate(od.iteritems()):
|
| + self.assertEqual(self.items[i], v)
|
| +
|
| + def testEquals(self):
|
| + od = OrderedDict(self.items)
|
| + od2 = OrderedDict(self.items)
|
| + d = dict(self.items)
|
| + self.assertEqual(d, od)
|
| + self.assertEqual(od, od2)
|
| + d['e'] = 5
|
| + od['e'] = 5
|
| + self.assertEqual(d, od)
|
| + self.assertNotEqual(od, od2)
|
| + self.assertNotEqual(d, od2)
|
| + del d['e']
|
| + del od['e']
|
| + self.assertEqual(d, od)
|
| + self.assertEqual(d, od2)
|
| + self.assertEqual(od, od2)
|
| + d.update(od2)
|
| + od.update(od2)
|
| + self.assertEqual(d, od)
|
| + d['dict'] = od2
|
| + od['dict'] = od2
|
| + self.assertNotEqual(d, od2)
|
| + self.assertNotEqual(od, od2)
|
| + self.assertEqual(d, od)
|
| +
|
| + od3 = copy.deepcopy(od2)
|
| + self.assertEqual(od2, od3)
|
| + item = od3.pop('a')
|
| + od3['a'] = item
|
| + self.assertNotEqual(od2, od3)
|
| + od2['a'] = item
|
| + self.assertNotEqual(od2, od3)
|
| + del od2['a']
|
| + od2['a'] = item
|
| + self.assertEqual(od2, od3)
|
| +
|
| + def testAll(self):
|
| + d = dict(self.items)
|
| + od = OrderedDict(self.items)
|
| + self.assertEqual(d, od)
|
| +
|
| + od2 = copy.deepcopy(od)
|
| + item = od2.pop('a')
|
| + self.assertFalse('a' in od2)
|
| + od2['a'] = item
|
| + self.assertTrue('a' in od2)
|
| + self.assertNotEqual(od, od2)
|
| + self.assertEqual(d, od2)
|
| +
|
| + od['dict'] = od2
|
| + od2 = copy.deepcopy(od)
|
| + self.assertEquals(od, od2)
|
| + d['dict'] = dict(self.items)
|
| + self.assertEquals(d, od)
|
| + od['dict']['a'] = 5
|
| + self.assertNotEquals(od, od2)
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|