Пример #1
0
        //BMGR-0022
        public bool GetRouteSegments(RouteSegConfig SyDBRouteCfg,GENERIC_SYSTEM_PARAMETERS.IMPLEMENTATION_BEACON_BLOCK_MODE.BM_BEACON beaconIbbm)
        {
            //use SigTypeFunc instead of Type_function, the values are similar
            if (Sys.TYPEFUNC_SPACING == SignalInfo.Signal_Type_Function)
            {
                UpdateRsList(SyDBRouteCfg.m_Spacing_routeLst,beaconIbbm);
                if (1 != RsList.Count())
                {
                    TraceMethod.RecordInfo($"Original Signal[{SignalInfo.Info}] find routesegment error, the route num={RsList.Count()} of Spacing Signal should be 1!");
                    return(false);
                }
            }
            else if (Sys.TYPEFUNC_ROUTESPACING == SignalInfo.Signal_Type_Function)
            {
                UpdateRsList(SyDBRouteCfg.m_RouteSpacing_routeLst,beaconIbbm);
                if (RsList.Count() < 1 || RsList.Count() > 10)
                {
                    TraceMethod.RecordInfo($"Original Signal[{SignalInfo.Info}] find routesegment error, the route num={RsList.Count()} of Route Spacing Signal should be [1,10]!");
                    return(false);
                }
            }
            else
            {
                TraceMethod.RecordInfo($"Original Signal[{SignalInfo.Info}] SigTypeFunc={SignalInfo.Signal_Type_Function} is unknow!");
                return(false);
            }

            return(true);
        }
Пример #2
0
        void test_AddNewRoute()
        {
            Prepare.ReloadGlobalSydb(".//input//Routes_fromHHHT2.xml");
            RouteSegConfig SyDBRouteCfg = new RouteSegConfig(sydb);

            var sydbroute = sydb.routeInfoList.Find(x => x.ID == 231);//this route has point

            Debug.Assert(false == SyDBRouteCfg.AddNewRoute(true,new RouteSegment(sydbroute)));
        }
Пример #3
0
        void test_RouteSegment()
        {
            Prepare.ReloadGlobalSydb(".//input//Routes_fromHHHT2.xml");
            {
                var          sydbroute = sydb.routeInfoList.Find(x => x.ID == 224);//this route has no points
                RouteSegment newr      = new RouteSegment(sydbroute);
                Debug.Assert(newr.m_PtLst.Count == 0);
            }

            {                                                                       //check length for oginal route
                var          sydbroute = sydb.routeInfoList.Find(x => x.ID == 231); //this route has points
                RouteSegment newr      = new RouteSegment(sydbroute);

                List <string> pnames = new List <string>()
                {
                    "P01D-N","P07D-R","P09D-R"
                };                              //the pts in route 231
                int i = 0;
                foreach (var p in newr.m_PtLst) //check for route get points info
                {
                    Debug.Assert(pnames[i] == p.getNamePosStr());
                    ++i;
                }
                Debug.Assert((626856 - 615248 + 41374 - 26856) == newr.GetLength());
            }

            {                                                                            //check length for the splitted routes
                var            sydbroute    = sydb.routeInfoList.Find(x => x.ID == 183); //this route has Spacing_Signal_ID_List
                RouteSegConfig SyDBRouteCfg = new RouteSegConfig(sydb);
                clearlist(SyDBRouteCfg);
                SyDBRouteCfg.splitRoute(sydbroute);
                SyDBRouteCfg.m_RouteSpacing_routeLst.AddRange(SyDBRouteCfg.m_Spacing_routeLst);
                int[] lengths = { 1170639 - 906 - (1058617 - 747),1058617 - 747 - (1041880 - 747),(1041880 - 747) - (963697 + 176) };//length for the splitted route
                int   i       = 0;
                foreach (var r in SyDBRouteCfg.m_RouteSpacing_routeLst)
                {
                    Debug.Assert(lengths [i] == r.GetLength());
                    ++i;
                }
            }
        }
Пример #4
0
        void test_splitRoute()
        {
            Prepare.ReloadGlobalSydb(".//input//Routes_fromHHHT2.xml");
            RouteSegConfig SyDBRouteCfg = new RouteSegConfig(sydb);

            Debug.Assert(false == SyDBRouteCfg.splitRoute(null));

            int[] rids = { 183,161,66,76,231 }; //these route has Spacing_Signal_ID_List, 231 has no Spacing_Signal_ID_List also can be test by this
            foreach (int id in rids)
            {                                   //test blockinfo of route has Spacing_Signal_ID_List
                clearlist(SyDBRouteCfg);
                var sydbroute = sydb.routeInfoList.Find(x => x.ID == id);

                Debug.Assert(true == SyDBRouteCfg.splitRoute(sydbroute));

                Debug.Assert(SyDBRouteCfg.m_RouteSpacing_routeLst[0].m_OrgSig.ID == sydbroute.Origin_Signal_ID);         //get RouteSpacing_route start with same sig as 183
                Debug.Assert(SyDBRouteCfg.m_Spacing_routeLst.Count == sydbroute.Spacing_Signal_ID_List.Signal_ID.Count); //get some Spacing_route

                List <StringData> blocks = new List <StringData>();
                SyDBRouteCfg.m_Spacing_routeLst.AddRange(SyDBRouteCfg.m_RouteSpacing_routeLst);
                foreach (var r in SyDBRouteCfg.m_Spacing_routeLst)
                {
                    foreach (var b in r.m_BlkLst)
                    {
                        blocks.Add(b.ID);
                    }
                }

                Debug.Assert(sydbroute.Block_ID_List.Block_ID.All(blocks.Contains));//add all split route blocks == orinal route blocks
            }

            {                                                                                                    //test pointlist of route has no Spacing_Signal_ID_List
                clearlist(SyDBRouteCfg);
                var sydbroute = sydb.routeInfoList.Find(x => x.ID == 231);                                       //this route has no Spacing_Signal_ID_List
                Debug.Assert(true == SyDBRouteCfg.splitRoute(sydbroute));
                Debug.Assert(SyDBRouteCfg.m_RouteSpacing_routeLst[0].m_OrgSig.ID == sydbroute.Origin_Signal_ID); //get RouteSpacing_route same as 231
                GENERIC_SYSTEM_PARAMETERS.SIGNALS.SIGNAL dstsig = (GENERIC_SYSTEM_PARAMETERS.SIGNALS.SIGNAL)MethodHelper.InvokePrivateMember(SyDBRouteCfg.m_RouteSpacing_routeLst[0],"DstSig");
                Debug.Assert(dstsig.ID == sydbroute.Destination_Signal_ID);
                Debug.Assert(SyDBRouteCfg.m_Spacing_routeLst.Count == 0);//get no Spacing_route
            }
        }
Пример #5
0
        void test_generateRouteSegments()
        {
            Prepare.ReloadGlobalSydb(".//input//Routes_fromHHHT2.xml");
            RouteSegConfig SyDBRouteCfg = new RouteSegConfig(sydb);//this will call RouteSegConfig.generateRouteSegments()

            Debug.Assert(true == SyDBRouteCfg.generateRouteSegments());

            int count      = 0;
            int splitcount = 0;

            foreach (var r in sydb.routeInfoList)
            {
                if (r.IsValidBMRoute())
                {
                    RouteSegment route = SyDBRouteCfg.m_RouteSpacing_routeLst.Find(x => x.m_OrgSig.ID == r.Origin_Signal_ID && x.RouteInfo().ID == r.ID);
                    Debug.Assert(null != route);
                    ++count;
                    splitcount = splitcount + r.Spacing_Signal_ID_List.Signal_ID.Count;
                    foreach (int id in r.Spacing_Signal_ID_List.Signal_ID)
                    {
                        route = SyDBRouteCfg.m_Spacing_routeLst.Find(x => x.m_OrgSig.ID == id && x.RouteInfo().ID == r.ID);
                        Debug.Assert(null != route);
                    }


                    route.CalOverlap(null);

                    GENERIC_SYSTEM_PARAMETERS.SIGNALS.SIGNAL dstsig = (GENERIC_SYSTEM_PARAMETERS.SIGNALS.SIGNAL)MethodHelper.InvokePrivateMember(route,"DstSig");
                    if (null != dstsig.Overlap_ID)
                    {
                        Debug.Assert(null != route.m_overlap);
                    }
                    else
                    {
                        Debug.Assert(null == route.m_overlap);
                    }
                }
            }
            Debug.Assert(count == SyDBRouteCfg.m_RouteSpacing_routeLst.Count());
            Debug.Assert(splitcount == SyDBRouteCfg.m_Spacing_routeLst.Count());
        }
Пример #6
0
 public static bool AddNewRoute(this RouteSegConfig instance,bool isSplitRoute,RouteSegment rs)
 {
     return((bool)MethodHelper.InvokePrivateMethod <RouteSegConfig>(instance,"AddNewRoute",new object[] { isSplitRoute,rs }));
 }
Пример #7
0
 public static bool splitRoute(this RouteSegConfig instance,GENERIC_SYSTEM_PARAMETERS.ROUTES.ROUTE route)
 {
     return((bool)MethodHelper.InvokePrivateMethod <RouteSegConfig>(instance,"splitRoute",new object[] { route }));
 }
Пример #8
0
 void clearlist(RouteSegConfig routeinfo)
 {
     routeinfo.m_RouteSpacing_routeLst.Clear();
     routeinfo.m_Spacing_routeLst.Clear();
 }