MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / TestEncodeDecodeTransactions

Function TestEncodeDecodeTransactions

types/msgpack_test.go:35–141  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

33}
34
35func TestEncodeDecodeTransactions(t *testing.T) {
36 Convey("test encode/decode single transaction", t, func() {
37 var t pi.Transaction
38 t = NewBaseAccount(&Account{})
39 buf, err := utils.EncodeMsgPack(t)
40 So(err, ShouldBeNil)
41
42 var out pi.Transaction
43 err = utils.DecodeMsgPack(buf.Bytes(), &out)
44 So(err, ShouldBeNil)
45 So(out, ShouldNotBeNil)
46 So(reflect.TypeOf(out).String(), ShouldContainSubstring, "TransactionWrapper")
47 So(out.GetTransactionType(), ShouldEqual, t.GetTransactionType())
48 })
49 Convey("test encode/decode series of transactions", t, func() {
50 var t []pi.Transaction
51 t = append(t, NewBaseAccount(&Account{}))
52 t = append(t, NewTransfer(&TransferHeader{}))
53 t = append(t, NewCreateDatabase(&CreateDatabaseHeader{}))
54
55 buf, err := utils.EncodeMsgPack(t)
56 So(err, ShouldBeNil)
57
58 var out []pi.Transaction
59 err = utils.DecodeMsgPack(buf.Bytes(), &out)
60 So(err, ShouldBeNil)
61 So(out, ShouldNotBeNil)
62 So(out, ShouldHaveLength, len(t))
63
64 for i := range t {
65 So(out[i], ShouldNotBeNil)
66 So(out[i].GetTransactionType(), ShouldEqual, t[i].GetTransactionType())
67 So(reflect.TypeOf(out[i]).String(), ShouldContainSubstring, "TransactionWrapper")
68 }
69 })
70 Convey("test encode/decode complex structure containing transactions", t, func() {
71 var t complexStructure
72 t.Tx = NewBaseAccount(&Account{})
73 t.Txs = append(t.Txs, NewBaseAccount(&Account{}))
74 t.Txs = append(t.Txs, NewTransfer(&TransferHeader{}))
75 t.Txs = append(t.Txs, NewCreateDatabase(&CreateDatabaseHeader{}))
76 t.Maps = make(map[string]pi.Transaction)
77 t.Maps["BaseAccount"] = NewBaseAccount(&Account{})
78 t.Maps["Transfer"] = NewTransfer(&TransferHeader{})
79 t.Maps["CreateDatabase"] = NewCreateDatabase(&CreateDatabaseHeader{})
80 buf, err := utils.EncodeMsgPack(t)
81 So(err, ShouldBeNil)
82
83 var out complexStructure
84 err = utils.DecodeMsgPack(buf.Bytes(), &out)
85 So(err, ShouldBeNil)
86 So(out.Tx, ShouldNotBeNil)
87 So(out.Txs, ShouldNotBeNil)
88 So(out.Txs, ShouldHaveLength, len(t.Txs))
89 So(out.Maps, ShouldNotBeNil)
90 So(out.Maps, ShouldHaveLength, len(t.Maps))
91
92 So(out.Tx.GetTransactionType(), ShouldEqual, pi.TransactionTypeBaseAccount)

Callers

nothing calls this directly

Calls 8

GetTransactionTypeMethod · 0.95
EncodeMsgPackFunction · 0.92
DecodeMsgPackFunction · 0.92
NewBaseAccountFunction · 0.85
NewTransferFunction · 0.85
NewCreateDatabaseFunction · 0.85
BytesMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected