@@ -65,12 +65,14 @@ public async Task<IActionResult> GetOrder([FromRoute]int id)
6565 Assert . AreEqual ( "id" , parameter . Name . ToString ( ) ) ;
6666 }
6767
68- [ TestCase ( "orders/{id?}" , new [ ] { "orders" , "{id?}" } , new [ ] { "?" } ) ]
69- [ TestCase ( "orders/{id:min(1)}" , new [ ] { "orders" , "{id:min(1)}" } , new [ ] { "min(1)" } ) ]
70- [ TestCase ( "orders/{id:int:min(1):max(2)}" , new [ ] { "orders" , "{id:int:min(1):max(2)}" } , new [ ] { "int" , "min(1)" , "max(2)" } ) ]
71- [ TestCase ( "orders/{id:max(2)}" , new [ ] { "orders" , "{id:max(2)}" } , new [ ] { "max(2)" } ) ]
72- [ TestCase ( "orders/{id:int:max(2)}" , new [ ] { "orders" , "{id:int:max(2)}" } , new [ ] { "int" , "max(2)" } ) ]
73- [ TestCase ( "orders/{id:range(1,23)}" , new [ ] { "orders" , "{id:range(1,23)}" } , new [ ] { "range(1,23)" } ) ]
68+ [ TestCase ( "\" orders/{id}\" " , new [ ] { "orders" , "{id}" } , new string [ 0 ] ) ]
69+ [ TestCase ( "@\" orders/{id}\" " , new [ ] { "orders" , "{id}" } , new string [ 0 ] ) ]
70+ [ TestCase ( "\" orders/{id?}\" " , new [ ] { "orders" , "{id?}" } , new [ ] { "?" } ) ]
71+ [ TestCase ( "\" orders/{id:min(1)}\" " , new [ ] { "orders" , "{id:min(1)}" } , new [ ] { "min(1)" } ) ]
72+ [ TestCase ( "\" orders/{id:int:min(1):max(2)}\" " , new [ ] { "orders" , "{id:int:min(1):max(2)}" } , new [ ] { "int" , "min(1)" , "max(2)" } ) ]
73+ [ TestCase ( "\" orders/{id:max(2)}\" " , new [ ] { "orders" , "{id:max(2)}" } , new [ ] { "max(2)" } ) ]
74+ [ TestCase ( "\" orders/{id:int:max(2)}\" " , new [ ] { "orders" , "{id:int:max(2)}" } , new [ ] { "int" , "max(2)" } ) ]
75+ [ TestCase ( "\" orders/{id:range(1,23)}\" " , new [ ] { "orders" , "{id:range(1,23)}" } , new [ ] { "range(1,23)" } ) ]
7476 public void TryParseWhenIntParameter ( string text , string [ ] segments , string [ ] constraints )
7577 {
7678 var syntaxTree = CSharpSyntaxTree . ParseText ( @"
@@ -87,7 +89,7 @@ public async Task<IActionResult> GetOrder([FromRoute]int id)
8789 {
8890 }
8991 }
90- }" . AssertReplace ( "orders/{id}" , text ) ) ;
92+ }" . AssertReplace ( "\" orders/{id}\" " , text ) ) ;
9193 var literal = syntaxTree . FindLiteralExpression ( text ) ;
9294 Assert . AreEqual ( true , UrlTemplate . TryParse ( literal , out var template ) ) ;
9395 CollectionAssert . AreEqual ( segments , template . Path . Select ( x => x . Span . ToString ( ) ) ) ;
@@ -99,19 +101,21 @@ public async Task<IActionResult> GetOrder([FromRoute]int id)
99101 CollectionAssert . AreEqual ( constraints , parameter . Constraints . Select ( x => x . Span . ToString ( ) ) ) ;
100102 }
101103
102- [ TestCase ( "orders/{id}" , new [ ] { "orders" , "{id}" } , new string [ 0 ] ) ]
103- [ TestCase ( "orders/{id?}" , new [ ] { "orders" , "{id?}" } , new [ ] { "?" } ) ]
104- [ TestCase ( "orders/{id:alpha}" , new [ ] { "orders" , "{id:alpha}" } , new [ ] { "alpha" } ) ]
105- [ TestCase ( "orders/{id:ALPHA}" , new [ ] { "orders" , "{id:ALPHA}" } , new [ ] { "ALPHA" } ) ]
106- [ TestCase ( "orders/{id:alpha:minlength(1)}" , new [ ] { "orders" , "{id:alpha:minlength(1)}" } , new [ ] { "alpha" , "minlength(1)" } ) ]
107- [ TestCase ( "orders/{id:minlength(1)}" , new [ ] { "orders" , "{id:minlength(1)}" } , new [ ] { "minlength(1)" } ) ]
108- [ TestCase ( "orders/{id:maxlength(1)}" , new [ ] { "orders" , "{id:maxlength(1)}" } , new [ ] { "maxlength(1)" } ) ]
109- [ TestCase ( "orders/{id:length(1)}" , new [ ] { "orders" , "{id:length(1)}" } , new [ ] { "length(1)" } ) ]
110- [ TestCase ( "orders/{id:length(1,2)}" , new [ ] { "orders" , "{id:length(1,2)}" } , new [ ] { "length(1,2)" } ) ]
111- [ TestCase ( "orders/{id:regex(^\\ \\ d{{3}}-\\ \\ d{{2}}-\\ \\ d{4}$)}" , new [ ] { "orders" , "{id:regex(^\\ d{{3}}-\\ d{{2}}-\\ d{4}$)}" } , new [ ] { "regex(^\\ d{{3}}-\\ d{{2}}-\\ d{4}$)" } ) ]
112- [ TestCase ( "orders/{id:regex(a/b)}" , new [ ] { "orders" , "{id:regex(a/b)}" } , new [ ] { "regex(a/b)" } ) ]
113- [ TestCase ( "orders/{id:regex(a{{0,1}})}" , new [ ] { "orders" , "{id:regex(a{{0,1}})}" } , new [ ] { "regex(a{{0,1}})" } ) ]
114- [ TestCase ( "orders/{id:minlength(1):regex(a{{0,1}})}" , new [ ] { "orders" , "{id:minlength(1):regex(a{{0,1}})}" } , new [ ] { "minlength(1)" , "regex(a{{0,1}})" } ) ]
104+ [ TestCase ( "\" orders/{id}\" " , new [ ] { "orders" , "{id}" } , new string [ 0 ] ) ]
105+ [ TestCase ( "\" orders/{id?}\" " , new [ ] { "orders" , "{id?}" } , new [ ] { "?" } ) ]
106+ [ TestCase ( "\" orders/{id:alpha}\" " , new [ ] { "orders" , "{id:alpha}" } , new [ ] { "alpha" } ) ]
107+ [ TestCase ( "\" orders/{id:ALPHA}\" " , new [ ] { "orders" , "{id:ALPHA}" } , new [ ] { "ALPHA" } ) ]
108+ [ TestCase ( "\" orders/{id:alpha:minlength(1)}\" " , new [ ] { "orders" , "{id:alpha:minlength(1)}" } , new [ ] { "alpha" , "minlength(1)" } ) ]
109+ [ TestCase ( "\" orders/{id:minlength(1)}\" " , new [ ] { "orders" , "{id:minlength(1)}" } , new [ ] { "minlength(1)" } ) ]
110+ [ TestCase ( "\" orders/{id:maxlength(1)}\" " , new [ ] { "orders" , "{id:maxlength(1)}" } , new [ ] { "maxlength(1)" } ) ]
111+ [ TestCase ( "\" orders/{id:length(1)}\" " , new [ ] { "orders" , "{id:length(1)}" } , new [ ] { "length(1)" } ) ]
112+ [ TestCase ( "\" orders/{id:length(1,2)}\" " , new [ ] { "orders" , "{id:length(1,2)}" } , new [ ] { "length(1,2)" } ) ]
113+ [ TestCase ( "\" orders/{id:regex(^\\ \\ d$)}\" " , new [ ] { "orders" , "{id:regex(^\\ d$)}" } , new [ ] { "regex(^\\ d$)" } ) ]
114+ [ TestCase ( "@\" orders/{id:regex(^\\ d$)}\" " , new [ ] { "orders" , "{id:regex(^\\ d$)}" } , new [ ] { "regex(^\\ d$)" } ) ]
115+ [ TestCase ( "\" orders/{id:regex(^\\ \\ d{{3}}-\\ \\ d{{2}}-\\ \\ d{4}$)}\" " , new [ ] { "orders" , "{id:regex(^\\ d{{3}}-\\ d{{2}}-\\ d{4}$)}" } , new [ ] { "regex(^\\ d{{3}}-\\ d{{2}}-\\ d{4}$)" } ) ]
116+ [ TestCase ( "\" orders/{id:regex(a/b)}\" " , new [ ] { "orders" , "{id:regex(a/b)}" } , new [ ] { "regex(a/b)" } ) ]
117+ [ TestCase ( "\" orders/{id:regex(a{{0,1}})}\" " , new [ ] { "orders" , "{id:regex(a{{0,1}})}" } , new [ ] { "regex(a{{0,1}})" } ) ]
118+ [ TestCase ( "\" orders/{id:minlength(1):regex(a{{0,1}})}\" " , new [ ] { "orders" , "{id:minlength(1):regex(a{{0,1}})}" } , new [ ] { "minlength(1)" , "regex(a{{0,1}})" } ) ]
115119 public void TryParseWhenStringParameter ( string text , string [ ] segments , string [ ] constraints )
116120 {
117121 var syntaxTree = CSharpSyntaxTree . ParseText ( @"
@@ -128,7 +132,7 @@ public async Task<IActionResult> GetOrder(string id)
128132 {
129133 }
130134 }
131- }" . AssertReplace ( "orders/{id}" , text ) ) ;
135+ }" . AssertReplace ( "\" orders/{id}\" " , text ) ) ;
132136 var literal = syntaxTree . FindLiteralExpression ( text ) ;
133137 Assert . AreEqual ( true , UrlTemplate . TryParse ( literal , out var template ) ) ;
134138 CollectionAssert . AreEqual ( segments , template . Path . Select ( x => x . Span . ToString ( ) ) ) ;
@@ -137,8 +141,7 @@ public async Task<IActionResult> GetOrder(string id)
137141 var parameter = template . Path . Single ( x => x . Parameter . HasValue )
138142 . Parameter . Value ;
139143 Assert . AreEqual ( "id" , parameter . Name . ToString ( ) ) ;
140- CollectionAssert . AreEqual ( constraints , parameter . Constraints . Select ( x => x . Span . ToString ( ) )
141- . ToArray ( ) ) ;
144+ CollectionAssert . AreEqual ( constraints , parameter . Constraints . Select ( x => x . Span . ToString ( ) ) ) ;
142145 }
143146
144147 [ TestCase ( "orders/{id:}" , new [ ] { "orders" , "{id:}" } , new [ ] { "" } ) ]
0 commit comments