tests/test-dicthelpers.py
author simon@laptop-tosh
Sun, 09 Jun 2013 16:42:55 +0200
changeset 19311 ad16e5c7a429
parent 18894 ed46c2b98b0d
permissions -rw-r--r--
run-tests: ignoring tests works again running with --retest did not work anymore because runone still returned None for this case. But this is not allowed since 6a127fa5de23.

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__)