[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)); }
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); }
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); }
public void ValidInputForGradeConversion(int percentage, int expected) { IGradeSystem gradeSystem = new GradeSystem(); gradeSystem.ToGrade(percentage); Assert.Equal(expected, gradeSystem.Result); }
public void OutOfRangeForGradeConversionExpectingArgumentException(int percentage) { IGradeSystem gradeSystem = new GradeSystem(); Assert.Throws <ArgumentException>(() => { gradeSystem.ToGrade(percentage); }); }
public Grade(GradeSystem system, string value, bool rectify = true) { this.System = system; this.Value = value; if (rectify) { this.Value = RectifyGradeValue(system, value); } }
// 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); }
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); }
[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); }
[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); }
// 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(); }
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))); } }
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); } }
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); } }