Mercurial > public > mercurial-scm > hg
view tests/test-dicthelpers.py @ 18894:ed46c2b98b0d
dicthelpers.diff: compare against default for missing values
This is not only a bit faster, but also aligns with callers' expectations
better since we can legitimately have manifestdict's _flags set to '' instead
of unset.
hg perfmergecalculate -r .
before: ! wall 0.139582 comb 0.140000 user 0.140000 sys 0.000000 (best of 59)
after: ! wall 0.126154 comb 0.120000 user 0.120000 sys 0.000000 (best of 74)
hg perfmergecalculate -r .^
before: ! wall 0.236333 comb 0.240000 user 0.240000 sys 0.000000 (best of 36)
after: ! wall 0.212265 comb 0.210000 user 0.210000 sys 0.000000 (best of 45)
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Wed, 10 Apr 2013 12:31:07 -0700 |
parents | a45e44d76c81 |
children |
line wrap: on
line source
from mercurial.dicthelpers import diff, join import unittest import silenttestrunner class testdicthelpers(unittest.TestCase): def test_dicthelpers(self): # empty dicts self.assertEqual(diff({}, {}), {}) self.assertEqual(join({}, {}), {}) d1 = {} d1['a'] = 'foo' d1['b'] = 'bar' d1['c'] = 'baz' # same identity self.assertEqual(diff(d1, d1), {}) self.assertEqual(join(d1, d1), {'a': ('foo', 'foo'), 'b': ('bar', 'bar'), 'c': ('baz', 'baz')}) # vs empty self.assertEqual(diff(d1, {}), {'a': ('foo', None), 'b': ('bar', None), 'c': ('baz', None)}) self.assertEqual(diff(d1, {}), {'a': ('foo', None), 'b': ('bar', None), 'c': ('baz', None)}) d2 = {} d2['a'] = 'foo2' d2['b'] = 'bar' d2['d'] = 'quux' self.assertEqual(diff(d1, d2), {'a': ('foo', 'foo2'), 'c': ('baz', None), 'd': (None, 'quux')}) self.assertEqual(join(d1, d2), {'a': ('foo', 'foo2'), 'b': ('bar', 'bar'), 'c': ('baz', None), 'd': (None, 'quux')}) # with default argument self.assertEqual(diff(d1, d2, 123), {'a': ('foo', 'foo2'), 'c': ('baz', 123), 'd': (123, 'quux')}) self.assertEqual(join(d1, d2, 456), {'a': ('foo', 'foo2'), 'b': ('bar', 'bar'), 'c': ('baz', 456), 'd': (456, 'quux')}) # check that we compare against default self.assertEqual(diff(d1, d2, 'baz'), {'a': ('foo', 'foo2'), 'd': ('baz', 'quux')}) self.assertEqual(diff(d1, d2, 'quux'), {'a': ('foo', 'foo2'), 'c': ('baz', 'quux')}) if __name__ == '__main__': silenttestrunner.main(__name__)