def test_disconnect_proxy_port_to_block(diagram, block_item, proxy_port_item): connector = Connector(block_item, proxy_port_item) connector.connect(proxy_port_item.handles()[0], block_item.ports()[0]) connector.disconnect(proxy_port_item.handles()[0]) assert proxy_port_item.subject is None assert proxy_port_item.diagram
def connected_proxy_port_item(diagram, element_factory): proxy_port_item = diagram.create(ProxyPortItem) block_item = diagram.create(BlockItem, subject=element_factory.create(sysml.Block)) connector = Connector(block_item, proxy_port_item) connector.connect(proxy_port_item.handles()[0], block_item.ports()[0]) return proxy_port_item
def connect(self, sink): """ Create connection at handle level and at model level. """ handle = self.handle item = self.item cinfo = item.canvas.get_connection(handle) try: callback = DisconnectHandle(self.item, self.handle) if cinfo and cinfo.connected is sink.item: # reconnect only constraint - leave model intact log.debug("performing reconnect constraint") constraint = sink.port.constraint(item.canvas, item, handle, sink.item) item.canvas.reconnect_item(item, handle, sink.port, constraint=constraint) elif cinfo: # first disconnect but disable disconnection handle as # reconnection is going to happen adapter = Connector(sink.item, item) try: connect = adapter.reconnect except AttributeError: connect = adapter.connect else: cinfo.callback.disable = True self.disconnect() # new connection self.connect_handle(sink, callback=callback) # adapter requires both ends to be connected. connect(handle, sink.port) else: # new connection adapter = Connector(sink.item, item) self.connect_handle(sink, callback=callback) adapter.connect(handle, sink.port) except Exception: log.error("Error during connect", exc_info=True)
def test_connect_proxy_port_to_block(diagram, block_item, proxy_port_item): connector = Connector(block_item, proxy_port_item) connected = connector.connect(proxy_port_item.handles()[0], block_item.ports()[0]) assert connected assert proxy_port_item.subject assert proxy_port_item.subject.encapsulatedClassifier is block_item.subject assert proxy_port_item.subject in block_item.subject.ownedPort