diff options
author | D. Can Celasun <dcelasun@gmail.com> | 2017-01-15 10:53:19 +0100 |
---|---|---|
committer | Jens Geyer <jensg@apache.org> | 2017-02-21 22:32:49 +0100 |
commit | 43fb34df2871b69c2f34dc3bb353e65cbc9f8692 (patch) | |
tree | 863c2a323a7132661488e83514c1573125732dc1 /test/go | |
parent | bc0082e02357de2f30b997188bdfa94d703331f4 (diff) | |
download | thrift-43fb34df2871b69c2f34dc3bb353e65cbc9f8692.tar.gz |
THRIFT-4011 Sets of Thrift structs generate Go code that can't be serialized to JSON
Client: Go
Patch: D. Can Celasun <dcelasun@gmail.com>
This closes #1156
Diffstat (limited to 'test/go')
-rw-r--r-- | test/go/src/bin/testclient/main.go | 15 | ||||
-rw-r--r-- | test/go/src/common/clientserver_test.go | 17 | ||||
-rw-r--r-- | test/go/src/common/mock_handler.go | 4 | ||||
-rw-r--r-- | test/go/src/common/printing_handler.go | 2 | ||||
-rw-r--r-- | test/go/src/common/simple_handler.go | 2 |
5 files changed, 27 insertions, 13 deletions
diff --git a/test/go/src/bin/testclient/main.go b/test/go/src/bin/testclient/main.go index f4a19dded..228120b04 100644 --- a/test/go/src/bin/testclient/main.go +++ b/test/go/src/bin/testclient/main.go @@ -174,13 +174,20 @@ func callEverything(client *thrifttest.ThriftTestClient) { t.Fatalf("Unexpected TestStringMap() result expected %#v, got %#v ", sm, smret) } - s := map[int32]struct{}{1: struct{}{}, 2: struct{}{}, 42: struct{}{}} + s := []int32{1, 2, 42} sret, err := client.TestSet(s) if err != nil { t.Fatalf("Unexpected error in TestSet() call: ", err) } - if !reflect.DeepEqual(s, sret) { - t.Fatalf("Unexpected TestSet() result expected %#v, got %#v ", s, sret) + // Sets can be in any order, but Go slices are ordered, so reflect.DeepEqual won't work. + stemp := map[int32]struct{}{} + for _, val := range s { + stemp[val] = struct{}{} + } + for _, val := range sret { + if _, ok := stemp[val]; !ok { + t.Fatalf("Unexpected TestSet() result expected %#v, got %#v ", s, sret) + } } l := []int32{1, 2, 42} @@ -189,7 +196,7 @@ func callEverything(client *thrifttest.ThriftTestClient) { t.Fatalf("Unexpected error in TestList() call: ", err) } if !reflect.DeepEqual(l, lret) { - t.Fatalf("Unexpected TestSet() result expected %#v, got %#v ", l, lret) + t.Fatalf("Unexpected TestList() result expected %#v, got %#v ", l, lret) } eret, err := client.TestEnum(thrifttest.Numberz_TWO) diff --git a/test/go/src/common/clientserver_test.go b/test/go/src/common/clientserver_test.go index 549e8d1eb..9f490eaf8 100644 --- a/test/go/src/common/clientserver_test.go +++ b/test/go/src/common/clientserver_test.go @@ -105,7 +105,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h handler.EXPECT().TestNest(&thrifttest.Xtruct2{StructThing: &thrifttest.Xtruct{StringThing: "thing", ByteThing: 42, I32Thing: 4242, I64Thing: 424242}}).Return(&thrifttest.Xtruct2{StructThing: &thrifttest.Xtruct{StringThing: "thing", ByteThing: 42, I32Thing: 4242, I64Thing: 424242}}, nil), handler.EXPECT().TestMap(map[int32]int32{1: 2, 3: 4, 5: 42}).Return(map[int32]int32{1: 2, 3: 4, 5: 42}, nil), handler.EXPECT().TestStringMap(map[string]string{"a": "2", "b": "blah", "some": "thing"}).Return(map[string]string{"a": "2", "b": "blah", "some": "thing"}, nil), - handler.EXPECT().TestSet(map[int32]struct{}{1: struct{}{}, 2: struct{}{}, 42: struct{}{}}).Return(map[int32]struct{}{1: struct{}{}, 2: struct{}{}, 42: struct{}{}}, nil), + handler.EXPECT().TestSet([]int32{1, 2, 42}).Return([]int32{1, 2, 42}, nil), handler.EXPECT().TestList([]int32{1, 2, 42}).Return([]int32{1, 2, 42}, nil), handler.EXPECT().TestEnum(thrifttest.Numberz_TWO).Return(thrifttest.Numberz_TWO, nil), handler.EXPECT().TestTypedef(thrifttest.UserId(42)).Return(thrifttest.UserId(42), nil), @@ -222,13 +222,20 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h t.Errorf("Unexpected TestStringMap() result expected %#v, got %#v ", sm, smret) } - s := map[int32]struct{}{1: struct{}{}, 2: struct{}{}, 42: struct{}{}} + s := []int32{1, 2, 42} sret, err := client.TestSet(s) if err != nil { t.Errorf("Unexpected error in TestSet() call: ", err) } - if !reflect.DeepEqual(s, sret) { - t.Errorf("Unexpected TestSet() result expected %#v, got %#v ", s, sret) + // Sets can be in any order, but Go slices are ordered, so reflect.DeepEqual won't work. + stemp := map[int32]struct{}{} + for _, val := range s { + stemp[val] = struct{}{} + } + for _, val := range sret { + if _, ok := stemp[val]; !ok { + t.Fatalf("Unexpected TestSet() result expected %#v, got %#v ", s, sret) + } } l := []int32{1, 2, 42} @@ -237,7 +244,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h t.Errorf("Unexpected error in TestList() call: ", err) } if !reflect.DeepEqual(l, lret) { - t.Errorf("Unexpected TestSet() result expected %#v, got %#v ", l, lret) + t.Errorf("Unexpected TestList() result expected %#v, got %#v ", l, lret) } eret, err := client.TestEnum(thrifttest.Numberz_TWO) diff --git a/test/go/src/common/mock_handler.go b/test/go/src/common/mock_handler.go index 6ae8130a8..b6738ee16 100644 --- a/test/go/src/common/mock_handler.go +++ b/test/go/src/common/mock_handler.go @@ -223,9 +223,9 @@ func (_mr *_MockThriftTestRecorder) TestOneway(arg0 interface{}) *gomock.Call { return _mr.mock.ctrl.RecordCall(_mr.mock, "TestOneway", arg0) } -func (_m *MockThriftTest) TestSet(_param0 map[int32]struct{}) (map[int32]struct{}, error) { +func (_m *MockThriftTest) TestSet(_param0 []int32) ([]int32, error) { ret := _m.ctrl.Call(_m, "TestSet", _param0) - ret0, _ := ret[0].(map[int32]struct{}) + ret0, _ := ret[0].([]int32) ret1, _ := ret[1].(error) return ret0, ret1 } diff --git a/test/go/src/common/printing_handler.go b/test/go/src/common/printing_handler.go index afee8da7a..d4e2be919 100644 --- a/test/go/src/common/printing_handler.go +++ b/test/go/src/common/printing_handler.go @@ -188,7 +188,7 @@ func (p *printingHandler) TestStringMap(thing map[string]string) (r map[string]s // // Parameters: // - Thing -func (p *printingHandler) TestSet(thing map[int32]struct{}) (r map[int32]struct{}, err error) { +func (p *printingHandler) TestSet(thing []int32) (r []int32, err error) { fmt.Printf("testSet({") first := true for k, _ := range thing { diff --git a/test/go/src/common/simple_handler.go b/test/go/src/common/simple_handler.go index 7bd3a30f1..0c9463da0 100644 --- a/test/go/src/common/simple_handler.go +++ b/test/go/src/common/simple_handler.go @@ -77,7 +77,7 @@ func (p *simpleHandler) TestStringMap(thing map[string]string) (r map[string]str return thing, nil } -func (p *simpleHandler) TestSet(thing map[int32]struct{}) (r map[int32]struct{}, err error) { +func (p *simpleHandler) TestSet(thing []int32) (r []int32, err error) { return thing, nil } |