예제 #1
0
        public void Default_parser_is_replaced()
        {
            const string fakeUrl          = "https://api.tfl.gov.uk/fake";
            const string fakeJsonResponse = "fake json response";
            const string fakeRoadId       = "fakeRoadId";
            const string fakeDisplayName  = "fake display name";
            const string fakeSeverity     = "fake severity";
            const string fakeDescription  = "fake description";

            string FakeResourceReader(Uri _) => fakeJsonResponse;

            var fakeRoadStatus = new RoadStatus(fakeRoadId, fakeDisplayName, fakeSeverity, fakeDescription);

            RoadStatusResult FakeParser(string _) => new RoadStatusResult(fakeRoadStatus);

            var reader =
                new RoadStatusReader(fakeUrl)
                .ParseWith(FakeParser)
                .GetWith(FakeResourceReader);

            var result = reader.GetResult(fakeRoadId);

            Assert.Equal(ExitCodes.Success, result.Status);
            Assert.Equal(fakeRoadId, result.Road.Id);
            Assert.Equal(fakeDisplayName, result.Road.DisplayName);
            Assert.Equal(fakeSeverity, result.Road.StatusSeverity);
            Assert.Equal(fakeDescription, result.Road.StatusSeverityDescription);
        }
예제 #2
0
 /// <summary>
 /// Call this only in OnDrawGizmos() MonoBehaviour method
 /// </summary>
 public void VizualizeGraphNode(Vector3 position, RoadStatus status)
 {
     Gizmos.color = (status == RoadStatus.Move)
         ? Color.cyan
         : Color.red;
     Gizmos.DrawSphere(position, 1f);
 }
예제 #3
0
        static int Main(string[] args)
        {
            int status = 0;

            string tflAppId  = ConfigurationManager.AppSettings["TflAppId"];
            string tflAppKey = ConfigurationManager.AppSettings["TflAppKey"];

            TfLApiClient.GetInstance().SetApiKeys(tflAppId, tflAppKey);

            if (args != null && args.Length > 0)
            {
                string roadId = args[0];
                string msg    = string.Empty;

                RoadInformation info = RoadStatus.GetStatus(roadId);
                if (info.Valid)
                {
                    msg = string.Format(ValidaRoadMessage,
                                        info.Name, info.StatusSeverity, info.StatusSeverityDescription);
                }
                else
                {
                    msg    = string.Format(InvalidRoadMessage, roadId);
                    status = 1;
                }
                Console.WriteLine(msg);
            }
            return(status);
        }
예제 #4
0
        public void TestValidResponse()
        {
            ApiClient client = new ApiClient(mockHttpClient.Object, "APP_ID", "DEVELOPER_ID");

            // Get the result for the A2 and test for validity
            RoadStatus a2Result = client.GetRoadStatus("A2");

            Assert.AreEqual("A2", a2Result.displayName);
            Assert.AreEqual("Good", a2Result.statusSeverity);
            Assert.AreEqual("No Exceptional Delays", a2Result.statusSeverityDescription);
        }
예제 #5
0
    public void Init_Road()
    {
        int Center_Size = Road_Size / 2;
        int Road        = Random.Range(0, 2);
        int Angle       = Random.Range(0, 3) * 90;

        switch (Road)
        {
        case 0:
            if (Angle == 0)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(5);
            }
            else if (Angle == 90)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(6);
            }
            else if (Angle == 180)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(7);
            }
            else if (Angle == 270)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(8);
            }
            break;

        case 1:
            if (Angle == 0 || Angle == 180)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(3);
            }
            else if (Angle == 90 || Angle == 270)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(4);
            }
            break;

        case 2:
            if (Angle == 0 || Angle == 180)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(1);
            }
            else if (Angle == 90 || Angle == 270)
            {
                Array_Road[Center_Size, Center_Size] = new RoadStatus(2);
            }
            break;
        }

        Init_Fill_City(Angle);
        Init_Fill_CrossRoad(Angle);
        Init_Fill_Road();
    }
예제 #6
0
        public void TestFormattedText()
        {
            RoadStatus status = new RoadStatus()
            {
                displayName               = "<DISPLAYNAME>",
                statusSeverity            = "<STATUS>",
                statusSeverityDescription = "<DESCRIPTION>"
            };

            Assert.AreEqual(
                "The status of the <DISPLAYNAME> is as follows\r\n\tRoad Status is <STATUS>\r\n\tRoad Status Description is <DESCRIPTION>",
                status.ToFormattedString()
                );
        }
예제 #7
0
        public RoadStatusList MapRoadStatusData(TfLRoadCorridors apiData)
        {
            List <RoadStatus> result = new List <RoadStatus>();

            foreach (var apiResponse in apiData.RoadCorridorList)
            {
                var viewModelResponse = new RoadStatus()
                {
                    Name              = apiResponse.DisplayName,
                    Status            = apiResponse.StatusSeverity,
                    StatusDescription = apiResponse.StatusSeverityDescription
                };
                result.Add(viewModelResponse);
            }

            return(new RoadStatusList(result));
        }
예제 #8
0
    void Init_Fill_Road()
    {
        for (int i = 0; i < Road_Size; i++)
        {
            for (int j = i % 2; j < Road_Size; j += 2)
            {
                RoadStatus[] roads = { null, null, null, null };

                if (j - 1 >= 0)
                {
                    roads[0] = Array_Road[i, j - 1]; // A
                }

                if (j + 1 < Road_Size)
                {
                    roads[1] = Array_Road[i, j + 1];
                }

                if (i - 1 >= 0)
                {
                    roads[2] = Array_Road[i - 1, j];
                }

                if (i + 1 < Road_Size)
                {
                    roads[3] = Array_Road[i + 1, j];
                }

                int Prefab_Number = RoadStatus.Compute_Road_Num(roads[0], roads[1], roads[2], roads[3]);
                if (Prefab_Number == -1)
                {
                    Debug.Log("Compute Prefab Number Loss! Error : Init_Fill_CrossRoad");
                }
                else
                {
                    Array_Road[i, j] = new RoadStatus(Prefab_Number);
                }
            }
        }
    }
예제 #9
0
    void Init_Fill_City(int Angle)
    {
        int I_Start = 0;
        int J_Start = 0;

        if (Angle == 0 || Angle == 180)
        {
            J_Start = 1;
        }
        else
        {
            I_Start = 1;
        }
        for (int i = I_Start; i < Road_Size; i += 2)
        {
            for (int j = J_Start; j < Road_Size; j += 2)
            {
                Array_Road[i, j]           = new RoadStatus(0);
                Array_Road[i, j].bool_City = true;
            }
        }
    }
 public void WhenTheClientIsRun()
 {
     roadStatus = (RoadStatus)roadStatusService.GetStatus(_roadName).Result;
 }
예제 #11
0
        public void Check_InvalidRoadStatus_ErrorCode_Test()
        {
            RoadInformation status = RoadStatus.GetStatus("A1000");

            Assert.IsNotNull(RoadStatus.LastErrorCode);
        }
예제 #12
0
        public void Check_ValidRoadStatus_StatusDescription_Test()
        {
            RoadInformation status = RoadStatus.GetStatus("A1");

            Assert.IsNotNull(status.StatusSeverityDescription);
        }
예제 #13
0
        public void Check_ValidRoadStatus_DisplayName_Test()
        {
            RoadInformation status = RoadStatus.GetStatus("A1");

            Assert.IsNotNull(status.Name);
        }
예제 #14
0
        public void Check_InvalidRoadStatus_Test()
        {
            RoadInformation status = RoadStatus.GetStatus("A1000");

            Assert.IsFalse(status.Valid);
        }
예제 #15
0
        public void Check_ValidRoadStatus_Test()
        {
            RoadInformation status = RoadStatus.GetStatus("A1");

            Assert.IsTrue(status.Valid);
        }
예제 #16
0
 public void Register_APIKeys_NotAvailableException_Test()
 {
     TfLApiClient.GetInstance().SetApiKeys(string.Empty, string.Empty);
     RoadInformation status = RoadStatus.GetStatus("A1");
 }
예제 #17
0
    void Init_Fill_CrossRoad(int Angle)
    {
        int I_Start = 0;
        int J_Start = 0;

        if (Angle == 0 || Angle == 180)
        {
            I_Start = 1;
        }
        else
        {
            J_Start = 1;
        }
        for (int i = I_Start; i < Road_Size; i += 2)
        {
            for (int j = J_Start; j < Road_Size; j += 2)
            {
                RoadStatus[] crossroads = { null, null, null, null };

                if (j - 2 >= 0)
                {
                    crossroads[0] = Array_Road[i, j - 2]; // A
                }

                if (j + 2 < Road_Size)
                {
                    crossroads[1] = Array_Road[i, j + 2];
                }

                if (i - 2 >= 0)
                {
                    crossroads[2] = Array_Road[i - 2, j];
                }

                if (i + 2 < Road_Size)
                {
                    crossroads[3] = Array_Road[i + 2, j];
                }

                RoadStatus[] roads = { null, null, null, null };

                if (j - 1 >= 0)
                {
                    roads[0] = Array_Road[i, j - 1]; // A
                }

                if (j + 1 < Road_Size)
                {
                    roads[1] = Array_Road[i, j + 1];
                }

                if (i - 1 >= 0)
                {
                    roads[2] = Array_Road[i - 1, j];
                }

                if (i + 1 < Road_Size)
                {
                    roads[3] = Array_Road[i + 1, j];
                }

                int Prefab_Number = RoadStatus.Compute_CrossRoad_Num(crossroads[0], crossroads[1], crossroads[2], crossroads[3],
                                                                     roads[0], roads[1], roads[2], roads[3]);
                if (Prefab_Number == -1)
                {
                    Debug.Log("Compute Prefab Number Loss! Error : Init_Fill_CrossRoad");
                }
                else
                {
                    Array_Road[i, j] = new RoadStatus(Prefab_Number);
                }
            }
        }
    }
예제 #18
0
    public static int Compute_Road_Num(RoadStatus A, RoadStatus D, RoadStatus W, RoadStatus S)
    {
        List <int> Able_Number = new List <int>();

        for (int i = 1; i < 9; i++)
        {
            Able_Number.Add(i);
        }

        RoadStatus[] CrossRoads = new RoadStatus[8];
        for (int i = 0; i < 8; i++)
        {
            CrossRoads[i] = new RoadStatus(i + 1);
        }


        if (A != null && A.To_D == 0)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_A != 0)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (A != null && A.To_D == 1)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_A != 1)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (A != null && A.To_D == 2)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_A != 2)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }

        if (D != null && D.To_A == 0)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_D != 0)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (D != null && D.To_A == 1)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_D != 1)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (D != null && D.To_A == 2)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_D != 2)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }

        if (W != null && W.To_S == 0)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_W != 0)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (W != null && W.To_S == 1)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_W != 1)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (W != null && W.To_S == 2)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_W != 2)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }

        if (S != null && S.To_W == 0)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_S != 0)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (S != null && S.To_W == 1)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_S != 1)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }
        else if (S != null && S.To_W == 2)
        {
            for (int i = 0; i < 8; i++)
            {
                if (CrossRoads[i].To_S != 2)
                {
                    Able_Number.Remove(CrossRoads[i].Prefab_Num);
                }
            }
        }

        if (Able_Number.Count == 0)
        {
            return(0);
        }
        if (Able_Number.Count == 1)
        {
            return(Able_Number[0]);
        }
        return(Able_Number[Random.Range(0, Able_Number.Count - 1)]);
    }
예제 #19
0
    public void Make_Prefab()
    {
        for (int i = 0; i < Road_Size; i++)
        {
            for (int j = 0; j < Road_Size; j++)
            {
                if (Array_Road[i, j] == null)
                {
                    RoadStatus[] roads = { null, null, null, null }; // ADWS
                    if (j - 1 >= 0)
                    {
                        roads[0] = Array_Road[i, j - 1];
                    }
                    if (j + 1 < Road_Size)
                    {
                        roads[1] = Array_Road[i, j + 1];
                    }
                    if (i - 1 >= 0)
                    {
                        roads[2] = Array_Road[i - 1, j];
                    }
                    if (i + 1 < Road_Size)
                    {
                        roads[3] = Array_Road[i + 1, j];
                    }

                    int index = -1;
                    for (int k = 0; k < 4; k++)
                    {
                        if (roads[k] != null)
                        {
                            if (roads[k].Is_Road() || (roads[k].Is_City() && !roads[k].bool_City))
                            {
                                index = 1;
                            }
                            else if (roads[k].Is_City())
                            {
                                index = 0;
                            }
                            else if (roads[k].Is_CrossRoad())
                            {
                                index = 2;
                            }
                        }
                    }

                    if (index == -1)
                    {
                        Debug.Log("From A From D From W From S All NULL! Error : Make_Prefab");
                    }

                    if (index == 1)
                    {
                        RoadStatus[] crossroads = { null, null, null, null };

                        if (j - 2 >= 0)
                        {
                            crossroads[0] = Array_Road[i, j - 2]; // A
                        }

                        if (j + 2 < Road_Size)
                        {
                            crossroads[1] = Array_Road[i, j + 2];
                        }

                        if (i - 2 >= 0)
                        {
                            crossroads[2] = Array_Road[i - 2, j];
                        }

                        if (i + 2 < Road_Size)
                        {
                            crossroads[3] = Array_Road[i + 2, j];
                        }

                        int cross_Index = -1;
                        for (int k = 0; k < 4; k++)
                        {
                            if (crossroads[k] != null)
                            {
                                if (crossroads[k].Is_Road() || (crossroads[k].Is_City() && !crossroads[k].bool_City))
                                {
                                    cross_Index = 1;
                                }
                                else if (crossroads[k].Is_City())
                                {
                                    cross_Index = 0;
                                }
                                else if (crossroads[k].Is_CrossRoad())
                                {
                                    cross_Index = 2;
                                }
                            }
                        }

                        if (cross_Index == -1)
                        {
                            Debug.Log("From A From D From W From S All NULL! Error : Make_Prefab");
                        }
                        else if (cross_Index == 0)
                        {
                            Array_Road[i, j]           = new RoadStatus(0);
                            Array_Road[i, j].bool_City = true;
                        }
                        else if (cross_Index == 2)
                        {
                            int Prefab_Number = RoadStatus.Compute_CrossRoad_Num(crossroads[0], crossroads[1], crossroads[2], crossroads[3],
                                                                                 roads[0], roads[1], roads[2], roads[3]);
                            if (Prefab_Number == -1)
                            {
                                Debug.Log("Compute Prefab Number Loss! Error : Init_Fill_CrossRoad");
                            }
                            else
                            {
                                Array_Road[i, j] = new RoadStatus(Prefab_Number);
                            }
                        }
                    }
                }
            }
        }

        for (int i = 0; i < Road_Size; i++)
        {
            for (int j = 0; j < Road_Size; j++)
            {
                if (Array_Road[i, j] == null)
                {
                    RoadStatus[] roads = { null, null, null, null }; // ADWS
                    if (j - 1 >= 0)
                    {
                        roads[0] = Array_Road[i, j - 1];
                    }
                    if (j + 1 < Road_Size)
                    {
                        roads[1] = Array_Road[i, j + 1];
                    }
                    if (i - 1 >= 0)
                    {
                        roads[2] = Array_Road[i - 1, j];
                    }
                    if (i + 1 < Road_Size)
                    {
                        roads[3] = Array_Road[i + 1, j];
                    }

                    int index = -1;
                    for (int k = 0; k < 4; k++)
                    {
                        if (roads[k] != null)
                        {
                            if (roads[k].Is_Road() || (roads[k].Is_City() && !roads[k].bool_City))
                            {
                                index = 1;
                            }
                            else if (roads[k].Is_City())
                            {
                                index = 0;
                            }
                            else if (roads[k].Is_CrossRoad())
                            {
                                index = 2;
                            }
                        }
                    }

                    if (index == -1)
                    {
                        Debug.Log("From A From D From W From S All NULL! Error : Make_Prefab");
                    }

                    if (index == 0 || index == 2)
                    {
                        int Prefab_Number = RoadStatus.Compute_Road_Num(roads[0], roads[1], roads[2], roads[3]);
                        if (Prefab_Number == -1)
                        {
                            Debug.Log("Compute Prefab Number Loss! Error : Init_Fill_CrossRoad");
                        }
                        else
                        {
                            Array_Road[i, j] = new RoadStatus(Prefab_Number);
                        }
                    }
                }
            }
        }
    }