forked from TrueCloudLab/neoneo-go
transaction: add binary encoding for publish
And expand the test to check for it. Fixes #319.
This commit is contained in:
parent
af212f496e
commit
203aab6a7e
2 changed files with 21 additions and 1 deletions
|
@ -56,7 +56,22 @@ func (tx *PublishTX) DecodeBinary(r io.Reader) error {
|
||||||
|
|
||||||
// EncodeBinary implements the Payload interface.
|
// EncodeBinary implements the Payload interface.
|
||||||
func (tx *PublishTX) EncodeBinary(w io.Writer) error {
|
func (tx *PublishTX) EncodeBinary(w io.Writer) error {
|
||||||
return nil
|
bw := util.BinWriter{W: w}
|
||||||
|
bw.WriteBytes(tx.Script)
|
||||||
|
bw.WriteVarUint(uint64(len(tx.ParamList)))
|
||||||
|
for _, param := range tx.ParamList {
|
||||||
|
bw.WriteLE(uint8(param))
|
||||||
|
}
|
||||||
|
bw.WriteLE(uint8(tx.ReturnType))
|
||||||
|
if tx.Version >= 1 {
|
||||||
|
bw.WriteLE(tx.NeedStorage)
|
||||||
|
}
|
||||||
|
bw.WriteString(tx.Name)
|
||||||
|
bw.WriteString(tx.CodeVersion)
|
||||||
|
bw.WriteString(tx.Author)
|
||||||
|
bw.WriteString(tx.Email)
|
||||||
|
bw.WriteString(tx.Description)
|
||||||
|
return bw.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tx *PublishTX) Size() int {
|
func (tx *PublishTX) Size() int {
|
||||||
|
|
|
@ -144,4 +144,9 @@ func TestDecodePublishTX(t *testing.T) {
|
||||||
assert.Equal(t, expectedTX.Data, actualTX.Data)
|
assert.Equal(t, expectedTX.Data, actualTX.Data)
|
||||||
assert.Equal(t, expectedTX.Type, actualTX.Type)
|
assert.Equal(t, expectedTX.Type, actualTX.Type)
|
||||||
assert.Equal(t, expectedTX.Version, actualTX.Version)
|
assert.Equal(t, expectedTX.Version, actualTX.Version)
|
||||||
|
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
err := actualTX.EncodeBinary(buf)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Equal(t, rawPublishTX, hex.EncodeToString(buf.Bytes()))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue