| // Copyright 2024 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package name_clash_test |
| |
| import ( |
| "testing" |
| |
| "google.golang.org/protobuf/proto" |
| |
| hpb "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_hybrid3" |
| opb "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_opaque3" |
| pb "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3" |
| ) |
| |
| // TestOpenMangling3 tests the backwards compatible mangling of fields |
| // who clashes with the getters. The expected behavior, which is |
| // somewhat surprising, is documented in the proto |
| // test_name_clash_open.proto itself. |
| func TestOpenMangling3(t *testing.T) { |
| m1 := &pb.M1{ |
| Foo: makeOpenM0(1), |
| GetFoo_: makeOpenM0(2), |
| GetGetFoo: makeOpenM0(3), |
| } |
| if m1.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m1.GetFoo().GetI1(), m1) |
| } |
| if m1.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m1.GetGetFoo_().GetI1(), m1) |
| } |
| if m1.GetGetGetFoo().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m1.GetGetGetFoo().GetI1(), m1) |
| } |
| m2 := &pb.M2{ |
| Foo: makeOpenM0(1), |
| GetFoo_: makeOpenM0(2), |
| GetGetFoo: makeOpenM0(3), |
| } |
| if m2.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m2.GetFoo().GetI1(), m2) |
| } |
| if m2.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m2.GetGetFoo_().GetI1(), m2) |
| } |
| if m2.GetGetGetFoo().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m2.GetGetGetFoo().GetI1(), m2) |
| } |
| m3 := &pb.M3{ |
| Foo_: makeOpenM0(1), |
| GetFoo: makeOpenM0(2), |
| GetGetFoo_: makeOpenM0(3), |
| } |
| if m3.GetFoo_().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m3.GetFoo_().GetI1(), m3) |
| } |
| if m3.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m3.GetGetFoo().GetI1(), m3) |
| } |
| if m3.GetGetGetFoo_().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m3.GetGetGetFoo_().GetI1(), m3) |
| } |
| |
| m4 := &pb.M4{ |
| GetFoo: makeOpenM0(2), |
| GetGetFoo_: &pb.M4_GetGetGetFoo{GetGetGetFoo: 3}, |
| Foo_: makeOpenM0(1), |
| } |
| if m4.GetFoo_().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m4.GetFoo_().GetI1(), m4) |
| } |
| if m4.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m4.GetGetFoo().GetI1(), m4) |
| } |
| if m4.GetGetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m4.GetGetGetGetFoo(), m4) |
| } |
| |
| m5 := &pb.M5{ |
| GetFoo: makeOpenM0(2), |
| GetGetGetFoo: &pb.M5_GetGetFoo_{GetGetFoo_: 3}, |
| Foo_: makeOpenM0(1), |
| } |
| if m5.GetFoo_().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m5.GetFoo_().GetI1(), m5) |
| } |
| if m5.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m5.GetGetFoo().GetI1(), m5) |
| } |
| if m5.GetGetGetFoo_() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m5.GetGetGetFoo_(), m5) |
| } |
| |
| m6 := &pb.M6{ |
| GetGetFoo: &pb.M6_GetGetGetFoo{GetGetGetFoo: 3}, |
| GetFoo_: makeOpenM0(2), |
| Foo: makeOpenM0(1), |
| } |
| if m6.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m6.GetFoo().GetI1(), m6) |
| } |
| if m6.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m6.GetGetFoo_().GetI1(), m6) |
| } |
| if m6.GetGetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_get_foo' has unexpected value %v for %T (expected 3)", m6.GetGetGetGetFoo(), m6) |
| } |
| |
| m7 := &pb.M7{ |
| GetGetFoo: &pb.M7_GetFoo_{GetFoo_: 3}, |
| Foo: makeOpenM0(1), |
| } |
| if m7.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m7.GetFoo().GetI1(), m7) |
| } |
| if m7.GetGetFoo_() != 3 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m7.GetGetFoo_(), m7) |
| } |
| m7.GetGetFoo = &pb.M7_Bar{Bar: true} |
| if !m7.GetBar() { |
| t.Errorf("Proto field 'bar' has unexpected value %v for %T (expected 3)", m7.GetBar(), m7) |
| } |
| |
| m8 := &pb.M8{ |
| GetGetGetFoo_: &pb.M8_GetGetFoo{GetGetFoo: 3}, |
| GetFoo_: makeOpenM0(2), |
| Foo: makeOpenM0(1), |
| } |
| if m8.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m8.GetFoo().GetI1(), m8) |
| } |
| if m8.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m8.GetGetFoo_().GetI1(), m8) |
| } |
| if m8.GetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m8.GetGetGetFoo(), m8) |
| } |
| |
| m9 := &pb.M9{ |
| GetGetGetFoo_: &pb.M9_GetGetFoo{GetGetFoo: 3}, |
| Foo: makeOpenM0(1), |
| } |
| if m9.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m9.GetFoo(), m9) |
| } |
| if m9.GetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m9.GetGetGetFoo(), m9) |
| } |
| m9.GetGetGetFoo_ = &pb.M9_GetFoo_{GetFoo_: 2} |
| if m9.GetGetFoo_() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m9.GetGetFoo_(), m9) |
| } |
| |
| } |
| |
| // TestHybridMangling3 tests the backwards compatible mangling as well |
| // as new style mangling of fields who clashes with the getters. The |
| // expected behavior, which is somewhat surprising, is documented in |
| // the proto test_name_clash_hybrid.proto itself. |
| func TestHybridMangling3(t *testing.T) { |
| m1 := hpb.M1_builder{ |
| Foo: makeHybridM0(1), |
| GetFoo: makeHybridM0(2), |
| GetGetFoo: makeHybridM0(3), |
| }.Build() |
| if m1.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m1.GetFoo().GetI1(), m1) |
| } |
| if m1.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m1.GetFoo().GetI1(), m1) |
| } |
| if m1.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m1.GetGetFoo_().GetI1(), m1) |
| } |
| if m1.Get_GetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m1.GetGetFoo_().GetI1(), m1) |
| } |
| if m1.GetGetGetFoo().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m1.GetGetGetFoo().GetI1(), m1) |
| } |
| checkNameConsistency(t, m1) |
| m2 := hpb.M2_builder{ |
| Foo: makeHybridM0(1), |
| GetFoo: makeHybridM0(2), |
| GetGetFoo: makeHybridM0(3), |
| }.Build() |
| if m2.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m2.GetFoo().GetI1(), m2) |
| } |
| if m2.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m2.GetFoo().GetI1(), m2) |
| } |
| if m2.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m2.GetGetFoo_().GetI1(), m2) |
| } |
| if m2.Get_GetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m2.GetGetFoo_().GetI1(), m2) |
| } |
| if m2.GetGetGetFoo().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m2.GetGetGetFoo().GetI1(), m2) |
| } |
| checkNameConsistency(t, m2) |
| m3 := hpb.M3_builder{ |
| Foo: makeHybridM0(1), |
| GetFoo: makeHybridM0(2), |
| GetGetFoo: makeHybridM0(3), |
| }.Build() |
| if m3.GetFoo_().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m3.GetFoo_().GetI1(), m3) |
| } |
| if m3.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m3.GetFoo_().GetI1(), m3) |
| } |
| if m3.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m3.GetGetFoo().GetI1(), m3) |
| } |
| if m3.Get_GetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m3.GetGetFoo().GetI1(), m3) |
| } |
| if m3.GetGetGetFoo_().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m3.GetGetGetFoo_().GetI1(), m3) |
| } |
| checkNameConsistency(t, m3) |
| |
| m4 := hpb.M4_builder{ |
| GetFoo: makeHybridM0(2), |
| GetGetGetFoo: proto.Int32(3), |
| Foo: makeHybridM0(1), |
| }.Build() |
| if m4.GetFoo_().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m4.GetFoo_().GetI1(), m4) |
| } |
| if m4.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m4.Get_Foo().GetI1(), m4) |
| } |
| if m4.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m4.GetGetFoo().GetI1(), m4) |
| } |
| if m4.Get_GetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m4.Get_GetFoo().GetI1(), m4) |
| } |
| if m4.GetGetGetFoo_().(*hpb.M4_GetGetGetFoo).GetGetGetFoo != 3 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 3)", m4.GetGetGetFoo_(), m4) |
| } |
| if !m4.HasGetGetFoo() { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected true)", m4.HasGetGetFoo(), m4) |
| } |
| if m4.GetGetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_get_foo' has unexpected value %v for %T (expected 3)", m4.GetGetGetGetFoo(), m4) |
| } |
| checkNameConsistency(t, m4) |
| |
| m5 := hpb.M5_builder{ |
| GetFoo: makeHybridM0(2), |
| GetGetFoo: proto.Int32(3), |
| Foo: makeHybridM0(1), |
| }.Build() |
| if m5.GetFoo_().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m5.GetFoo_().GetI1(), m5) |
| } |
| if m5.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m5.Get_Foo().GetI1(), m4) |
| } |
| if m5.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m5.GetGetFoo().GetI1(), m5) |
| } |
| if m5.Get_GetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m5.Get_GetFoo().GetI1(), m4) |
| } |
| if m5.GetGetGetFoo_() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m5.GetGetGetFoo_(), m5) |
| } |
| if m5.Get_GetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m5.Get_GetGetFoo(), m5) |
| } |
| checkNameConsistency(t, m5) |
| |
| m6 := hpb.M6_builder{ |
| GetGetGetFoo: proto.Int32(3), |
| GetFoo: makeHybridM0(2), |
| Foo: makeHybridM0(1), |
| }.Build() |
| if m6.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m6.GetFoo().GetI1(), m6) |
| } |
| if m6.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m6.Get_Foo().GetI1(), m6) |
| } |
| if m6.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m6.GetGetFoo_().GetI1(), m6) |
| } |
| if m6.Get_GetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m6.Get_GetFoo().GetI1(), m6) |
| } |
| if m6.GetGetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_get_foo' has unexpected value %v for %T (expected 3)", m6.GetGetGetGetFoo(), m6) |
| } |
| checkNameConsistency(t, m6) |
| |
| m7 := hpb.M7_builder{ |
| GetFoo: proto.Int32(3), |
| Foo: makeHybridM0(1), |
| }.Build() |
| if m7.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m7.GetFoo().GetI1(), m7) |
| } |
| if m7.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m7.Get_Foo().GetI1(), m7) |
| } |
| if m7.GetGetFoo_() != 3 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 3)", m7.GetGetFoo_(), m7) |
| } |
| if m7.Get_GetFoo() != 3 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 3)", m7.Get_GetFoo(), m7) |
| } |
| m7.SetBar(true) |
| if !m7.GetBar() { |
| t.Errorf("Proto field 'bar' has unexpected value %v for %T (expected 3)", m7.GetBar(), m7) |
| } |
| checkNameConsistency(t, m7) |
| |
| m8 := hpb.M8_builder{ |
| GetGetFoo: proto.Int32(3), |
| GetFoo: makeHybridM0(2), |
| Foo: makeHybridM0(1), |
| }.Build() |
| if m8.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m8.GetFoo().GetI1(), m8) |
| } |
| if m8.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m8.Get_Foo().GetI1(), m8) |
| } |
| if m8.GetGetFoo_().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m8.GetGetFoo_().GetI1(), m8) |
| } |
| if m8.Get_GetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m8.Get_GetFoo().GetI1(), m8) |
| } |
| if m8.GetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m8.GetGetGetFoo(), m8) |
| } |
| checkNameConsistency(t, m8) |
| |
| m9 := hpb.M9_builder{ |
| GetGetFoo: proto.Int32(3), |
| Foo: makeHybridM0(1), |
| }.Build() |
| if m9.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m9.GetFoo().GetI1(), m9) |
| } |
| if m9.Get_Foo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m9.Get_Foo().GetI1(), m9) |
| } |
| if m9.GetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m9.GetGetGetFoo(), m9) |
| } |
| if m9.Get_GetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m9.Get_GetGetFoo(), m9) |
| } |
| m9.Set_GetFoo(2) |
| if m9.GetGetFoo_() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m9.GetGetFoo_(), m9) |
| } |
| if m9.Get_GetFoo() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m9.Get_GetFoo(), m9) |
| } |
| checkNameConsistency(t, m9) |
| m10 := hpb.M10_builder{ |
| Foo: makeHybridM0(1), |
| SetFoo: makeHybridM0(2), |
| }.Build() |
| m10.Set_Foo(makeHybridM0(47)) |
| if m10.Get_Foo().GetI1() != 47 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 47)", m10.Get_Foo().GetI1(), m10) |
| } |
| m10.SetSetFoo(makeHybridM0(11)) |
| if m10.GetSetFoo().GetI1() != 11 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 11)", m10.GetSetFoo().GetI1(), m10) |
| } |
| checkNameConsistency(t, m10) |
| m11 := hpb.M11_builder{ |
| Foo: makeHybridM0(1), |
| SetSetFoo: proto.Int32(2), |
| }.Build() |
| m11.Set_Foo(makeHybridM0(47)) |
| if m11.Get_Foo().GetI1() != 47 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 47)", m11.Get_Foo().GetI1(), m11) |
| } |
| m11.SetSetSetFoo(11) |
| if m11.GetSetSetFoo() != 11 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 11)", m11.GetSetSetFoo(), m11) |
| } |
| checkNameConsistency(t, m11) |
| m12 := hpb.M12_builder{ |
| Foo: makeHybridM0(1), |
| SetFoo: proto.Int32(2), |
| }.Build() |
| m12.Set_Foo(makeHybridM0(47)) |
| if m12.Get_Foo().GetI1() != 47 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 47)", m12.Get_Foo().GetI1(), m12) |
| } |
| m12.Set_SetFoo(11) |
| if m12.Get_SetFoo() != 11 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 11)", m12.Get_SetFoo(), m12) |
| } |
| checkNameConsistency(t, m12) |
| m13 := hpb.M13_builder{ |
| Foo: makeHybridM0(1), |
| HasFoo: makeHybridM0(2), |
| }.Build() |
| if !m13.Has_Foo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m13.Has_Foo(), m13) |
| } |
| if !m13.HasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m13.HasHasFoo(), m13) |
| } |
| checkNameConsistency(t, m13) |
| m14 := hpb.M14_builder{ |
| Foo: makeHybridM0(1), |
| HasHasFoo: proto.Int32(2), |
| }.Build() |
| if !m14.Has_Foo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m14.Has_Foo(), m14) |
| } |
| if !m14.Has_HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m14.Has_HasFoo(), m14) |
| } |
| if !m14.HasHasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m14.HasHasHasFoo(), m14) |
| } |
| checkNameConsistency(t, m14) |
| m15 := hpb.M15_builder{ |
| Foo: makeHybridM0(1), |
| HasFoo: proto.Int32(2), |
| }.Build() |
| if !m15.Has_Foo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m15.Has_Foo(), m15) |
| } |
| if !m15.Has_HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m15.Has_HasFoo(), m15) |
| } |
| if !m15.HasHasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m15.HasHasHasFoo(), m15) |
| } |
| checkNameConsistency(t, m15) |
| m16 := hpb.M16_builder{ |
| Foo: makeHybridM0(1), |
| ClearFoo: makeHybridM0(2), |
| }.Build() |
| m16.Clear_Foo() |
| if m16.Has_Foo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m16.Has_Foo(), m16) |
| } |
| m16.ClearClearFoo() |
| if m16.HasClearFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m16.HasClearFoo(), m16) |
| } |
| checkNameConsistency(t, m16) |
| m17 := hpb.M17_builder{ |
| Foo: makeHybridM0(1), |
| ClearClearFoo: proto.Int32(2), |
| }.Build() |
| m17.Clear_Foo() |
| if m17.Has_Foo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m17.Has_Foo(), m17) |
| } |
| m17.ClearClearClearFoo() |
| if m17.HasClearClearFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m17.HasClearClearFoo(), m17) |
| } |
| checkNameConsistency(t, m17) |
| m18 := hpb.M18_builder{ |
| Foo: makeHybridM0(1), |
| ClearFoo: proto.Int32(2), |
| }.Build() |
| m18.Clear_Foo() |
| if m18.Has_Foo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m18.Has_Foo(), m18) |
| } |
| m18.Clear_ClearFoo() |
| if m18.Has_ClearFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m18.Has_ClearFoo(), m18) |
| } |
| checkNameConsistency(t, m18) |
| m19 := hpb.M19_builder{ |
| Foo: makeHybridM0(1), |
| WhichFoo: proto.Int32(2), |
| }.Build() |
| if m19.WhichWhichWhichFoo() != hpb.M19_WhichFoo_case { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected M19_ClearFoo_case)", m19.WhichWhichWhichFoo(), m19) |
| } |
| checkNameConsistency(t, m19) |
| m20 := hpb.M20_builder{ |
| Foo: makeHybridM0(1), |
| WhichWhichFoo: proto.Int32(2), |
| }.Build() |
| if m20.Which_WhichFoo() != hpb.M20_WhichWhichFoo_case { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected M20_WhichWhichFoo_case)", m20.Which_WhichFoo(), m20) |
| } |
| checkNameConsistency(t, m20) |
| |
| } |
| |
| // TestOpaqueMangling3 tests the backwards compatible mangling as well |
| // as new style mangling of fields who clashes with the getters. The |
| // expected behavior, which is somewhat surprising, is documented in |
| // the proto test_name_clash_opaque.proto itself. |
| func TestOpaqueMangling3(t *testing.T) { |
| m1 := opb.M1_builder{ |
| Foo: makeOpaqueM0(1), |
| GetFoo: makeOpaqueM0(2), |
| GetGetFoo: makeOpaqueM0(3), |
| }.Build() |
| if m1.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m1.GetFoo().GetI1(), m1) |
| } |
| if m1.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m1.GetGetFoo().GetI1(), m1) |
| } |
| if m1.GetGetGetFoo().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m1.GetGetGetFoo().GetI1(), m1) |
| } |
| checkNameConsistency(t, m1) |
| m2 := opb.M2_builder{ |
| Foo: makeOpaqueM0(1), |
| GetFoo: makeOpaqueM0(2), |
| GetGetFoo: makeOpaqueM0(3), |
| }.Build() |
| if m2.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m2.GetFoo().GetI1(), m2) |
| } |
| if m2.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m2.GetGetFoo().GetI1(), m2) |
| } |
| if m2.GetGetGetFoo().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m2.GetGetGetFoo().GetI1(), m2) |
| } |
| checkNameConsistency(t, m2) |
| m3 := opb.M3_builder{ |
| Foo: makeOpaqueM0(1), |
| GetFoo: makeOpaqueM0(2), |
| GetGetFoo: makeOpaqueM0(3), |
| }.Build() |
| if m3.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m3.GetFoo().GetI1(), m3) |
| } |
| if m3.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m3.GetGetFoo().GetI1(), m3) |
| } |
| if m3.GetGetGetFoo().GetI1() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m3.GetGetGetFoo().GetI1(), m3) |
| } |
| checkNameConsistency(t, m3) |
| |
| m4 := opb.M4_builder{ |
| GetFoo: makeOpaqueM0(2), |
| GetGetGetFoo: proto.Int32(3), |
| Foo: makeOpaqueM0(1), |
| }.Build() |
| if m4.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m4.GetFoo().GetI1(), m4) |
| } |
| if m4.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m4.GetGetFoo().GetI1(), m4) |
| } |
| if !m4.HasGetGetFoo() { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected true)", m4.HasGetGetFoo(), m4) |
| } |
| if m4.GetGetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_get_foo' has unexpected value %v for %T (expected 3)", m4.GetGetGetGetFoo(), m4) |
| } |
| checkNameConsistency(t, m4) |
| |
| m5 := opb.M5_builder{ |
| GetFoo: makeOpaqueM0(2), |
| GetGetFoo: proto.Int32(3), |
| Foo: makeOpaqueM0(1), |
| }.Build() |
| if m5.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m5.GetFoo().GetI1(), m5) |
| } |
| if m5.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m5.GetGetFoo().GetI1(), m5) |
| } |
| if m5.GetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m5.GetGetGetFoo(), m5) |
| } |
| checkNameConsistency(t, m5) |
| |
| m6 := opb.M6_builder{ |
| GetGetGetFoo: proto.Int32(3), |
| GetFoo: makeOpaqueM0(2), |
| Foo: makeOpaqueM0(1), |
| }.Build() |
| if m6.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m6.GetFoo().GetI1(), m6) |
| } |
| if m6.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m6.GetGetFoo().GetI1(), m6) |
| } |
| if m6.GetGetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_get_foo' has unexpected value %v for %T (expected 3)", m6.GetGetGetGetFoo(), m6) |
| } |
| checkNameConsistency(t, m6) |
| |
| m7 := opb.M7_builder{ |
| GetFoo: proto.Int32(3), |
| Foo: makeOpaqueM0(1), |
| }.Build() |
| if m7.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m7.GetFoo().GetI1(), m7) |
| } |
| if m7.GetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 3)", m7.GetGetFoo(), m7) |
| } |
| m7.SetBar(true) |
| if !m7.GetBar() { |
| t.Errorf("Proto field 'bar' has unexpected value %v for %T (expected true)", m7.GetBar(), m7) |
| } |
| checkNameConsistency(t, m7) |
| |
| m8 := opb.M8_builder{ |
| GetGetFoo: proto.Int32(3), |
| GetFoo: makeOpaqueM0(2), |
| Foo: makeOpaqueM0(1), |
| }.Build() |
| if m8.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m8.GetFoo().GetI1(), m8) |
| } |
| if m8.GetGetFoo().GetI1() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m8.GetGetFoo().GetI1(), m8) |
| } |
| if m8.GetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m8.GetGetGetFoo(), m8) |
| } |
| checkNameConsistency(t, m8) |
| |
| m9 := opb.M9_builder{ |
| GetGetFoo: proto.Int32(3), |
| Foo: makeOpaqueM0(1), |
| }.Build() |
| if m9.GetFoo().GetI1() != 1 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 1)", m9.GetFoo().GetI1(), m9) |
| } |
| if m9.GetGetGetFoo() != 3 { |
| t.Errorf("Proto field 'get_get_foo' has unexpected value %v for %T (expected 3)", m9.GetGetGetFoo(), m9) |
| } |
| m9.SetGetFoo(2) |
| if m9.GetGetFoo() != 2 { |
| t.Errorf("Proto field 'get_foo' has unexpected value %v for %T (expected 2)", m9.GetGetFoo(), m9) |
| } |
| checkNameConsistency(t, m9) |
| m10 := opb.M10_builder{ |
| Foo: makeOpaqueM0(1), |
| SetFoo: makeOpaqueM0(2), |
| }.Build() |
| m10.SetFoo(makeOpaqueM0(48)) |
| if m10.GetFoo().GetI1() != 48 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 48)", m10.GetFoo().GetI1(), m10) |
| } |
| m10.SetSetFoo(makeOpaqueM0(11)) |
| if m10.GetSetFoo().GetI1() != 11 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 11)", m10.GetSetFoo().GetI1(), m10) |
| } |
| checkNameConsistency(t, m10) |
| m11 := opb.M11_builder{ |
| Foo: makeOpaqueM0(1), |
| SetSetFoo: proto.Int32(2), |
| }.Build() |
| m11.SetFoo(makeOpaqueM0(48)) |
| if m11.GetFoo().GetI1() != 48 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 48)", m11.GetFoo().GetI1(), m11) |
| } |
| m11.SetSetSetFoo(11) |
| if m11.GetSetSetFoo() != 11 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 11)", m11.GetSetSetFoo(), m11) |
| } |
| checkNameConsistency(t, m11) |
| m12 := opb.M12_builder{ |
| Foo: makeOpaqueM0(1), |
| SetFoo: proto.Int32(2), |
| }.Build() |
| m12.SetFoo(makeOpaqueM0(48)) |
| if m12.GetFoo().GetI1() != 48 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 48)", m12.GetFoo().GetI1(), m12) |
| } |
| m12.SetSetFoo(12) |
| if m12.GetSetFoo() != 12 { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected 12)", m12.GetSetFoo(), m12) |
| } |
| checkNameConsistency(t, m12) |
| m13 := opb.M13_builder{ |
| Foo: makeOpaqueM0(1), |
| HasFoo: makeOpaqueM0(2), |
| }.Build() |
| if !m13.HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m13.HasFoo(), m13) |
| } |
| if !m13.HasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m13.HasHasFoo(), m13) |
| } |
| checkNameConsistency(t, m13) |
| m14 := opb.M14_builder{ |
| Foo: makeOpaqueM0(1), |
| HasHasFoo: proto.Int32(2), |
| }.Build() |
| if !m14.HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m14.HasFoo(), m14) |
| } |
| if !m14.HasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m14.HasHasFoo(), m14) |
| } |
| if !m14.HasHasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m14.HasHasHasFoo(), m14) |
| } |
| checkNameConsistency(t, m14) |
| m15 := opb.M15_builder{ |
| Foo: makeOpaqueM0(1), |
| HasFoo: proto.Int32(2), |
| }.Build() |
| if !m15.HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m15.HasFoo(), m15) |
| } |
| if !m15.HasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m15.HasHasFoo(), m15) |
| } |
| if !m15.HasHasHasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected true)", m15.HasHasHasFoo(), m15) |
| } |
| checkNameConsistency(t, m15) |
| m16 := opb.M16_builder{ |
| Foo: makeOpaqueM0(1), |
| ClearFoo: makeOpaqueM0(2), |
| }.Build() |
| m16.SetFoo(makeOpaqueM0(4711)) |
| m16.ClearFoo() |
| if m16.HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m16.HasFoo(), m16) |
| } |
| m16.ClearClearFoo() |
| if m16.HasClearFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m16.HasClearFoo(), m16) |
| } |
| checkNameConsistency(t, m16) |
| m17 := opb.M17_builder{ |
| Foo: makeOpaqueM0(1), |
| ClearClearFoo: proto.Int32(2), |
| }.Build() |
| m17.SetFoo(makeOpaqueM0(4711)) |
| m17.ClearFoo() |
| if m17.HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m17.HasFoo(), m17) |
| } |
| m17.ClearClearClearFoo() |
| if m17.HasClearClearFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m17.HasClearClearFoo(), m17) |
| } |
| checkNameConsistency(t, m17) |
| m18 := opb.M18_builder{ |
| Foo: makeOpaqueM0(1), |
| ClearFoo: proto.Int32(2), |
| }.Build() |
| m18.SetFoo(makeOpaqueM0(4711)) |
| m18.ClearFoo() |
| if m18.HasFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m18.HasFoo(), m18) |
| } |
| m18.SetClearFoo(13) |
| m18.ClearClearFoo() |
| if m18.HasClearFoo() { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected false)", m18.HasClearFoo(), m18) |
| } |
| checkNameConsistency(t, m18) |
| m19 := opb.M19_builder{ |
| Foo: makeOpaqueM0(1), |
| WhichFoo: proto.Int32(2), |
| }.Build() |
| if m19.WhichWhichWhichFoo() != opb.M19_WhichFoo_case { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected M19_ClearFoo_case)", m19.WhichWhichWhichFoo(), m19) |
| } |
| checkNameConsistency(t, m19) |
| m20 := opb.M20_builder{ |
| Foo: makeOpaqueM0(1), |
| WhichWhichFoo: proto.Int32(2), |
| }.Build() |
| if m20.WhichWhichFoo() != opb.M20_WhichWhichFoo_case { |
| t.Errorf("Proto field 'foo' has unexpected value %v for %T (expected M20_WhichWhichFoo_case)", m20.WhichWhichFoo(), m20) |
| } |
| checkNameConsistency(t, m20) |
| |
| } |
| |
| func makeOpenM0(x int32) *pb.M0 { |
| return &pb.M0{ |
| I1: x, |
| } |
| } |
| |
| func makeHybridM0(x int32) *hpb.M0 { |
| return hpb.M0_builder{ |
| I1: x, |
| }.Build() |
| } |
| |
| func makeOpaqueM0(x int32) *opb.M0 { |
| return opb.M0_builder{ |
| I1: x, |
| }.Build() |
| } |