annotate tests/test-dicthelpers.py @ 22564:9599e86159ac

heredoctest: use the same dict for local/global contexts as in doctest In order to mimic module-level evaluation, globals and locals should be the same object, so doctest does not pass separate locals dict. https://docs.python.org/2.7/reference/simple_stmts.html#exec This fixes NameError in the following example: >>> import foo >>> def bar(): ... foo # must exist in globalvars
author Yuya Nishihara <yuya@tcha.org>
date Sun, 28 Sep 2014 14:15:43 +0900
parents ed46c2b98b0d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18820
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
1 from mercurial.dicthelpers import diff, join
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
2 import unittest
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
3 import silenttestrunner
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
4
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
5 class testdicthelpers(unittest.TestCase):
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
6 def test_dicthelpers(self):
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
7 # empty dicts
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
8 self.assertEqual(diff({}, {}), {})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
9 self.assertEqual(join({}, {}), {})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
10
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
11 d1 = {}
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
12 d1['a'] = 'foo'
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
13 d1['b'] = 'bar'
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
14 d1['c'] = 'baz'
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
15
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
16 # same identity
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
17 self.assertEqual(diff(d1, d1), {})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
18 self.assertEqual(join(d1, d1), {'a': ('foo', 'foo'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
19 'b': ('bar', 'bar'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
20 'c': ('baz', 'baz')})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
21
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
22 # vs empty
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
23 self.assertEqual(diff(d1, {}), {'a': ('foo', None),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
24 'b': ('bar', None),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
25 'c': ('baz', None)})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
26 self.assertEqual(diff(d1, {}), {'a': ('foo', None),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
27 'b': ('bar', None),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
28 'c': ('baz', None)})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
29
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
30 d2 = {}
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
31 d2['a'] = 'foo2'
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
32 d2['b'] = 'bar'
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
33 d2['d'] = 'quux'
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
34
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
35 self.assertEqual(diff(d1, d2), {'a': ('foo', 'foo2'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
36 'c': ('baz', None),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
37 'd': (None, 'quux')})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
38 self.assertEqual(join(d1, d2), {'a': ('foo', 'foo2'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
39 'b': ('bar', 'bar'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
40 'c': ('baz', None),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
41 'd': (None, 'quux')})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
42
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
43 # with default argument
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
44 self.assertEqual(diff(d1, d2, 123), {'a': ('foo', 'foo2'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
45 'c': ('baz', 123),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
46 'd': (123, 'quux')})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
47 self.assertEqual(join(d1, d2, 456), {'a': ('foo', 'foo2'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
48 'b': ('bar', 'bar'),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
49 'c': ('baz', 456),
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
50 'd': (456, 'quux')})
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
51
18894
ed46c2b98b0d dicthelpers.diff: compare against default for missing values
Siddharth Agarwal <sid0@fb.com>
parents: 18820
diff changeset
52 # check that we compare against default
ed46c2b98b0d dicthelpers.diff: compare against default for missing values
Siddharth Agarwal <sid0@fb.com>
parents: 18820
diff changeset
53 self.assertEqual(diff(d1, d2, 'baz'), {'a': ('foo', 'foo2'),
ed46c2b98b0d dicthelpers.diff: compare against default for missing values
Siddharth Agarwal <sid0@fb.com>
parents: 18820
diff changeset
54 'd': ('baz', 'quux')})
ed46c2b98b0d dicthelpers.diff: compare against default for missing values
Siddharth Agarwal <sid0@fb.com>
parents: 18820
diff changeset
55 self.assertEqual(diff(d1, d2, 'quux'), {'a': ('foo', 'foo2'),
ed46c2b98b0d dicthelpers.diff: compare against default for missing values
Siddharth Agarwal <sid0@fb.com>
parents: 18820
diff changeset
56 'c': ('baz', 'quux')})
ed46c2b98b0d dicthelpers.diff: compare against default for missing values
Siddharth Agarwal <sid0@fb.com>
parents: 18820
diff changeset
57
18820
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
58 if __name__ == '__main__':
a45e44d76c81 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
59 silenttestrunner.main(__name__)