Exemplo n.º 1
0
        [DataRow(@"5.11c/6c+", GradeSystem.YDS, "5.11c")] //Match YDS grade out of mixed grades
        public void TestRouteGradeParse(string inputGrade, GradeSystem expectedSystem, string expectedValue)
        {
            Grade parsedGrade = Grade.ParseString(inputGrade)[0]; //Todo: expand test for multiple grades found

            Assert.AreEqual(expectedSystem, parsedGrade.System);
            Assert.AreEqual(expectedValue, parsedGrade.ToString(false));
        }
Exemplo n.º 2
0
        public string RectifyGradeValue(GradeSystem system, string gradeValue)
        {
            //If gradeValue only consists of a subgrade (eg "a" or "+")
            if (Regex.Match(gradeValue, @"[a-dA-D+\-]").Value == gradeValue)
            {
                gradeValue = BaseValue + gradeValue;
            }

            if (system == GradeSystem.Hueco)
            {
                gradeValue = gradeValue.ToUpper();

                if (!gradeValue.Contains("V"))
                {
                    gradeValue = "V" + gradeValue;
                }
            }
            else if (system == GradeSystem.YDS)
            {
                gradeValue = gradeValue.ToLower();

                if (!gradeValue.Contains("5."))
                {
                    gradeValue = "5." + gradeValue;
                }
            }

            return(gradeValue);
        }
Exemplo n.º 3
0
        public static string RectifyGradeValue(GradeSystem system, string gradeValue)
        {
            //On MountainProject, Hueco grades are of the form V6-7 and YDS grades are
            //of the form 5.10a/b

            if (system == GradeSystem.Hueco)
            {
                gradeValue = Regex.Replace(gradeValue, @"\\|\/", "-"); //Replace slashes with hyphens
                gradeValue = gradeValue.ToUpper();

                if (!gradeValue.Contains("V"))
                {
                    gradeValue = "V" + gradeValue;
                }
            }
            else if (system == GradeSystem.YDS)
            {
                gradeValue = Regex.Replace(gradeValue, @"((\-)|(\\))(?=[a-dA-D])", "/"); //Replace hyphens and backslashes with forward slashes (but not instances like 5.9-)
                gradeValue = gradeValue.ToLower();

                if (!gradeValue.Contains("5."))
                {
                    gradeValue = "5." + gradeValue;
                }
            }

            return(gradeValue);
        }
Exemplo n.º 4
0
        public void ValidInputForGradeConversion(int percentage, int expected)
        {
            IGradeSystem gradeSystem = new GradeSystem();

            gradeSystem.ToGrade(percentage);
            Assert.Equal(expected, gradeSystem.Result);
        }
Exemplo n.º 5
0
        public void OutOfRangeForGradeConversionExpectingArgumentException(int percentage)
        {
            IGradeSystem gradeSystem = new GradeSystem();

            Assert.Throws <ArgumentException>(() =>
            {
                gradeSystem.ToGrade(percentage);
            });
        }
Exemplo n.º 6
0
        public Grade(GradeSystem system, string value, bool rectify = true)
        {
            this.System = system;
            this.Value  = value;

            if (rectify)
            {
                this.Value = RectifyGradeValue(system, value);
            }
        }
Exemplo n.º 7
0
    // Start is called before the first frame update
    void Start()
    {
        TimerBar = GameObject.Find("Canvas").transform.Find("Timer Bar").GetComponent <Slider>();

        timerSpeed = TimerSpeed;

        gradeSystem = GameObject.Find("System").transform.Find("Grade System").GetComponent <GradeSystem>();

        wait = new WaitForSeconds(0.001f);
    }
Exemplo n.º 8
0
        public Grade GetRouteGrade(ResultParameters parameters)
        {
            GradeSystem gradeSystem = GradeSystem.YDS;

            if (parameters != null)
            {
                gradeSystem = parameters.GradeSystem;
            }

            return(GetRouteGrade(gradeSystem));
        }
        public static ResultParameters ParseParameters(ref string input)
        {
            ResultParameters parameters = null;

            if (Regex.IsMatch(input, "-grade", RegexOptions.IgnoreCase))
            {
                string system = Regex.Match(input, @"-grade:([^-\n]*)", RegexOptions.IgnoreCase).Groups[1].Value;
                switch (system.ToLower().Replace(" ", ""))
                {
                case "yds":
                case "usa":
                case "us":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.YDS;
                    break;

                case "french":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.French;
                    break;

                case "ewbanks":
                case "australia":
                case "nz":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.Ewbanks;
                    break;

                case "uiaa":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.UIAA;
                    break;

                case "southafrica":
                case "za":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.SouthAfrica;
                    break;

                case "british":
                case "uk":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.Britsh;
                    break;

                case "hueco":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.Hueco;
                    break;

                case "fontainebleau":
                case "font":
                    (parameters ??= new ResultParameters()).GradeSystem = GradeSystem.Fontainebleau;
                    break;
                }

                input = Regex.Replace(input, @"-grade:[^-\n]*", "", RegexOptions.IgnoreCase).Trim();
            }

            return(parameters);
        }
Exemplo n.º 10
0
        [DataRow("/route/116181996/13-above-the-night", GradeSystem.Unlabled, "WI4 M5")] //No YDS/Heuco present
        public void TestRouteGradeParse(string url, GradeSystem gradeSystem, string expectedValue)
        {
            if (!url.Contains(Utilities.MPBASEURL))
            {
                url = Utilities.MPBASEURL + url;
            }

            Grade expectedGrade = new Grade(gradeSystem, expectedValue);
            Grade routeGrade    = Parsers.ParseRouteGrades(Utilities.GetHtmlDoc(url)).Find(p => p.System == gradeSystem);

            Assert.AreEqual(expectedGrade, routeGrade);
        }
Exemplo n.º 11
0
        [DataRow("/route/108170851/new-dawn", GradeSystem.Aid, "A3")]                  //Includes "Aid rating"
        public void TestRouteGradeParse(string url, GradeSystem expectedGradeSystem, string expectedValue)
        {
            if (!url.Contains(Utilities.MPBASEURL))
            {
                url = Utilities.MPBASEURL + url;
            }

            List <Grade> parsedGrades          = Parsers.ParseRouteGrades(Utilities.GetHtmlDoc(url));
            Grade        gradeMatchingExpected = parsedGrades.Find(p => p.System == expectedGradeSystem && p.Value == expectedValue);

            Assert.IsNotNull(gradeMatchingExpected);
        }
Exemplo n.º 12
0
    // Start is called before the first frame update
    void Start()
    {
        timerSystem   = GameObject.Find("System").transform.Find("Timer System").GetComponent <TimerSystem>();
        gradeSystem   = GameObject.Find("System").transform.Find("Grade System").GetComponent <GradeSystem>();
        patternSystem = GameObject.Find("System").transform.Find("Pattern System").GetComponent <PatternSystem>();

        milkTimer = GameObject.Find("Timer GUI").GetComponent <TimerGUI>();
        hitArea   = GameObject.Find("TimerBar").transform.Find("Hit Area").GetComponent <HitArea>();

        RestartDelay = new WaitForSeconds(1f);

        Play_Milk();
    }
Exemplo n.º 13
0
        public void TestGradeEquality()
        {
            InitMPData();

            for (int i = 0; i < testCriteria_gradeEquality.GetLength(0); i++)
            {
                string      inputUrl      = testCriteria_gradeEquality[i, 0].ToString();
                GradeSystem gradeSystem   = (GradeSystem)testCriteria_gradeEquality[i, 1];
                string      inputGrade    = testCriteria_gradeEquality[i, 2].ToString();
                Grade       expectedGrade = Grade.ParseString(inputGrade)[0];

                Route route = MountainProjectDataSearch.GetItemWithMatchingID(Utilities.GetID(Utilities.MPBASEURL + inputUrl)) as Route;

                Assert.IsTrue(route.Grades.Any(g => expectedGrade.Equals(g, true, true)));
            }
        }
Exemplo n.º 14
0
        public Grade GetRouteGrade(GradeSystem requestedSystem = GradeSystem.YDS)
        {
            Grade matchingGrade = this.Grades.Find(g => g.System == requestedSystem);

            if (matchingGrade != null)
            {
                return(matchingGrade);
            }
            else if (requestedSystem == GradeSystem.Hueco && this.Grades.Any(g => g.System == GradeSystem.YDS)) //If the user wanted hueco, but we only have YDS
            {
                return(this.Grades.Find(g => g.System == GradeSystem.YDS));
            }
            else if (requestedSystem == GradeSystem.YDS && this.Grades.Any(g => g.System == GradeSystem.Hueco)) //If the user wanted YDS, but we only have Hueco
            {
                return(this.Grades.Find(g => g.System == GradeSystem.Hueco));
            }
            else if (requestedSystem == GradeSystem.French && this.Grades.Any(g => g.System == GradeSystem.Fontainebleau)) //If the user wanted French, but we only have Fontainebleau
            {
                return(this.Grades.Find(g => g.System == GradeSystem.Fontainebleau));
            }
            else if (requestedSystem == GradeSystem.Fontainebleau && this.Grades.Any(g => g.System == GradeSystem.French)) //If the user wanted Fontainebleau, but we only have French
            {
                return(this.Grades.Find(g => g.System == GradeSystem.French));
            }
            else if (this.Grades.Any(g => g.System == GradeSystem.Unlabled))
            {
                return(this.Grades.Find(g => g.System == GradeSystem.Unlabled));
            }
            else if (this.Grades.Any(g => g.System == GradeSystem.YDS)) //Default to YDS
            {
                return(this.Grades.Find(g => g.System == GradeSystem.YDS));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 15
0
        private void SendClassName()
        {
            if (currentMachineAddr == 0)
            {
                setVolumeFailed = true;
                login.setMachineVolumn.Resume();
                MessageBox.Show(string.Format("对门口机{0}设定容量失败!", currentMachineAddr));
                return;
            }

            DataFrame data = new DataFrame();

            data.sym      = new byte[] { (byte)'@', (byte)'@' };
            data.desAddr  = currentMachineAddr;
            data.srcAddr  = 0;
            data.protocol = CPTT.SystemFramework.Util.SEND_CLASSNAME_TOKEN;
            data.seq      = CPTT.SystemFramework.Util.FRAME_SEQUENCE_VALUE;

            ArrayList nameList        = new ArrayList();
            ArrayList numberList      = new ArrayList();
            int       totalNameLength = 0;

            int classNumberTemp = 0;

            for (int i = 0; i < gridView2.DataRowCount; i++)
            {
                int gradeNumber = Convert.ToInt32(gridView2.GetDataRow(i)["info_gradeNumber"]);
                if (currentGradeNumber != gradeNumber)
                {
                    if (currentGradeNumber < gradeNumber)
                    {
                        currentGradeNumber = gradeNumber;
                        break;
                    }
                }
                else
                {
                    byte[] nameBytes = System.Text.Encoding.GetEncoding("gb2312").GetBytes(gridView2.GetDataRow(i)["info_className"].ToString());
                    nameList.Add(nameBytes);
                    totalNameLength += nameBytes.Length;
                    classNumberTemp  = Convert.ToInt32(gridView2.GetDataRow(i)["machine_address"]);
                    int classNum = classNumberTemp;
                    classNum = classNum / 10 * 16 + classNum % 10;
                    numberList.Add(classNum);
                }

                if (i == gridView2.DataRowCount - 1)
                {
                    isLast = true;
                }
            }

            if (nameList.Count != numberList.Count)
            {
                setVolumeFailed = true;
                login.setMachineVolumn.Resume();
                MessageBox.Show(string.Format("对门口机{0}设定容量失败!", currentMachineAddr));
                return;
            }

            //numberList.Count * 2 其中包括一个字节描述namebytes的长度
            //1个字节描述年级
            data.comFrameLen = Convert.ToByte(8 + 1 + numberList.Count * 2 + totalNameLength);
            data.frameData   = new byte[1 + numberList.Count * 2 + totalNameLength];

            DataSet gradeInfo          = new GradeSystem().GetGradeInfo(classNumberTemp / 10);
            int     gradeNumberMapping = 5;

            if (gradeInfo.Tables.Count > 0)
            {
                string gradeName = gradeInfo.Tables[0].Rows[0]["info_gradeName"].ToString();
                switch (gradeName)
                {
                case "托班": gradeNumberMapping = 1;
                    break;

                case "小班": gradeNumberMapping = 2;
                    break;

                case "中班": gradeNumberMapping = 3;
                    break;

                case "大班": gradeNumberMapping = 4;
                    break;

                default: gradeNumberMapping = 5;
                    break;
                }
            }

            data.frameData[0] = Convert.ToByte(gradeNumberMapping);
            int cursor = 1;

            for (int i = 0; i < nameList.Count; i++)
            {
                data.frameData[cursor++] = Convert.ToByte(numberList[i]);
                byte[] nameBytes = (byte[])nameList[i];
                data.frameData[cursor++] = Convert.ToByte(nameBytes.Length);
                for (int j = 0; j < nameBytes.Length; j++)
                {
                    data.frameData[cursor++] = nameBytes[j];
                }
            }

            data.computeCheckSum();

            Monitor.Enter(Login.syncRoot);
            try
            {
                Login.handleComClass.WriteSerialCmd(data.comFrameLen, data.frameToBytes());                //发送问询帧
            }
            finally
            {
                Monitor.Exit(Login.syncRoot);
            }
        }