blob: 2609a356bc8047860549ab30a44addb72b85ed3e [file] [log] [blame]
# Copyright 2017 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
from libs.meta_object import MetaDict
class MetaDictTest(unittest.TestCase):
"""Tests ``MetaDict`` class."""
def testMetaDictGetAndSetItem(self):
"""Tests "get" and "set" item behavior of ``MetaDict``."""
d = {'a': 1, 'b': 2, 'c': 3}
meta_dict = MetaDict(d)
self.assertEqual(meta_dict['a'], d['a'])
self.assertEqual(meta_dict.get('b'), d.get('b'))
meta_dict['a'] = 9
d['a'] = 9
self.assertEqual(meta_dict['a'], d['a'])
def testMetaDictIterDict(self):
"""Tests iterating ``MetaDict``."""
d = {'a': 1, 'b': 2, 'c': 3}
meta_dict = MetaDict(d)
self.assertListEqual(list(key for key in meta_dict), list(key for key in d))
self.assertListEqual(list(meta_dict.iteritems()), list(d.iteritems()))
self.assertListEqual(list(meta_dict.itervalues()), list(d.itervalues()))
self.assertListEqual(meta_dict.keys(), d.keys())
self.assertListEqual(meta_dict.values(), d.values())
self.assertEqual(MetaDict(d), MetaDict(d))
def testLeavesProperty(self):
"""Tests ``flat_dict`` property."""
meta_dict = MetaDict({'f1': MetaDict({'f2': 1})})
self.assertTrue(meta_dict.leaves == {'f2': 1})
def testIterLeaves(self):
"""Tests ``iterleaves`` method."""
meta_dict = MetaDict({'f1': 2, 'f2': MetaDict({'f3': 1, 'f4': 9})})
leaves = {'f1': 2, 'f3': 1, 'f4': 9}
self.assertEqual(len(leaves), len(list(meta_dict.iterleaves())))
for key, value in meta_dict.iterleaves():
self.assertEqual(value, leaves[key])
def testUpdateLeaves(self):
"""Tests ``UpdateLeaves`` method."""
meta_dict = MetaDict({'f1': 2, 'f2': MetaDict({'f3': 1, 'f4': 9})})
leaves = {'f1': 92, 'f3': 91}
meta_dict.UpdateLeaves(leaves)
for key, value in meta_dict.iterleaves():
if key in leaves:
self.assertEqual(value, leaves[key])
def testTwoMetaDictEqual(self):
"""Tests ``__eq__`` and ``__ne__`` override."""
meta_dict1 = MetaDict({'f1': 2, 'f2': MetaDict({'f3': 1, 'f4': 9})})
meta_dict2 = MetaDict({'f1': 2, 'f2': MetaDict({'f3': 1, 'f4': 9})})
self.assertTrue(meta_dict1 == meta_dict2)
meta_dict2['f1'] = 3
self.assertTrue(meta_dict1 != meta_dict2)