def test_is_compatible_both_dirs_types(self): i = Interface('/foo[0:4]') i['/foo[0:2]'] = [0, 'out', 'gpot'] i['/foo[2:4]'] = [0, 'in', 'spike'] j = Interface('/foo[0:4]') j['/foo[0:2]'] = [1, 'in', 'gpot'] j['/foo[2:4]'] = [1, 'out', 'spike'] assert i.is_compatible(0, j, 1)
def test_is_compatible_with_nulls_types(self): i = Interface('/foo[0:3]') i['/foo[0:2]'] = [0, 'out', 'gpot'] i['/foo[2]', 'interface'] = 0 j = Interface('/foo[0:3]') j['/foo[0:2]'] = [1, 'in', 'gpot'] j['/foo[2]', 'interface'] = 1 assert i.is_compatible(0, j, 1)
def test_is_compatible_both_dirs(self): i = Interface('/foo[0:4]') i['/foo[0:2]', 'interface', 'io'] = [0, 'out'] i['/foo[2:4]', 'interface', 'io'] = [0, 'in'] j = Interface('/foo[0:4]') j['/foo[0:2]', 'interface', 'io'] = [1, 'in'] j['/foo[2:4]', 'interface', 'io'] = [1, 'out'] assert i.is_compatible(0, j, 1)
def test_is_compatible_both_dirs_types(self): """ It should be possible to define compatible interfaces containing both input and output ports with specified types. """ i = Interface('/foo[0:4]') i['/foo[0:2]'] = [0, 'out', 'gpot'] i['/foo[2:4]'] = [0, 'in', 'spike'] j = Interface('/foo[0:4]') j['/foo[0:2]'] = [1, 'in', 'gpot'] j['/foo[2:4]'] = [1, 'out', 'spike'] assert i.is_compatible(0, j, 1)
def test_is_compatible_both_dirs(self): """ It should be possible to define compatible interfaces containing both input and output ports. """ i = Interface('/foo[0:4]') i['/foo[0:2]', 'interface', 'io'] = [0, 'out'] i['/foo[2:4]', 'interface', 'io'] = [0, 'in'] j = Interface('/foo[0:4]') j['/foo[0:2]', 'interface', 'io'] = [1, 'in'] j['/foo[2:4]', 'interface', 'io'] = [1, 'out'] assert i.is_compatible(0, j, 1)
def test_is_compatible_with_nulls_types(self): """ Interfaces can be compatible even if some of their ports do not have a set type. """ i = Interface('/foo[0:3]') i['/foo[0:2]'] = [0, 'out', 'gpot'] i['/foo[2]', 'interface'] = 0 j = Interface('/foo[0:3]') j['/foo[0:2]'] = [1, 'in', 'gpot'] j['/foo[2]', 'interface'] = 1 assert i.is_compatible(0, j, 1)
def test_is_compatible_with_nulls(self): """ Interfaces can be compatible even if some of their ports do not have a set input or output status. """ i = Interface('/foo[0:3]') i['/foo[0:2]', 'interface', 'io'] = [0, 'out'] i['/foo[2]', 'interface'] = 0 j = Interface('/foo[0:3]') j['/foo[0:2]', 'interface', 'io'] = [1, 'in'] j['/foo[2]', 'interface'] = 1 assert i.is_compatible(0, j, 1)
def test_is_compatible_sel_order(self): """ Interfaces with individually compatible ports that are ordered in different ways should still be deemed compatible. """ # Selectors with multiple levels: i = Interface('/foo[0:2],/bar[0:2]') i['/foo[0:2]', 'interface', 'io'] = [0, 'in'] i['/bar[0:2]', 'interface', 'io'] = [0, 'out'] j = Interface('/bar[0:2],/foo[0:2]') j['/bar[0:2]', 'interface', 'io'] = [1, 'in'] j['/foo[0:2]', 'interface', 'io'] = [1, 'out'] assert i.is_compatible(0, j, 1) # Selectors with single level: i = Interface('/foo,/bar,/baz,/qux') i['/[foo,bar]', 'interface', 'io'] = [0, 'in'] i['/[baz,qux]', 'interface', 'io'] = [0, 'out'] j = Interface('/bar,/foo,/qux,/baz') j['/[baz,qux]', 'interface', 'io'] = [1, 'in'] j['/[foo,bar]', 'interface', 'io'] = [1, 'out'] assert i.is_compatible(0, j, 1)
def test_is_compatible_subsets_with_null_types(self): """ Interfaces that both share a subset of compatible ports can be deemed compatible by setting the `allow_subsets` option of the compatibility test even when the types are null. """ i = Interface('/foo[0:6]') i['/foo[0:3]'] = [0, 'out'] i['/foo[3:6]'] = [0, 'out'] j = Interface('/foo[0:6]') j['/foo[0:2]'] = [1, 'in'] j['/foo[3:5]'] = [1, 'in'] k = Interface('/foo[0:6]') assert i.is_compatible(0, j, 1, True) assert i.is_compatible(0, k, 1, True) == False
def test_is_compatible_one_dir(self): i = Interface('/foo[0:2]') i['/foo[0:2]', 'interface', 'io'] = [0, 'out'] j = Interface('/foo[0:2]') j['/foo[0:2]', 'interface', 'io'] = [1, 'in'] assert i.is_compatible(0, j, 1)
def test_is_compatible_one_dir_types(self): i = Interface('/foo[0:2]') i['/foo[0:2]'] = [0, 'out', 'spike'] j = Interface('/foo[0:2]') j['/foo[0:2]'] = [1, 'in', 'spike'] assert i.is_compatible(0, j, 1)