Esempio n. 1
0
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))
		}
	}
}
Esempio n. 2
0
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)
		}
	}
}
Esempio n. 3
0
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}}))
	}
}
Esempio n. 4
0
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)
	}
}