update proto library prior to avoid New* methods.
diffs generated automatically from Google-internal copy.
all tests pass
R=rsc, dsymonds1
CC=dsymonds
http://codereview.appspot.com/1908042
diff --git a/proto/all_test.go b/proto/all_test.go
index 10e2297..39abc77 100644
--- a/proto/all_test.go
+++ b/proto/all_test.go
@@ -68,7 +68,7 @@
}
func initGoTestField() *GoTestField {
- f := NewGoTestField()
+ f := new(GoTestField)
f.Label = String("label")
f.Type = String("type")
return f
@@ -78,25 +78,25 @@
// (It's remarkable that required, optional, and repeated all have
// 8 letters.)
func initGoTest_RequiredGroup() *GoTest_RequiredGroup {
- f := NewGoTest_RequiredGroup()
- f.RequiredField = String("required")
- return f
+ return &GoTest_RequiredGroup{
+ RequiredField: String("required"),
+ }
}
func initGoTest_OptionalGroup() *GoTest_OptionalGroup {
- f := NewGoTest_OptionalGroup()
- f.RequiredField = String("optional")
- return f
+ return &GoTest_OptionalGroup{
+ RequiredField: String("optional"),
+ }
}
func initGoTest_RepeatedGroup() *GoTest_RepeatedGroup {
- f := NewGoTest_RepeatedGroup()
- f.RequiredField = String("repeated")
- return f
+ return &GoTest_RepeatedGroup{
+ RequiredField: String("repeated"),
+ }
}
func initGoTest(setdefaults bool) *GoTest {
- pb := NewGoTest()
+ pb := new(GoTest)
if setdefaults {
pb.F_BoolDefaulted = Bool(Default_GoTest_F_BoolDefaulted)
pb.F_Int32Defaulted = Int32(Default_GoTest_F_Int32Defaulted)
@@ -302,7 +302,7 @@
}
// Now test Unmarshal by recreating the original buffer.
- pbd := NewGoTest()
+ pbd := new(GoTest)
err = o.Unmarshal(pbd)
if err != nil {
t.Fatalf("overify unmarshal err = %v", err)
@@ -426,7 +426,7 @@
// Do we catch the "required bit not set" case?
func TestRequiredBit(t *testing.T) {
o := old()
- pb := NewGoTest()
+ pb := new(GoTest)
if o.Marshal(pb) != ErrRequiredNotSet {
t.Errorf("did not catch missing required fields")
}
@@ -781,24 +781,25 @@
o.Marshal(pb)
// Now new a GoSkipTest record.
- skipgroup := NewGoSkipTest_SkipGroup()
- skipgroup.GroupInt32 = Int32(75)
- skipgroup.GroupString = String("wxyz")
- skip := NewGoSkipTest()
- skip.SkipInt32 = Int32(32)
- skip.SkipFixed32 = Uint32(3232)
- skip.SkipFixed64 = Uint64(6464)
- skip.SkipString = String("skipper")
- skip.Skipgroup = skipgroup
+ skip := &GoSkipTest{
+ SkipInt32: Int32(32),
+ SkipFixed32: Uint32(3232),
+ SkipFixed64: Uint64(6464),
+ SkipString: String("skipper"),
+ Skipgroup: &GoSkipTest_SkipGroup{
+ GroupInt32: Int32(75),
+ GroupString: String("wxyz"),
+ },
+ }
// Marshal it into same buffer.
o.Marshal(skip)
- pbd := NewGoTestField()
+ pbd := new(GoTestField)
o.Unmarshal(pbd)
// The __unrecognized field should be a marshaling of GoSkipTest
- skipd := NewGoSkipTest()
+ skipd := new(GoSkipTest)
o.SetBuf(pbd.XXX_unrecognized)
o.Unmarshal(skipd)
@@ -876,7 +877,7 @@
buf, _ := Marshal(pb)
// Now test Unmarshal by recreating the original buffer.
- pbd := NewGoTest()
+ pbd := new(GoTest)
Unmarshal(buf, pbd)
// Check the checkable values
@@ -961,13 +962,16 @@
}
func TestProto1RepeatedGroup(t *testing.T) {
- pb := NewMessageList()
-
- pb.Message = make([]*MessageList_Message, 2)
- pb.Message[0] = NewMessageList_Message()
- pb.Message[0].Name = String("blah")
- pb.Message[0].Count = Int32(7)
- // NOTE: pb.Message[1] is a nil
+ pb := &MessageList{
+ Message: []*MessageList_Message{
+ &MessageList_Message{
+ Name: String("blah"),
+ Count: Int32(7),
+ },
+ // NOTE: pb.Message[1] is a nil
+ nil,
+ },
+ }
o := old()
if err := o.Marshal(pb); err != ErrRepeatedHasNil {
@@ -995,6 +999,24 @@
}
}
+// Verify that absent required fields cause Marshal/Unmarshal to return errors.
+func TestRequiredFieldEnforcement(t *testing.T) {
+ pb := new(GoTestField)
+ _, err := Marshal(pb)
+ if err == nil || err != ErrRequiredNotSet {
+ t.Errorf("marshal: expected %q, got %q", ErrRequiredNotSet, err)
+ }
+
+ // A slightly sneaky, yet valid, proto. It encodes the same required field twice,
+ // so simply counting the required fields is insufficient.
+ // field 1, encoding 2, value "hi"
+ buf := []byte("\x0A\x02hi\x0A\x02hi")
+ err = Unmarshal(buf, pb)
+ if err == nil || err != ErrRequiredNotSet {
+ t.Errorf("unmarshal: expected %q, got %q", ErrRequiredNotSet, err)
+ }
+}
+
func BenchmarkMarshal(b *testing.B) {
b.StopTimer()
@@ -1030,7 +1052,7 @@
for i := 0; i < N; i++ {
pb.F_Int32Repeated[i] = int32(i)
}
- pbd := NewGoTest()
+ pbd := new(GoTest)
p := NewBuffer(nil)
p.Marshal(pb)
p2 := NewBuffer(nil)