@@ -653,36 +653,50 @@ func TestContextGetAndSetParam(t *testing.T) {
653653 })
654654}
655655
656- // Issue #1655
657- func TestContextSetParamNamesShouldUpdateEchoMaxParam (t * testing.T ) {
656+ func TestContextSetParamNamesEchoMaxParam (t * testing.T ) {
658657 e := New ()
659658 assert .Equal (t , 0 , * e .maxParam )
660659
661660 expectedOneParam := []string {"one" }
662661 expectedTwoParams := []string {"one" , "two" }
663662 expectedThreeParams := []string {"one" , "two" , "" }
664- expectedABCParams := []string {"A" , "B" , "C" }
665663
666- c := e .NewContext (nil , nil )
667- c .SetParamNames ("1" , "2" )
668- c .SetParamValues (expectedTwoParams ... )
669- assert .Equal (t , 2 , * e .maxParam )
670- assert .EqualValues (t , expectedTwoParams , c .ParamValues ())
671-
672- c .SetParamNames ("1" )
673- assert .Equal (t , 2 , * e .maxParam )
674- // Here for backward compatibility the ParamValues remains as they are
675- assert .EqualValues (t , expectedOneParam , c .ParamValues ())
676-
677- c .SetParamNames ("1" , "2" , "3" )
678- assert .Equal (t , 3 , * e .maxParam )
679- // Here for backward compatibility the ParamValues remains as they are, but the len is extended to e.maxParam
680- assert .EqualValues (t , expectedThreeParams , c .ParamValues ())
681-
682- c .SetParamValues ("A" , "B" , "C" , "D" )
683- assert .Equal (t , 3 , * e .maxParam )
684- // Here D shouldn't be returned
685- assert .EqualValues (t , expectedABCParams , c .ParamValues ())
664+ {
665+ c := e .AcquireContext ()
666+ c .SetParamNames ("1" , "2" )
667+ c .SetParamValues (expectedTwoParams ... )
668+ assert .Equal (t , 0 , * e .maxParam ) // has not been changed
669+ assert .EqualValues (t , expectedTwoParams , c .ParamValues ())
670+ e .ReleaseContext (c )
671+ }
672+
673+ {
674+ c := e .AcquireContext ()
675+ c .SetParamNames ("1" , "2" , "3" )
676+ c .SetParamValues (expectedThreeParams ... )
677+ assert .Equal (t , 0 , * e .maxParam ) // has not been changed
678+ assert .EqualValues (t , expectedThreeParams , c .ParamValues ())
679+ e .ReleaseContext (c )
680+ }
681+
682+ { // values is always same size as names length
683+ c := e .NewContext (nil , nil )
684+ c .SetParamValues ([]string {"one" , "two" }... ) // more values than names should be ok
685+ c .SetParamNames ("1" )
686+ assert .Equal (t , 0 , * e .maxParam ) // has not been changed
687+ assert .EqualValues (t , expectedOneParam , c .ParamValues ())
688+ }
689+
690+ e .GET ("/:id" , handlerFunc )
691+ assert .Equal (t , 1 , * e .maxParam ) // has not been changed
692+
693+ {
694+ c := e .NewContext (nil , nil )
695+ c .SetParamValues ([]string {"one" , "two" }... )
696+ c .SetParamNames ("1" )
697+ assert .Equal (t , 1 , * e .maxParam ) // has not been changed
698+ assert .EqualValues (t , expectedOneParam , c .ParamValues ())
699+ }
686700}
687701
688702func TestContextFormValue (t * testing.T ) {
0 commit comments