@@ -158,7 +158,8 @@ func (s *Subject) ActOnTestStructMethod(arg TestStruct, arg1 int) int {
158158 return 0
159159}
160160
161- func (s * Subject ) SetArgMethod (sliceArg []byte , ptrArg * int ) {}
161+ func (s * Subject ) SetArgMethod (sliceArg []byte , ptrArg * int , mapArg map [interface {}]interface {}) {}
162+ func (s * Subject ) SetArgMethodInterface (sliceArg , ptrArg , mapArg interface {}) {}
162163
163164func assertEqual (t * testing.T , expected interface {}, actual interface {}) {
164165 if ! reflect .DeepEqual (expected , actual ) {
@@ -560,29 +561,43 @@ func TestSetArgSlice(t *testing.T) {
560561
561562 var in = []byte {4 , 5 , 6 }
562563 var set = []byte {1 , 2 , 3 }
563- ctrl .RecordCall (subject , "SetArgMethod" , in , nil ).SetArg (0 , set )
564- ctrl .Call (subject , "SetArgMethod" , in , nil )
564+ ctrl .RecordCall (subject , "SetArgMethod" , in , nil , nil ).SetArg (0 , set )
565+ ctrl .Call (subject , "SetArgMethod" , in , nil , nil )
565566
566567 if ! reflect .DeepEqual (in , set ) {
567568 t .Error ("Expected SetArg() to modify input slice argument" )
568569 }
569570
571+ ctrl .RecordCall (subject , "SetArgMethodInterface" , in , nil , nil ).SetArg (0 , set )
572+ ctrl .Call (subject , "SetArgMethodInterface" , in , nil , nil )
573+
574+ if ! reflect .DeepEqual (in , set ) {
575+ t .Error ("Expected SetArg() to modify input slice argument as interface{}" )
576+ }
577+
570578 ctrl .Finish ()
571579}
572580
573581func TestSetArgMap (t * testing.T ) {
574582 _ , ctrl := createFixtures (t )
575583 subject := new (Subject )
576584
577- var in = map [interface {}]interface {}{"int" : 1 , "string" : "random string" , 1 : "1" }
585+ var in = map [interface {}]interface {}{"int" : 1 , "string" : "random string" , 1 : "1" , 0 : 0 }
578586 var set = map [interface {}]interface {}{"int" : 2 , 1 : "2" , 2 : 100 }
579- ctrl .RecordCall (subject , "SetArgMethod" , in , nil ).SetArg (0 , set )
580- ctrl .Call (subject , "SetArgMethod" , in , nil )
587+ ctrl .RecordCall (subject , "SetArgMethod" , nil , nil , in ).SetArg (2 , set )
588+ ctrl .Call (subject , "SetArgMethod" , nil , nil , in )
581589
582590 if ! reflect .DeepEqual (in , set ) {
583591 t .Error ("Expected SetArg() to modify input map argument" )
584592 }
585593
594+ ctrl .RecordCall (subject , "SetArgMethodInterface" , nil , nil , in ).SetArg (2 , set )
595+ ctrl .Call (subject , "SetArgMethodInterface" , nil , nil , in )
596+
597+ if ! reflect .DeepEqual (in , set ) {
598+ t .Error ("Expected SetArg() to modify input map argument as interface{}" )
599+ }
600+
586601 ctrl .Finish ()
587602}
588603
@@ -592,13 +607,19 @@ func TestSetArgPtr(t *testing.T) {
592607
593608 var in int = 43
594609 const set = 42
595- ctrl .RecordCall (subject , "SetArgMethod" , nil , & in ).SetArg (1 , set )
596- ctrl .Call (subject , "SetArgMethod" , nil , & in )
610+ ctrl .RecordCall (subject , "SetArgMethod" , nil , & in , nil ).SetArg (1 , set )
611+ ctrl .Call (subject , "SetArgMethod" , nil , & in , nil )
597612
598613 if in != set {
599614 t .Error ("Expected SetArg() to modify value pointed to by argument" )
600615 }
601616
617+ ctrl .RecordCall (subject , "SetArgMethodInterface" , nil , & in , nil ).SetArg (1 , set )
618+ ctrl .Call (subject , "SetArgMethodInterface" , nil , & in , nil )
619+
620+ if in != set {
621+ t .Error ("Expected SetArg() to modify value pointed to by argument as interface{}" )
622+ }
602623 ctrl .Finish ()
603624}
604625
0 commit comments