@@ -267,3 +267,89 @@ func findMethod(t *testing.T, identifier, methodName string, lines []string) int
267
267
t .Fatalf ("unable to find 'func (m %s) %s'" , identifier , methodName )
268
268
panic ("unreachable" )
269
269
}
270
+
271
+ func TestGetArgNames (t * testing.T ) {
272
+ for _ , testCase := range []struct {
273
+ name string
274
+ method * model.Method
275
+ expected []string
276
+ }{
277
+ {
278
+ name : "NamedArg" ,
279
+ method : & model.Method {
280
+ In : []* model.Parameter {
281
+ {
282
+ Name : "firstArg" ,
283
+ Type : & model.NamedType {Type : "int" },
284
+ },
285
+ {
286
+ Name : "secondArg" ,
287
+ Type : & model.NamedType {Type : "string" },
288
+ },
289
+ },
290
+ },
291
+ expected : []string {"firstArg" , "secondArg" },
292
+ },
293
+ {
294
+ name : "NotNamedArg" ,
295
+ method : & model.Method {
296
+ In : []* model.Parameter {
297
+ {
298
+ Name : "" ,
299
+ Type : & model.NamedType {Type : "int" },
300
+ },
301
+ {
302
+ Name : "" ,
303
+ Type : & model.NamedType {Type : "string" },
304
+ },
305
+ },
306
+ },
307
+ expected : []string {"arg0" , "arg1" },
308
+ },
309
+ {
310
+ name : "MixedNameArg" ,
311
+ method : & model.Method {
312
+ In : []* model.Parameter {
313
+ {
314
+ Name : "firstArg" ,
315
+ Type : & model.NamedType {Type : "int" },
316
+ },
317
+ {
318
+ Name : "_" ,
319
+ Type : & model.NamedType {Type : "string" },
320
+ },
321
+ },
322
+ },
323
+ expected : []string {"firstArg" , "arg1" },
324
+ },
325
+ } {
326
+ t .Run (testCase .name , func (t * testing.T ) {
327
+ g := generator {}
328
+
329
+ result := g .getArgNames (testCase .method )
330
+ if ! testEqSliceStr (t , result , testCase .expected ) {
331
+ t .Fatalf ("expected %s, got %s" , result , testCase .expected )
332
+ }
333
+ })
334
+ }
335
+ }
336
+
337
+ func testEqSliceStr (t * testing.T , a , b []string ) bool {
338
+ t .Helper ()
339
+
340
+ if a == nil || b == nil {
341
+ return false
342
+ }
343
+
344
+ if len (a ) != len (b ) {
345
+ return false
346
+ }
347
+
348
+ for i := range a {
349
+ if a [i ] != b [i ] {
350
+ return false
351
+ }
352
+ }
353
+
354
+ return true
355
+ }
0 commit comments