Example #1
0
        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"]);
        }
Example #2
0
        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"]);
        }
Example #3
0
        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);
        }