mirror of
https://github.com/cloudflare/cloudflared.git
synced 2025-07-27 23:59:57 +00:00
TUN-813: Clean up cloudflared dependencies
This commit is contained in:
77
vendor/zombiezen.com/go/capnproto2/pogs/bench_test.go
generated
vendored
77
vendor/zombiezen.com/go/capnproto2/pogs/bench_test.go
generated
vendored
@@ -1,77 +0,0 @@
|
||||
package pogs
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"math/rand"
|
||||
"testing"
|
||||
|
||||
"zombiezen.com/go/capnproto2"
|
||||
air "zombiezen.com/go/capnproto2/internal/aircraftlib"
|
||||
)
|
||||
|
||||
type A struct {
|
||||
Name string
|
||||
BirthDay int64
|
||||
Phone string
|
||||
Siblings int32
|
||||
Spouse bool
|
||||
Money float64
|
||||
}
|
||||
|
||||
func generateA(r *rand.Rand) *A {
|
||||
return &A{
|
||||
Name: randString(r, 16),
|
||||
BirthDay: r.Int63(),
|
||||
Phone: randString(r, 10),
|
||||
Siblings: r.Int31n(5),
|
||||
Spouse: r.Intn(2) == 1,
|
||||
Money: r.Float64(),
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkExtract(b *testing.B) {
|
||||
r := rand.New(rand.NewSource(12345))
|
||||
data := make([][]byte, 1000)
|
||||
for i := range data {
|
||||
a := generateA(r)
|
||||
msg, seg, _ := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
root, _ := air.NewRootBenchmarkA(seg)
|
||||
Insert(air.BenchmarkA_TypeID, root.Struct, a)
|
||||
data[i], _ = msg.Marshal()
|
||||
}
|
||||
b.ReportAllocs()
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
msg, _ := capnp.Unmarshal(data[r.Intn(len(data))])
|
||||
root, _ := msg.RootPtr()
|
||||
var a A
|
||||
Extract(&a, air.BenchmarkA_TypeID, root.Struct())
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkInsert(b *testing.B) {
|
||||
r := rand.New(rand.NewSource(12345))
|
||||
data := make([]*A, 1000)
|
||||
for i := range data {
|
||||
data[i] = generateA(r)
|
||||
}
|
||||
arena := make([]byte, 0, 512)
|
||||
b.ReportAllocs()
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
a := data[r.Intn(len(data))]
|
||||
msg, seg, _ := capnp.NewMessage(capnp.SingleSegment(arena[:0]))
|
||||
root, _ := air.NewRootBenchmarkA(seg)
|
||||
Insert(air.BenchmarkA_TypeID, root.Struct, a)
|
||||
msg.Marshal()
|
||||
}
|
||||
}
|
||||
|
||||
func randString(r *rand.Rand, n int) string {
|
||||
b := make([]byte, (n+1)/2)
|
||||
// Go 1.6 adds a Rand.Read method, but since we want to be compatible with Go 1.4...
|
||||
for i := range b {
|
||||
b[i] = byte(r.Intn(255))
|
||||
}
|
||||
return hex.EncodeToString(b)[:n]
|
||||
}
|
360
vendor/zombiezen.com/go/capnproto2/pogs/embed_test.go
generated
vendored
360
vendor/zombiezen.com/go/capnproto2/pogs/embed_test.go
generated
vendored
@@ -1,360 +0,0 @@
|
||||
package pogs
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"zombiezen.com/go/capnproto2"
|
||||
air "zombiezen.com/go/capnproto2/internal/aircraftlib"
|
||||
)
|
||||
|
||||
type VerVal struct {
|
||||
Val int16
|
||||
}
|
||||
|
||||
type VerOneData struct {
|
||||
VerVal
|
||||
}
|
||||
|
||||
type VerTwoData struct {
|
||||
*VerVal
|
||||
Duo int64
|
||||
}
|
||||
|
||||
type F16 struct {
|
||||
PlaneBase `capnp:"base"`
|
||||
}
|
||||
|
||||
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 TestExtract_EmbedPtr(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
t.Fatalf("NewMessage: %v", err)
|
||||
}
|
||||
v2, err := air.NewRootVerTwoData(seg)
|
||||
if err != nil {
|
||||
t.Fatalf("NewRootVerTwoData: %v", err)
|
||||
}
|
||||
v2.SetVal(123)
|
||||
v2.SetDuo(456)
|
||||
out := new(VerTwoData)
|
||||
if err := Extract(out, air.VerTwoData_TypeID, v2.Struct); err != nil {
|
||||
t.Errorf("Extract error: %v", err)
|
||||
}
|
||||
if out.VerVal == nil || out.Val != 123 || out.Duo != 456 {
|
||||
t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&VerTwoData{&VerVal{123}, 456}))
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtract_EmbedOmit(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
t.Fatalf("NewMessage: %v", err)
|
||||
}
|
||||
v2, err := air.NewRootVerTwoData(seg)
|
||||
if err != nil {
|
||||
t.Fatalf("NewRootVerTwoData: %v", err)
|
||||
}
|
||||
v2.SetVal(123)
|
||||
v2.SetDuo(456)
|
||||
out := new(VerTwoDataOmit)
|
||||
if err := Extract(out, air.VerTwoData_TypeID, v2.Struct); err != nil {
|
||||
t.Errorf("Extract error: %v", err)
|
||||
}
|
||||
if out.Val != 0 || out.Duo != 456 {
|
||||
t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&VerTwoDataOmit{VerVal{}, 456}))
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtract_EmbedName(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
t.Fatalf("NewMessage: %v", err)
|
||||
}
|
||||
f16, err := air.NewRootF16(seg)
|
||||
if err != nil {
|
||||
t.Fatalf("NewRootF16: %v", err)
|
||||
}
|
||||
base, err := f16.NewBase()
|
||||
if err != nil {
|
||||
t.Fatalf("F16.NewBase: %v", err)
|
||||
}
|
||||
if err := base.SetName("ALL YOUR BASE"); err != nil {
|
||||
t.Fatalf("Planebase.SetName: %v", err)
|
||||
}
|
||||
base.SetRating(5)
|
||||
base.SetCanFly(true)
|
||||
|
||||
out := new(F16)
|
||||
if err := Extract(out, air.F16_TypeID, f16.Struct); err != nil {
|
||||
t.Errorf("Extract error: %v", err)
|
||||
}
|
||||
if out.Name != "ALL YOUR BASE" || out.Rating != 5 || !out.CanFly {
|
||||
t.Errorf("Extract produced %s; want %s", zpretty.Sprint(out), zpretty.Sprint(&F16{PlaneBase{Name: "ALL YOUR BASE", Rating: 5, CanFly: true}}))
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInsert_EmbedPtr(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
t.Fatalf("NewMessage: %v", err)
|
||||
}
|
||||
v2, err := air.NewRootVerTwoData(seg)
|
||||
if err != nil {
|
||||
t.Fatalf("NewRootVerTwoData: %v", err)
|
||||
}
|
||||
gv2 := &VerTwoData{&VerVal{123}, 456}
|
||||
err = Insert(air.VerTwoData_TypeID, v2.Struct, gv2)
|
||||
if err != nil {
|
||||
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(gv2), err)
|
||||
}
|
||||
if v2.Val() != 123 || v2.Duo() != 456 {
|
||||
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(gv2), v2)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInsert_EmbedNilPtr(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
t.Fatalf("NewMessage: %v", err)
|
||||
}
|
||||
v2, err := air.NewRootVerTwoData(seg)
|
||||
if err != nil {
|
||||
t.Fatalf("NewRootVerTwoData: %v", err)
|
||||
}
|
||||
gv2 := &VerTwoData{nil, 456}
|
||||
err = Insert(air.VerTwoData_TypeID, v2.Struct, gv2)
|
||||
if err != nil {
|
||||
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(gv2), err)
|
||||
}
|
||||
if v2.Val() != 0 || v2.Duo() != 456 {
|
||||
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(gv2), v2)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInsert_EmbedOmit(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
t.Fatalf("NewMessage: %v", err)
|
||||
}
|
||||
v2, err := air.NewRootVerTwoData(seg)
|
||||
if err != nil {
|
||||
t.Fatalf("NewRootVerTwoData: %v", err)
|
||||
}
|
||||
in := &VerTwoDataOmit{VerVal{123}, 456}
|
||||
err = Insert(air.VerTwoData_TypeID, v2.Struct, in)
|
||||
if err != nil {
|
||||
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(in), err)
|
||||
}
|
||||
if v2.Val() != 0 || v2.Duo() != 456 {
|
||||
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(in), v2)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInsert_EmbedNamed(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
t.Fatalf("NewMessage: %v", err)
|
||||
}
|
||||
f16, err := air.NewRootF16(seg)
|
||||
if err != nil {
|
||||
t.Fatalf("NewRootF16: %v", err)
|
||||
}
|
||||
in := &F16{PlaneBase{Name: "ALL YOUR BASE", Rating: 5, CanFly: true}}
|
||||
err = Insert(air.F16_TypeID, f16.Struct, in)
|
||||
if err != nil {
|
||||
t.Errorf("Insert(%s) error: %v", zpretty.Sprint(in), err)
|
||||
}
|
||||
base, err := f16.Base()
|
||||
if err != nil {
|
||||
t.Errorf("f16.base: %v", err)
|
||||
}
|
||||
name, err := base.Name()
|
||||
if err != nil {
|
||||
t.Errorf("f16.base.name: %v", err)
|
||||
}
|
||||
if name != "ALL YOUR BASE" || base.Rating() != 5 || !base.CanFly() {
|
||||
t.Errorf("Insert(%s) produced %v", zpretty.Sprint(in), f16)
|
||||
}
|
||||
}
|
||||
|
||||
type VerValNoTag struct {
|
||||
Val int16
|
||||
}
|
||||
|
||||
type VerValTag1 struct {
|
||||
Val int16 `capnp:"val"`
|
||||
}
|
||||
|
||||
type VerValTag2 struct {
|
||||
Val int16 `capnp:"val"`
|
||||
}
|
||||
|
||||
type VerValTag3 struct {
|
||||
Val int16 `capnp:"val"`
|
||||
}
|
||||
|
||||
type VerTwoDataOmit struct {
|
||||
VerVal `capnp:"-"`
|
||||
Duo int64
|
||||
}
|
||||
|
||||
type VerOneDataTop struct {
|
||||
Val int16
|
||||
VerVal
|
||||
}
|
||||
|
||||
type VerOneDataTopWithLowerCollision struct {
|
||||
Val int16
|
||||
VerVal
|
||||
VerValNoTag
|
||||
}
|
||||
|
||||
type VerOneDataNoTags struct {
|
||||
VerVal
|
||||
VerValNoTag
|
||||
}
|
||||
|
||||
type VerOneData1Tag struct {
|
||||
VerVal
|
||||
VerValTag1
|
||||
}
|
||||
|
||||
type VerOneData1TagWithUntagged struct {
|
||||
VerVal
|
||||
VerValTag1
|
||||
VerValNoTag
|
||||
}
|
||||
|
||||
type VerOneData2Tags struct {
|
||||
VerValTag1
|
||||
VerValTag2
|
||||
}
|
||||
|
||||
type VerOneData3Tags struct {
|
||||
VerValTag1
|
||||
VerValTag2
|
||||
VerValTag3
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
87
vendor/zombiezen.com/go/capnproto2/pogs/example_test.go
generated
vendored
87
vendor/zombiezen.com/go/capnproto2/pogs/example_test.go
generated
vendored
@@ -1,87 +0,0 @@
|
||||
package pogs_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"zombiezen.com/go/capnproto2"
|
||||
"zombiezen.com/go/capnproto2/internal/demo/books"
|
||||
"zombiezen.com/go/capnproto2/pogs"
|
||||
)
|
||||
|
||||
var bookData = []byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||
0xa0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
|
||||
0x57, 0x61, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20,
|
||||
0x50, 0x65, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func ExampleExtract() {
|
||||
// books.capnp:
|
||||
// struct Book {
|
||||
// title @0 :Text;
|
||||
// pageCount @1 :Int32;
|
||||
// }
|
||||
|
||||
type Book struct {
|
||||
Title string
|
||||
PageCount int32
|
||||
}
|
||||
|
||||
// Read the message from bytes.
|
||||
msg, err := capnp.Unmarshal(bookData)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
root, err := msg.RootPtr()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Extract the book from the root struct.
|
||||
b := new(Book)
|
||||
if err := pogs.Extract(b, books.Book_TypeID, root.Struct()); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("%q has %d pages\n", b.Title, b.PageCount)
|
||||
|
||||
// Output:
|
||||
// "War and Peace" has 1440 pages
|
||||
}
|
||||
|
||||
func ExampleInsert() {
|
||||
// books.capnp:
|
||||
// struct Book {
|
||||
// title @0 :Text;
|
||||
// pageCount @1 :Int32;
|
||||
// }
|
||||
|
||||
type Book struct {
|
||||
Title string
|
||||
PageCount int32
|
||||
}
|
||||
|
||||
// Allocate a new Cap'n Proto Book struct.
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
root, err := books.NewRootBook(seg)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Insert the book struct into the Cap'n Proto struct.
|
||||
b := &Book{
|
||||
Title: "War and Peace",
|
||||
PageCount: 1440,
|
||||
}
|
||||
if err := pogs.Insert(books.Book_TypeID, root.Struct, b); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println(root)
|
||||
|
||||
// Output:
|
||||
// (title = "War and Peace", pageCount = 1440)
|
||||
}
|
172
vendor/zombiezen.com/go/capnproto2/pogs/interface_test.go
generated
vendored
172
vendor/zombiezen.com/go/capnproto2/pogs/interface_test.go
generated
vendored
@@ -1,172 +0,0 @@
|
||||
package pogs
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"golang.org/x/net/context"
|
||||
"zombiezen.com/go/capnproto2"
|
||||
air "zombiezen.com/go/capnproto2/internal/aircraftlib"
|
||||
)
|
||||
|
||||
type simpleEcho struct{}
|
||||
|
||||
func checkFatal(t *testing.T, name string, err error) {
|
||||
if err != nil {
|
||||
t.Fatalf("%s for TestInsertIFace: %v", name, err)
|
||||
}
|
||||
}
|
||||
|
||||
func (s simpleEcho) Echo(p air.Echo_echo) error {
|
||||
text, err := p.Params.In()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.Results.SetOut(text)
|
||||
return nil
|
||||
}
|
||||
|
||||
type EchoBase struct {
|
||||
Echo air.Echo
|
||||
}
|
||||
|
||||
type EchoBases struct {
|
||||
Bases []EchoBase
|
||||
}
|
||||
|
||||
type Hoth struct {
|
||||
Base EchoBase
|
||||
}
|
||||
|
||||
func TestInsertIFace(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
checkFatal(t, "NewMessage", err)
|
||||
h, err := air.NewRootHoth(seg)
|
||||
checkFatal(t, "NewRootHoth", err)
|
||||
err = Insert(air.Hoth_TypeID, h.Struct, Hoth{
|
||||
Base: EchoBase{Echo: air.Echo_ServerToClient(simpleEcho{})},
|
||||
})
|
||||
checkFatal(t, "Insert", err)
|
||||
base, err := h.Base()
|
||||
checkFatal(t, "h.Base", err)
|
||||
echo := base.Echo()
|
||||
|
||||
testEcho(t, echo)
|
||||
}
|
||||
|
||||
func TestInsertListIFace(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
checkFatal(t, "NewMessage", err)
|
||||
wrapper, err := air.NewEchoBases(seg)
|
||||
checkFatal(t, "NewEchoBases", err)
|
||||
err = Insert(air.EchoBases_TypeID, wrapper.Struct, EchoBases{
|
||||
Bases: []EchoBase{
|
||||
{Echo: air.Echo_ServerToClient(simpleEcho{})},
|
||||
{Echo: air.Echo_ServerToClient(simpleEcho{})},
|
||||
},
|
||||
})
|
||||
checkFatal(t, "Insert", err)
|
||||
bases, err := wrapper.Bases()
|
||||
checkFatal(t, "Bases", err)
|
||||
for i := 0; i < bases.Len(); i++ {
|
||||
testEcho(t, bases.At(i).Echo())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestInsertNilInterface(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
checkFatal(t, "NewMessage", err)
|
||||
h, err := air.NewRootHoth(seg)
|
||||
checkFatal(t, "NewRootHoth", err)
|
||||
err = Insert(air.Hoth_TypeID, h.Struct, Hoth{
|
||||
Base: EchoBase{Echo: air.Echo{Client: nil}},
|
||||
})
|
||||
checkFatal(t, "Insert", err)
|
||||
base, err := h.Base()
|
||||
checkFatal(t, "h.Base", err)
|
||||
echo := base.Echo()
|
||||
if echo.Client != nil {
|
||||
t.Fatalf("Expected nil client, but got %v", echo.Client)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtractIFace(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
checkFatal(t, "NewMessage", err)
|
||||
h, err := air.NewRootHoth(seg)
|
||||
checkFatal(t, "NewRootHoth", err)
|
||||
base, err := air.NewEchoBase(seg)
|
||||
checkFatal(t, "NewEchoBase", err)
|
||||
h.SetBase(base)
|
||||
base.SetEcho(air.Echo_ServerToClient(simpleEcho{}))
|
||||
|
||||
extractedHoth := Hoth{}
|
||||
err = Extract(&extractedHoth, air.Hoth_TypeID, h.Struct)
|
||||
checkFatal(t, "Extract", err)
|
||||
|
||||
testEcho(t, extractedHoth.Base.Echo)
|
||||
}
|
||||
|
||||
func TestExtractListIFace(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
checkFatal(t, "NewMessage", err)
|
||||
wrapper, err := air.NewEchoBases(seg)
|
||||
checkFatal(t, "NewEchoBases", err)
|
||||
length := 2
|
||||
list, err := air.NewEchoBase_List(seg, int32(length))
|
||||
checkFatal(t, "NewEchoBase_List", err)
|
||||
for i := 0; i < length; i++ {
|
||||
base, err := air.NewEchoBase(seg)
|
||||
base.SetEcho(air.Echo_ServerToClient(simpleEcho{}))
|
||||
checkFatal(t, "NewEchoBase", err)
|
||||
list.Set(i, base)
|
||||
}
|
||||
wrapper.SetBases(list)
|
||||
|
||||
extractedBases := EchoBases{}
|
||||
err = Extract(&extractedBases, air.EchoBases_TypeID, wrapper.Struct)
|
||||
checkFatal(t, "Extract", err)
|
||||
if extractedBases.Bases == nil {
|
||||
t.Fatal("Bases is nil")
|
||||
}
|
||||
if len(extractedBases.Bases) != length {
|
||||
t.Fatalf("Bases has Wrong length: got %d but wanted %d.",
|
||||
len(extractedBases.Bases), length)
|
||||
}
|
||||
for _, v := range extractedBases.Bases {
|
||||
testEcho(t, v.Echo)
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure extract correctly handles missing interfaces.
|
||||
func TestExtractMissingIFace(t *testing.T) {
|
||||
_, seg, err := capnp.NewMessage(capnp.SingleSegment(nil))
|
||||
|
||||
base, err := air.NewRootEchoBase(seg)
|
||||
checkFatal(t, "NewRootEchoBase", err)
|
||||
|
||||
// Fill the client in, so we know that after extracting, if
|
||||
// it's nil it's because it was *set*, not just left over:
|
||||
extractedBase := EchoBase{Echo: air.Echo_ServerToClient(simpleEcho{})}
|
||||
|
||||
err = Extract(&extractedBase, air.EchoBase_TypeID, base.Struct)
|
||||
checkFatal(t, "Extract", err)
|
||||
if extractedBase.Echo.Client != nil {
|
||||
t.Fatalf("Expected nil client but got %v", extractedBase.Echo.Client)
|
||||
}
|
||||
}
|
||||
|
||||
func testEcho(t *testing.T, echo air.Echo) {
|
||||
expected := "Hello!"
|
||||
result, err := echo.Echo(context.TODO(), func(p air.Echo_echo_Params) error {
|
||||
p.SetIn(expected)
|
||||
return nil
|
||||
}).Struct()
|
||||
checkFatal(t, "Echo", err)
|
||||
actual, err := result.Out()
|
||||
checkFatal(t, "result.Out", err)
|
||||
if actual != expected {
|
||||
t.Fatal("Echo result did not match input; "+
|
||||
"wanted %q but got %q.", expected, actual)
|
||||
}
|
||||
}
|
1472
vendor/zombiezen.com/go/capnproto2/pogs/pogs_test.go
generated
vendored
1472
vendor/zombiezen.com/go/capnproto2/pogs/pogs_test.go
generated
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user