コード例 #1
0
        public void Can_Parse_TemplateSegments_From_Uri_WithQuery()
        {
            IReadOnlyList <TemplateSegment> segments = TemplateSegment.Parse(
                "api/{controller}/{action}/{id?}/properties?propertyIds={propertyGroupIds}&diddly={dee?}&foo=bar"
                );

            Assert.Equal(9, segments.Count);
            Assert.IsAssignableFrom <RootUriSegment>(segments[0]);

            LiteralUriSegment apiSegment = Assert.IsAssignableFrom <LiteralUriSegment>(segments[1]);

            Assert.Equal("api", apiSegment.Value);

            ParameterizedUriSegment controllerSegment = Assert.IsAssignableFrom <ParameterizedUriSegment>(segments[2]);

            Assert.True(controllerSegment.IsDirectory);
            Assert.Equal("controller", controllerSegment.TemplateParameterName);
            Assert.False(controllerSegment.IsOptional);

            ParameterizedUriSegment actionSegment = Assert.IsAssignableFrom <ParameterizedUriSegment>(segments[3]);

            Assert.True(actionSegment.IsDirectory);
            Assert.Equal("action", actionSegment.TemplateParameterName);
            Assert.False(actionSegment.IsOptional);

            ParameterizedUriSegment idSegment = Assert.IsAssignableFrom <ParameterizedUriSegment>(segments[4]);

            Assert.True(idSegment.IsDirectory);
            Assert.Equal("id", idSegment.TemplateParameterName);
            Assert.True(idSegment.IsOptional);

            LiteralUriSegment propertiesSegment = Assert.IsAssignableFrom <LiteralUriSegment>(segments[5]);

            Assert.False(propertiesSegment.IsDirectory);
            Assert.Equal("properties", propertiesSegment.Value);

            ParameterizedQuerySegment propertyIdsSegment = Assert.IsAssignableFrom <ParameterizedQuerySegment>(segments[6]);

            Assert.Equal("propertyIds", propertyIdsSegment.QueryParameterName);
            Assert.Equal("propertyGroupIds", propertyIdsSegment.TemplateParameterName);
            Assert.False(propertyIdsSegment.IsOptional);

            ParameterizedQuerySegment diddlySegment = Assert.IsAssignableFrom <ParameterizedQuerySegment>(segments[7]);

            Assert.Equal("diddly", diddlySegment.QueryParameterName);
            Assert.Equal("dee", diddlySegment.TemplateParameterName);
            Assert.True(diddlySegment.IsOptional);

            LiteralQuerySegment fooSegment = Assert.IsAssignableFrom <LiteralQuerySegment>(segments[8]);

            Assert.Equal("foo", fooSegment.QueryParameterName);
            Assert.Equal("bar", fooSegment.QueryParameterValue);
        }
コード例 #2
0
        public void Can_Parse_TemplateSegments_From_Uri()
        {
            IReadOnlyList <TemplateSegment> segments = TemplateSegment.Parse(
                "api/{controller}/{action}/{id?}/properties"
                );

            Assert.Equal(6, segments.Count);
            Assert.IsAssignableFrom <RootUriSegment>(segments[0]);

            LiteralUriSegment apiSegment = Assert.IsAssignableFrom <LiteralUriSegment>(segments[1]);

            Assert.Equal("api", apiSegment.Value);

            ParameterizedUriSegment controllerSegment = Assert.IsAssignableFrom <ParameterizedUriSegment>(segments[2]);

            Assert.True(controllerSegment.IsDirectory);
            Assert.Equal("controller", controllerSegment.TemplateParameterName);
            Assert.False(controllerSegment.IsOptional);

            ParameterizedUriSegment actionSegment = Assert.IsAssignableFrom <ParameterizedUriSegment>(segments[3]);

            Assert.True(actionSegment.IsDirectory);
            Assert.Equal("action", actionSegment.TemplateParameterName);
            Assert.False(actionSegment.IsOptional);

            ParameterizedUriSegment idSegment = Assert.IsAssignableFrom <ParameterizedUriSegment>(segments[4]);

            Assert.True(idSegment.IsDirectory);
            Assert.Equal("id", idSegment.TemplateParameterName);
            Assert.True(idSegment.IsOptional);

            LiteralUriSegment propertiesSegment = Assert.IsAssignableFrom <LiteralUriSegment>(segments[5]);

            Assert.False(propertiesSegment.IsDirectory);
            Assert.Equal("properties", propertiesSegment.Value);
        }