def test_get_subns_addr(self): # Signature: name(self, component_name) # Returns the address of a subcomponent at this address. # # For example: # # >>> a = NamespaceAddress('level1.level2.level3') # >>> a.get_subns_addr('subcomponent') # NameSpaceAddress: '/level1/level2/level3/subcomponent/' # from nineml.abstraction_layer.component.namespaceaddress import NamespaceAddress from nineml.abstraction_layer import ComponentClass from nineml.abstraction_layer import NamespaceAddress d = ComponentClass(name='D',) e = ComponentClass(name='E') f = ComponentClass(name='F') g = ComponentClass(name='G') b = ComponentClass(name='B', subnodes={'atD': d, 'atE': e}) c = ComponentClass(name='C', subnodes={'atF': f, 'atG': g}) a = ComponentClass(name='A', subnodes={'atB': b, 'atC': c}) # Construction of the objects causes cloning to happen: # Therefore we test by looking up and checking that there # are the correct component names: bNew = a.get_subnode('atB') cNew = a.get_subnode('atC') dNew = a.get_subnode('atB.atD') eNew = a.get_subnode('atB.atE') fNew = a.get_subnode('atC.atF') gNew = a.get_subnode('atC.atG') self.assertEquals( gNew.get_node_addr().get_subns_addr('MyObject1'), NamespaceAddress('atC.atG.MyObject1') ) self.assertEquals( eNew.get_node_addr().get_subns_addr('MyObject2'), NamespaceAddress('atB.atE.MyObject2') ) self.assertEquals( bNew.get_node_addr().get_subns_addr('MyObject3'), NamespaceAddress('atB.MyObject3') )
def test_recurse_all_components(self): # Signature: name # Returns an iterator over this component and all subcomponents from nineml.abstraction_layer import ComponentClass d = ComponentClass(name="D") e = ComponentClass(name="E") f = ComponentClass(name="F") g = ComponentClass(name="G") b = ComponentClass(name="B") b.insert_subnode(namespace="d", subnode=d) b.insert_subnode(namespace="e", subnode=e) c = ComponentClass(name="C") c.insert_subnode(namespace="f", subnode=f) c.insert_subnode(namespace="g", subnode=g) a = ComponentClass(name="A") a.insert_subnode(namespace="b", subnode=b) a.insert_subnode(namespace="c", subnode=c) # Construction of the objects causes cloning to happen: # Therefore we test by looking up and checking that there # are the correct component names: bNew = a.get_subnode("b") cNew = a.get_subnode("c") dNew = a.get_subnode("b.d") eNew = a.get_subnode("b.e") fNew = a.get_subnode("c.f") gNew = a.get_subnode("c.g") self.assertEquals(set(a.query.recurse_all_components), set([a, bNew, cNew, dNew, eNew, fNew, gNew])) self.assertEquals(set(bNew.query.recurse_all_components), set([bNew, dNew, eNew])) self.assertEquals(set(cNew.query.recurse_all_components), set([cNew, fNew, gNew])) self.assertEquals(set(dNew.query.recurse_all_components), set([dNew])) self.assertEquals(set(eNew.query.recurse_all_components), set([eNew])) self.assertEquals(set(fNew.query.recurse_all_components), set([fNew])) self.assertEquals(set(gNew.query.recurse_all_components), set([gNew]))
def test_get_fully_qualified_port_connections(self): # Signature: name(self) # Used by the flattening code. # # This method returns a d list of tuples of the # the fully-qualified port connections # from nineml.abstraction_layer.component.componentqueryer import ComponentQueryer # Signature: name(self) # Get the namespace address of this component from nineml.abstraction_layer import ComponentClass, SendPort, RecvPort from nineml.abstraction_layer import NamespaceAddress d = ComponentClass(name="D", aliases=["A:=1", "B:=2"], analog_ports=[SendPort("A"), SendPort("B")]) e = ComponentClass(name="E", analog_ports=[RecvPort("C")]) f = ComponentClass(name="F", analog_ports=[RecvPort("D")]) g = ComponentClass(name="G", analog_ports=[RecvPort("E")]) b = ComponentClass(name="B", subnodes={"d": d, "e": e}, portconnections=[("d.A", "e.C")]) c = ComponentClass( name="C", aliases=["G:=-1"], analog_ports=[SendPort("G")], subnodes={"f": f, "g": g}, portconnections=[("G", "f.D")], ) a = ComponentClass( name="A", subnodes={"b": b, "c": c}, analog_ports=[RecvPort("F")], portconnections=[("b.d.A", "F")] ) bNew = a.get_subnode("b") cNew = a.get_subnode("c") # dNew = a.get_subnode('b.d') # eNew = a.get_subnode('b.e') # fNew = a.get_subnode('c.f') # gNew = a.get_subnode('c.g') self.assertEquals( list(a.query.get_fully_qualified_port_connections()), [(NamespaceAddress("b.d.A"), NamespaceAddress("F"))] ) self.assertEquals( list(bNew.query.get_fully_qualified_port_connections()), [(NamespaceAddress("b.d.A"), NamespaceAddress("b.e.C"))], ) self.assertEquals( list(cNew.query.get_fully_qualified_port_connections()), [(NamespaceAddress("c.G"), NamespaceAddress("c.f.D"))], )