本文整理汇总了Golang中github.com/henryanand/vitess/go/bson.Unmarshal函数的典型用法代码示例。如果您正苦于以下问题:Golang Unmarshal函数的具体用法?Golang Unmarshal怎么用?Golang Unmarshal使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Unmarshal函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestQueryList
func TestQueryList(t *testing.T) {
reflected, err := bson.Marshal(&reflectQueryList{
Queries: []BoundQuery{{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
}},
SessionId: 2,
TransactionId: 1,
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := QueryList{
Queries: []BoundQuery{{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
}},
SessionId: 2,
TransactionId: 1,
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%#v, got\n%#v", want, got)
}
var unmarshalled QueryList
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if custom.TransactionId != unmarshalled.TransactionId {
t.Errorf("want %v, got %v", custom.TransactionId, unmarshalled.TransactionId)
}
if custom.SessionId != unmarshalled.SessionId {
t.Errorf("want %v, got %v", custom.SessionId, unmarshalled.SessionId)
}
if custom.Queries[0].Sql != unmarshalled.Queries[0].Sql {
t.Errorf("want %v, got %v", custom.Queries[0].Sql, unmarshalled.Queries[0].Sql)
}
if custom.Queries[0].BindVariables["val"].(int64) != unmarshalled.Queries[0].BindVariables["val"].(int64) {
t.Errorf("want %v, got %v", custom.Queries[0].BindVariables["val"], unmarshalled.Queries[0].BindVariables["val"])
}
extra, err := bson.Marshal(&extraQueryList{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:58,代码来源:bson_test.go
示例2: TestQueryResultList
func TestQueryResultList(t *testing.T) {
reflected, err := bson.Marshal(&reflectQueryResultList{
List: []mproto.QueryResult{{
Fields: []mproto.Field{{"name", 1}},
RowsAffected: 2,
InsertId: 3,
Rows: [][]sqltypes.Value{
{{sqltypes.String("1")}, {sqltypes.String("aa")}},
},
}},
Session: &commonSession,
Error: "error",
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := QueryResultList{
List: []mproto.QueryResult{{
Fields: []mproto.Field{{"name", 1}},
RowsAffected: 2,
InsertId: 3,
Rows: [][]sqltypes.Value{
{{sqltypes.String("1")}, {sqltypes.String("aa")}},
},
}},
Session: &commonSession,
Error: "error",
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%+v, got\n%+v", want, got)
}
var unmarshalled QueryResultList
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(custom, unmarshalled) {
t.Errorf("want \n%+v, got \n%+v", custom, unmarshalled)
}
extra, err := bson.Marshal(&extraQueryResultList{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:57,代码来源:vtgate_proto_test.go
示例3: TestBinlogTransaction
func TestBinlogTransaction(t *testing.T) {
reflected, err := bson.Marshal(&reflectBinlogTransaction{
Statements: []reflectStatement{
{
Category: 1,
Charset: &mproto.Charset{Client: 12, Conn: 34, Server: 56},
Sql: []byte("sql"),
},
},
Timestamp: 456,
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := BinlogTransaction{
Statements: []Statement{
{
Category: 1,
Charset: &mproto.Charset{Client: 12, Conn: 34, Server: 56},
Sql: []byte("sql"),
},
},
Timestamp: 456,
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%#v, got\n%#v", want, got)
}
var unmarshalled BinlogTransaction
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(custom, unmarshalled) {
t.Errorf("%#v != %#v", custom, unmarshalled)
}
extra, err := bson.Marshal(&extraBinlogTransaction{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:53,代码来源:binlog_transaction_test.go
示例4: TestQueryResult
func TestQueryResult(t *testing.T) {
want := "\x85\x00\x00\x00\x04Fields\x00*\x00\x00\x00\x030\x00\"\x00\x00\x00\x05Name\x00\x04\x00\x00\x00\x00name\x12Type\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00?RowsAffected\x00\x02\x00\x00\x00\x00\x00\x00\x00?InsertId\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04Rows\x00 \x00\x00\x00\x040\x00\x18\x00\x00\x00\x050\x00\x01\x00\x00\x00\x001\x051\x00\x02\x00\x00\x00\x00aa\x00\x00\x00"
custom := QueryResult{
Fields: []Field{{"name", 1}},
RowsAffected: 2,
InsertId: 3,
Rows: [][]sqltypes.Value{
{{sqltypes.Numeric("1")}, {sqltypes.String("aa")}},
},
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%#v, got\n%#v", want, got)
}
var unmarshalled QueryResult
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if custom.RowsAffected != unmarshalled.RowsAffected {
t.Errorf("want %v, got %#v", custom.RowsAffected, unmarshalled.RowsAffected)
}
if custom.InsertId != unmarshalled.InsertId {
t.Errorf("want %v, got %#v", custom.InsertId, unmarshalled.InsertId)
}
if custom.Fields[0].Name != unmarshalled.Fields[0].Name {
t.Errorf("want %v, got %#v", custom.Fields[0].Name, unmarshalled.Fields[0].Name)
}
if custom.Fields[0].Type != unmarshalled.Fields[0].Type {
t.Errorf("want %v, got %#v", custom.Fields[0].Type, unmarshalled.Fields[0].Type)
}
if !bytes.Equal(custom.Rows[0][0].Raw(), unmarshalled.Rows[0][0].Raw()) {
t.Errorf("want %s, got %s", custom.Rows[0][0].Raw(), unmarshalled.Rows[0][0].Raw())
}
if !bytes.Equal(custom.Rows[0][1].Raw(), unmarshalled.Rows[0][1].Raw()) {
t.Errorf("want %s, got %s", custom.Rows[0][0].Raw(), unmarshalled.Rows[0][0].Raw())
}
extra, err := bson.Marshal(&extraQueryResult{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:52,代码来源:bson_test.go
示例5: TestResponseBson
func TestResponseBson(t *testing.T) {
reflected, err := bson.Marshal(&reflectResponseBson{
ServiceMethod: "aa",
Seq: 1,
Error: "err",
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := ResponseBson{
&rpc.Response{
ServiceMethod: "aa",
Seq: 1,
Error: "err",
},
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%#v, got\n%#v", want, got)
}
unmarshalled := ResponseBson{Response: new(rpc.Response)}
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if custom.ServiceMethod != unmarshalled.ServiceMethod {
t.Errorf("want %v, got %#v", custom.ServiceMethod, unmarshalled.ServiceMethod)
}
if custom.Seq != unmarshalled.Seq {
t.Errorf("want %v, got %#v", custom.Seq, unmarshalled.Seq)
}
if custom.Error != unmarshalled.Error {
t.Errorf("want %v, got %#v", custom.Error, unmarshalled.Error)
}
extra, err := bson.Marshal(&extraResponseBson{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:51,代码来源:custom_codecs_test.go
示例6: TestKeyRangeQuery
func TestKeyRangeQuery(t *testing.T) {
reflected, err := bson.Marshal(&reflectKeyRangeQuery{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
Keyspace: "keyspace",
KeyRanges: []kproto.KeyRange{kproto.KeyRange{Start: "10", End: "18"}},
TabletType: "replica",
Session: &commonSession,
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := KeyRangeQuery{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
Keyspace: "keyspace",
KeyRanges: []kproto.KeyRange{kproto.KeyRange{Start: "10", End: "18"}},
TabletType: "replica",
Session: &commonSession,
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%+v, got\n%+v", want, got)
}
var unmarshalled KeyRangeQuery
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(custom, unmarshalled) {
t.Errorf("want \n%+v, got \n%+v", custom, unmarshalled)
}
extra, err := bson.Marshal(&extraKeyRangeQuery{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:50,代码来源:vtgate_proto_test.go
示例7: TestQueryShard
func TestQueryShard(t *testing.T) {
reflected, err := bson.Marshal(&reflectQueryShard{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
Keyspace: "keyspace",
Shards: []string{"shard1", "shard2"},
TabletType: topo.TabletType("replica"),
Session: &commonSession,
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := QueryShard{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
Keyspace: "keyspace",
Shards: []string{"shard1", "shard2"},
TabletType: topo.TabletType("replica"),
Session: &commonSession,
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%+v, got\n%+v", want, got)
}
var unmarshalled QueryShard
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(custom, unmarshalled) {
t.Errorf("want \n%+v, got \n%+v", custom, unmarshalled)
}
extra, err := bson.Marshal(&extraQueryShard{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:49,代码来源:vtgate_proto_test.go
示例8: TestSession
func TestSession(t *testing.T) {
reflected, err := bson.Marshal(&reflectSession{
InTransaction: true,
ShardSessions: []*ShardSession{{
Keyspace: "a",
Shard: "0",
TabletType: topo.TabletType("replica"),
TransactionId: 1,
}, {
Keyspace: "b",
Shard: "1",
TabletType: topo.TabletType("master"),
TransactionId: 2,
}},
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := commonSession
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%+v, got\n%+v", want, got)
}
var unmarshalled Session
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(custom, unmarshalled) {
t.Errorf("want \n%+v, got \n%+v", custom, unmarshalled)
}
extra, err := bson.Marshal(&extraSession{})
if err != nil {
t.Fatal(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:48,代码来源:vtgate_proto_test.go
示例9: TestBsonMarshalUnmarshalReplicationPositionInStruct
func TestBsonMarshalUnmarshalReplicationPositionInStruct(t *testing.T) {
gtidSetParsers["golf"] = func(s string) (GTIDSet, error) {
return fakeGTID{flavor: "golf", value: s}, nil
}
input := ReplicationPosition{GTIDSet: fakeGTID{flavor: "golf", value: "par"}}
want := ReplicationPosition{GTIDSet: fakeGTID{flavor: "golf", value: "par"}}
type mystruct struct {
ReplicationPosition
}
buf, err := bson.Marshal(&mystruct{ReplicationPosition: input})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
var gotStruct mystruct
if err = bson.Unmarshal(buf, &gotStruct); err != nil {
t.Errorf("unexpected error: %v", err)
}
if got := gotStruct.ReplicationPosition; !got.Equal(want) {
t.Errorf("marshal->unmarshal mismatch, got %#v, want %#v", got, want)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:25,代码来源:replication_test.go
示例10: TestBsonMarshalUnmarshalGTIDFieldInStruct
func TestBsonMarshalUnmarshalGTIDFieldInStruct(t *testing.T) {
gtidParsers["golf"] = func(s string) (GTID, error) {
return fakeGTID{flavor: "golf", value: s}, nil
}
input := fakeGTID{flavor: "golf", value: "par"}
want := fakeGTID{flavor: "golf", value: "par"}
type mystruct struct {
GTIDField
}
buf, err := bson.Marshal(&mystruct{GTIDField{input}})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
var gotStruct mystruct
if err = bson.Unmarshal(buf, &gotStruct); err != nil {
t.Errorf("unexpected error: %v", err)
}
if got := gotStruct.GTIDField.Value; got != want {
t.Errorf("marshal->unmarshal mismatch, got %#v, want %#v", got, want)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:25,代码来源:gtid_test.go
示例11: TestBoundQuery
func TestBoundQuery(t *testing.T) {
reflected, err := bson.Marshal(&reflectBoundQuery{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := BoundQuery{
Sql: "query",
BindVariables: map[string]interface{}{"val": int64(1)},
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%#v, got\n%#v", want, got)
}
var unmarshalled BoundQuery
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if custom.Sql != unmarshalled.Sql {
t.Errorf("want %v, got %v", custom.Sql, unmarshalled.Sql)
}
if custom.BindVariables["val"].(int64) != unmarshalled.BindVariables["val"].(int64) {
t.Errorf("want %v, got %v", custom.BindVariables["val"], unmarshalled.BindVariables["val"])
}
extra, err := bson.Marshal(&extraBoundQuery{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:44,代码来源:bson_test.go
示例12: TestSession
func TestSession(t *testing.T) {
reflected, err := bson.Marshal(&reflectSession{
SessionId: 2,
TransactionId: 1,
})
if err != nil {
t.Error(err)
}
want := string(reflected)
custom := Session{
SessionId: 2,
TransactionId: 1,
}
encoded, err := bson.Marshal(&custom)
if err != nil {
t.Error(err)
}
got := string(encoded)
if want != got {
t.Errorf("want\n%#v, got\n%#v", want, got)
}
var unmarshalled Session
err = bson.Unmarshal(encoded, &unmarshalled)
if err != nil {
t.Error(err)
}
if custom != unmarshalled {
t.Errorf("want %v, got %#v", custom, unmarshalled)
}
extra, err := bson.Marshal(&extraSession{})
if err != nil {
t.Error(err)
}
err = bson.Unmarshal(extra, &unmarshalled)
if err != nil {
t.Error(err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:41,代码来源:bson_test.go
示例13: TestBatchQueryShardBadType
func TestBatchQueryShardBadType(t *testing.T) {
unexpected, err := bson.Marshal(&badTypeBatchQueryShard{})
if err != nil {
t.Error(err)
}
var unmarshalled BatchQueryShard
err = bson.Unmarshal(unexpected, &unmarshalled)
want := "unexpected kind 5 for batchQueryShard.Queries"
if err == nil || want != err.Error() {
t.Errorf("want %v, got %v", want, err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:12,代码来源:vtgate_proto_test.go
示例14: TestUnmarshalEmptyStructIntoUnused
func TestUnmarshalEmptyStructIntoUnused(t *testing.T) {
buf, err := bson.Marshal(&struct{}{})
if err != nil {
t.Fatalf("bson.Marshal: %v", err)
}
// Check that a new-style server expecting Unused{} can handle an empty struct.
var unused Unused
if err := bson.Unmarshal(buf, &unused); err != nil {
t.Errorf("bson.Unmarshal: %v", err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:12,代码来源:unused_test.go
示例15: TestKeyspaceIdsBatchQueryBadType
func TestKeyspaceIdsBatchQueryBadType(t *testing.T) {
unexpected, err := bson.Marshal(&badTypeKeyspaceIdsBatchQuery{})
if err != nil {
t.Error(err)
}
var unmarshalled KeyspaceIdBatchQuery
err = bson.Unmarshal(unexpected, &unmarshalled)
want := "unexpected kind 5 for keyspaceIdBatchQuery.Queries"
if err == nil || want != err.Error() {
t.Errorf("want %v, got %v", want, err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:12,代码来源:vtgate_proto_test.go
示例16: TestUnmarshalEmptyStructIntoStruct
func TestUnmarshalEmptyStructIntoStruct(t *testing.T) {
buf, err := bson.Marshal(&struct{}{})
if err != nil {
t.Fatalf("bson.Marshal: %v", err)
}
// It should always be possible to add fields to something that's already a
// struct. The struct name is irrelevant since it's never encoded.
var out struct{ A, B string }
if err := bson.Unmarshal(buf, &out); err != nil {
t.Errorf("bson.Unmarshal: %v", err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:13,代码来源:unused_test.go
示例17: TestUnmarshalUnusedIntoString
func TestUnmarshalUnusedIntoString(t *testing.T) {
buf, err := bson.Marshal(&Unused{})
if err != nil {
t.Fatalf("bson.Marshal: %v", err)
}
// Check that it's safe for new clients to send Unused{} to an old server
// expecting the naked empty string convention.
var str string
if err := bson.Unmarshal(buf, &str); err != nil {
t.Errorf("bson.Unmarshal: %v", err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:13,代码来源:unused_test.go
示例18: TestUnmarshalStructIntoUnused
func TestUnmarshalStructIntoUnused(t *testing.T) {
buf, err := bson.Marshal(&struct{ A, B string }{"A", "B"})
if err != nil {
t.Fatalf("bson.Marshal: %v", err)
}
// Check that a new-style server expecting Unused{} can handle an actual
// struct being sent.
var unused Unused
if err := bson.Unmarshal(buf, &unused); err != nil {
t.Errorf("bson.Unmarshal: %v", err)
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:13,代码来源:unused_test.go
示例19: TestUnmarshalStringIntoStruct
func TestUnmarshalStringIntoStruct(t *testing.T) {
str := ""
buf, err := bson.Marshal(&str)
if err != nil {
t.Fatalf("bson.Marshal: %v", err)
}
// This fails. That's why you can't have old-style (empty string) clients
// talking to servers that already expect a real struct (not Unused).
var out struct{ A, B string }
if err := bson.Unmarshal(buf, &out); err == nil {
t.Errorf("expected error from bson.Unmarshal, got none")
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:14,代码来源:unused_test.go
示例20: TestUnmarshalStructIntoString
func TestUnmarshalStructIntoString(t *testing.T) {
buf, err := bson.Marshal(&struct{ A, B string }{"A", "B"})
if err != nil {
t.Fatalf("bson.Marshal: %v", err)
}
// This fails. That's why you can't upgrade a method from unused (either old
// or new style) to a real struct with public fields, if there are still
// servers around that expect old-style string.
var str string
if err := bson.Unmarshal(buf, &str); err == nil {
t.Errorf("expected error from bson.Unmarshal, got none")
}
}
开发者ID:henryanand,项目名称:vitess,代码行数:14,代码来源:unused_test.go
注:本文中的github.com/henryanand/vitess/go/bson.Unmarshal函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论