func TestExtract_EmbedCollide(t *testing.T) { _, seg, err := capnp.NewMessage(capnp.SingleSegment(nil)) if err != nil { t.Fatalf("NewMessage: %v", err) } v1, err := air.NewRootVerOneData(seg) if err != nil { t.Fatalf("NewRootVerOneData: %v", err) } v1.SetVal(123) tests := []struct { name string want interface{} }{ {"top", &VerOneDataTop{Val: 123}}, {"no tags", &VerOneDataNoTags{}}, {"1 tag", &VerOneData1Tag{VerValTag1: VerValTag1{123}}}, {"1 tag with untagged", &VerOneData1TagWithUntagged{VerValTag1: VerValTag1{123}}}, {"2 tags", &VerOneData2Tags{}}, {"3 tags", &VerOneData3Tags{}}, {"top with lower collision", &VerOneDataTopWithLowerCollision{Val: 123}}, } for _, test := range tests { out := reflect.New(reflect.TypeOf(test.want).Elem()).Interface() if err := Extract(out, air.VerOneData_TypeID, v1.Struct); err != nil { t.Errorf("%s: Extract error: %v", test.name, err) } if !reflect.DeepEqual(out, test.want) { t.Errorf("%s: Extract produced %s; want %s", test.name, zpretty.Sprint(out), zpretty.Sprint(test.want)) } } }
func TestInsert_EmbedCollide(t *testing.T) { tests := []struct { name string in interface{} val int16 }{ {"top", &VerOneDataTop{Val: 123, VerVal: VerVal{456}}, 123}, {"no tags", &VerOneDataNoTags{VerVal: VerVal{123}, VerValNoTag: VerValNoTag{456}}, 0}, {"1 tag", &VerOneData1Tag{VerVal: VerVal{123}, VerValTag1: VerValTag1{456}}, 456}, { "1 tag with untagged", &VerOneData1TagWithUntagged{ VerVal: VerVal{123}, VerValTag1: VerValTag1{456}, VerValNoTag: VerValNoTag{789}, }, 456, }, {"2 tags", &VerOneData2Tags{VerValTag1: VerValTag1{123}, VerValTag2: VerValTag2{456}}, 0}, {"3 tags", &VerOneData3Tags{VerValTag1: VerValTag1{123}, VerValTag2: VerValTag2{456}, VerValTag3: VerValTag3{789}}, 0}, { "top with lower collision", &VerOneDataTopWithLowerCollision{ Val: 123, VerVal: VerVal{456}, VerValNoTag: VerValNoTag{789}, }, 123, }, } for _, test := range tests { _, seg, err := capnp.NewMessage(capnp.SingleSegment(nil)) if err != nil { t.Errorf("%s: NewMessage: %v", test.name, err) continue } v1, err := air.NewRootVerOneData(seg) if err != nil { t.Errorf("%s: NewRootVerOneData: %v", test.name, err) continue } err = Insert(air.VerOneData_TypeID, v1.Struct, test.in) if err != nil { t.Errorf("%s: Insert(..., %s): %v", test.name, zpretty.Sprint(test.in), err) } if v1.Val() != test.val { t.Errorf("%s: Insert(..., %s) produced %v; want (val = %d)", test.name, zpretty.Sprint(test.in), v1, test.val) } } }
func TestExtract_Embed(t *testing.T) { _, seg, err := capnp.NewMessage(capnp.SingleSegment(nil)) if err != nil { t.Fatalf("NewMessage: %v", err) } v1, err := air.NewRootVerOneData(seg) if err != nil { t.Fatalf("NewRootVerOneData: %v", err) } v1.SetVal(123) out := new(VerOneData) if err := Extract(out, air.VerOneData_TypeID, v1.Struct); err != nil { t.Errorf("Extract error: %v", err) } if out.Val != 123 { t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&VerOneData{VerVal{123}})) } }
func TestInsert_Embed(t *testing.T) { _, seg, err := capnp.NewMessage(capnp.SingleSegment(nil)) if err != nil { t.Fatalf("NewMessage: %v", err) } v1, err := air.NewRootVerOneData(seg) if err != nil { t.Fatalf("NewRootVerOneData: %v", err) } gv1 := &VerOneData{VerVal{123}} err = Insert(air.VerOneData_TypeID, v1.Struct, gv1) if err != nil { t.Errorf("Insert(%s) error: %v", zpretty.Sprint(gv1), err) } if v1.Val() != 123 { t.Errorf("Insert(%s) produced %v", zpretty.Sprint(gv1), v1) } }