public void EvaluateDefaulted() { var segment = new ParameterSegment("controller", "Home", null); Assert.IsTrue(segment.MatchPath(null, new PathIterator("")).Success); Assert.AreEqual("Home", segment.MatchPath(null, new PathIterator("")).Values["controller"]); }
public void ConstraintsTreatedAsConstraints() { var segment = new ParameterSegment("controller", "Home", new RegexConstraint("^[0-9]+$")); Assert.IsFalse(segment.MatchPath(null, new PathIterator("/foo")).Success); Assert.IsTrue(segment.MatchPath(null, new PathIterator("/1")).Success); Assert.AreEqual("1", segment.MatchPath(null, new PathIterator("/1")).Values["controller"]); }
private void ParseParameter(ResxValue.Creator creator, int startIdx, ref string txt) { int idx = startIdx; StringBuilder buffer = new StringBuilder(); if (txt[idx] != '{') { throw new StringParseException("Expected '{': " + txt); } // skip initial character idx++; while (txt[idx] != '}') { if (txt.Length <= idx) { throw new StringParseException("Parameter is missing ending: " + txt); } buffer.Append(txt[idx]); idx++; } int paramNum = -1; if (!int.TryParse(buffer.ToString(), out paramNum)) { throw new StringParseException("Invalid parameter content: " + txt); } else { creator.AddSegment(ParameterSegment.Create(startIdx, idx, txt.Substring(startIdx, idx - startIdx + 1), paramNum)); } idx++; ParseText(creator, idx, ref txt); }