@@ -102,16 +102,17 @@ private bool IsSimple(object value)
102
102
}
103
103
104
104
[ Theory ]
105
- [ InlineData ( "matrix" , new [ ] { "a" , "b" } , ";bar=a,b" ) ]
106
- [ InlineData ( "exploded-matrix" , new [ ] { "a" , "b" } , ";bar=a;bar=b" ) ]
107
- [ InlineData ( "label" , new [ ] { "a" , "b" } , ".a.b" ) ]
108
- [ InlineData ( "exploded-label" , new [ ] { "a" , "b" } , ".a.b" ) ]
109
- public void SerializeArrays ( string style , string [ ] value , string expected )
105
+ [ InlineData ( ParameterStyle . Matrix , false , new [ ] { "a" , "b" } , ";bar=a,b" ) ]
106
+ [ InlineData ( ParameterStyle . Matrix , true , new [ ] { "a" , "b" } , ";bar=a;bar=b" ) ]
107
+ [ InlineData ( ParameterStyle . Label , false , new [ ] { "a" , "b" } , ".a.b" ) ]
108
+ [ InlineData ( ParameterStyle . Label , true , new [ ] { "a" , "b" } , ".a.b" ) ]
109
+ public void SerializeArrays ( ParameterStyle style , bool explode , string [ ] value , string expected )
110
110
{
111
111
var parameter = new OpenApiParameter
112
112
{
113
113
Name = "bar" ,
114
- Style = style
114
+ Style = style ,
115
+ Explode = explode
115
116
} ;
116
117
117
118
var actual = SerializeParameterValue ( parameter , value ) ;
@@ -136,17 +137,18 @@ public void SerializeEscapedStrings(string value, string expected)
136
137
// format="space-delimited" type="array" explode=true bar=a bar=b
137
138
138
139
[ Theory ]
139
- [ InlineData ( "matrix" , ";bar=a,1,b,2" ) ]
140
- [ InlineData ( "exploded-matrix" , ";a=1;b=2" ) ]
141
- [ InlineData ( "label" , ".a.1.b.2" ) ]
142
- [ InlineData ( "exploded-label" , ".a=1.b=2" ) ]
143
- public void SerializeMaps ( string style , string expected )
140
+ [ InlineData ( ParameterStyle . Matrix , false , ";bar=a,1,b,2" ) ]
141
+ [ InlineData ( ParameterStyle . Matrix , true , ";a=1;b=2" ) ]
142
+ [ InlineData ( ParameterStyle . Label , false , ".a.1.b.2" ) ]
143
+ [ InlineData ( ParameterStyle . Label , true , ".a=1.b=2" ) ]
144
+ public void SerializeMaps ( ParameterStyle style , bool explode , string expected )
144
145
{
145
146
var value = new Dictionary < string , string > { { "a" , "1" } , { "b" , "2" } } ;
146
147
var parameter = new OpenApiParameter
147
148
{
148
149
Name = "bar" ,
149
- Style = style
150
+ Style = style ,
151
+ Explode = explode
150
152
} ;
151
153
152
154
var actual = SerializeParameterValue ( parameter , value ) ;
@@ -161,43 +163,50 @@ private string SerializeParameterValue(OpenApiParameter parameter, object value)
161
163
162
164
switch ( parameter . Style )
163
165
{
164
- case "matrix" : // Matrix
165
- output = SerializeValues (
166
- parameter . Name ,
167
- false ,
168
- parameter . AllowReserved ,
169
- value ,
170
- ( n , v , m ) => ";" + n + ( string . IsNullOrEmpty ( v ) ? "" : "=" ) + v ,
171
- "," ) ;
172
- break ;
173
- case "exploded-matrix" : // Matrix
174
- output = SerializeValues (
175
- parameter . Name ,
176
- true ,
177
- parameter . AllowReserved ,
178
- value ,
179
- ( n , v , m ) => ";" + n + ( string . IsNullOrEmpty ( v ) ? "" : "=" ) + v ,
180
- "," ) ;
181
- break ;
182
-
183
- case "label" : // Label
184
- output = SerializeValues (
185
- parameter . Name ,
186
- false ,
187
- parameter . AllowReserved ,
188
- value ,
189
- ( n , v , m ) => "." + ( m ? n + "=" : "" ) + v ,
190
- "." ) ;
166
+ case ParameterStyle . Matrix : // Matrix
167
+ if ( ! parameter . Explode )
168
+ {
169
+ output = SerializeValues (
170
+ parameter . Name ,
171
+ false ,
172
+ parameter . AllowReserved ,
173
+ value ,
174
+ ( n , v , m ) => ";" + n + ( string . IsNullOrEmpty ( v ) ? "" : "=" ) + v ,
175
+ "," ) ;
176
+ }
177
+ else
178
+ {
179
+ output = SerializeValues (
180
+ parameter . Name ,
181
+ true ,
182
+ parameter . AllowReserved ,
183
+ value ,
184
+ ( n , v , m ) => ";" + n + ( string . IsNullOrEmpty ( v ) ? "" : "=" ) + v ,
185
+ "," ) ;
186
+ }
191
187
break ;
192
188
193
- case "exploded-label" : // Label
194
- output = SerializeValues (
195
- parameter . Name ,
196
- true ,
197
- parameter . AllowReserved ,
198
- value ,
199
- ( n , v , m ) => "." + ( m ? n + "=" : "" ) + v ,
200
- "." ) ;
189
+ case ParameterStyle . Label : // Label
190
+ if ( ! parameter . Explode )
191
+ {
192
+ output = SerializeValues (
193
+ parameter . Name ,
194
+ false ,
195
+ parameter . AllowReserved ,
196
+ value ,
197
+ ( n , v , m ) => "." + ( m ? n + "=" : "" ) + v ,
198
+ "." ) ;
199
+ }
200
+ else
201
+ {
202
+ output = SerializeValues (
203
+ parameter . Name ,
204
+ true ,
205
+ parameter . AllowReserved ,
206
+ value ,
207
+ ( n , v , m ) => "." + ( m ? n + "=" : "" ) + v ,
208
+ "." ) ;
209
+ }
201
210
break ;
202
211
203
212
default : // Simple
@@ -215,10 +224,10 @@ private string SerializeParameterValue(OpenApiParameter parameter, object value)
215
224
}
216
225
217
226
[ Theory ]
218
- [ InlineData ( "label" , "yo" , ".yo" ) ]
219
- [ InlineData ( "matrix" , "x" , ";foo=x" ) ]
220
- [ InlineData ( "matrix" , "" , ";foo" ) ]
221
- public void SerializePrefixedStrings ( string style , string value , string expected )
227
+ [ InlineData ( ParameterStyle . Label , "yo" , ".yo" ) ]
228
+ [ InlineData ( ParameterStyle . Matrix , "x" , ";foo=x" ) ]
229
+ [ InlineData ( ParameterStyle . Matrix , "" , ";foo" ) ]
230
+ public void SerializePrefixedStrings ( ParameterStyle style , string value , string expected )
222
231
{
223
232
var parameter = new OpenApiParameter
224
233
{
0 commit comments