def test_relate_bottom_up(self): s_dt = self.m.select_one('S_DT', xtuml.where_eq(Name='string')) s_bparm = self.m.new('S_BPARM', Name='My_Parameter') s_ee = self.m.new('S_EE', Name='My_External_Entity', Key_Lett='My_External_Entity') pe_pe = self.m.new('PE_PE', Visibility=True, type=5) s_brg = self.m.new('S_BRG', Name='My_Bridge_Operation') self.assertTrue(xtuml.relate(s_bparm, s_dt, 22)) self.assertTrue(xtuml.relate(s_bparm, s_brg, 21)) self.assertTrue(xtuml.relate(s_brg, s_dt, 20)) self.assertTrue(xtuml.relate(s_ee, pe_pe, 8001)) self.assertTrue(xtuml.relate(s_brg, s_ee, 19)) inst = xtuml.navigate_any(pe_pe).S_EE[8001].S_BRG[19].S_BPARM[21]() self.assertEqual(inst, s_bparm)
def mk_class(m, o_obj): ''' Create a pyxtuml class from a BridgePoint class. ''' first_filter = lambda selected: not one(selected).O_ATTR[103, 'precedes']() o_attr = xtuml.navigate_any(o_obj).O_ATTR[102](first_filter) attributes = list() while o_attr: ty = get_attribute_type(o_attr) if ty and not one(o_attr).O_BATTR[106].O_DBATTR[107](): attributes.append((o_attr.Name, ty)) else: logger.warning('Omitting unsupported attribute %s.%s ' % (o_obj.Key_Lett, o_attr.Name)) o_attr = one(o_attr).O_ATTR[103, 'succeeds']() return m.define_class(o_obj.Key_Lett, list(attributes), o_obj.Descrip)