def test_RosdepDatabaseEntry(): # not muich to test with container from rosdep2.model import RosdepDatabaseEntry d = RosdepDatabaseEntry({'a': 1}, [], 'foo') assert d.rosdep_data == {'a': 1} assert d.view_dependencies == [] assert d.origin == 'foo'
def test_RosdepView_merge(): from rosdep2.model import RosdepDatabaseEntry from rosdep2.lookup import RosdepView # rosdep data must be dictionary of dictionaries data = dict(a=dict(x=1), b=dict(y=2), c=dict(z=3)) # create empty view and test view = RosdepView('common') assert len(view.keys()) == 0 # - tripwire str(view) # make sure lookups fail if not found try: view.lookup('notfound') assert False, "should have raised KeyError" except KeyError as e: assert 'notfound' in str(e) # merge into empty view d = RosdepDatabaseEntry(data, [], 'origin') view.merge(d) assert set(view.keys()) == set(data.keys()) for k, v in data.items(): assert view.lookup(k).data == v, "%s vs. %s" % (view.lookup(k), v) # merge exact same data d2 = RosdepDatabaseEntry(data, [], 'origin2') view.merge(d2) assert set(view.keys()) == set(data.keys()) for k, v in data.items(): assert view.lookup(k).data == v # merge new for 'd', 'e' d3 = RosdepDatabaseEntry(dict(d=dict(o=4), e=dict(p=5)), [], 'origin3') view.merge(d3) assert set(view.keys()) == set(list(data.keys()) + ['d', 'e']) for k, v in data.items(): assert view.lookup(k).data == v assert view.lookup('d').data == dict(o=4) assert view.lookup('e').data == dict(p=5) # merge different data for 'a' d4 = RosdepDatabaseEntry(dict(a=dict(x=2)), [], 'origin4') # - first w/o override, should not bump view.merge(d4, override=False) assert view.lookup('a').data == dict(x=1), view.lookup('a').data assert view.lookup('b').data == dict(y=2) assert view.lookup('c').data == dict(z=3) assert view.lookup('d').data == dict(o=4) assert view.lookup('e').data == dict(p=5) # - now w/ override view.merge(d4, override=True) assert view.lookup('a').data == dict(x=2) assert view.lookup('b').data == dict(y=2) assert view.lookup('c').data == dict(z=3) assert view.lookup('d').data == dict(o=4) assert view.lookup('e').data == dict(p=5) # - tripwire str(view)