Skip to content
Snippets Groups Projects
Unverified Commit 44a73143 authored by Angelo Capossele's avatar Angelo Capossele Committed by GitHub
Browse files

Merge pull request #31 from iotaledger/fix/approvers

Fix/approvers
parents b02f5d6f 9326e863
Branches
Tags
No related merge requests found
......@@ -74,7 +74,7 @@ func (approvers *Approvers) Marshal() (result []byte) {
i := 0
for hash := range approvers.hashes {
var HASH_START = MARSHALED_APPROVERS_HASHES_START + i*(MARSHALED_APPROVERS_HASH_SIZE)
var HASH_END = HASH_START * MARSHALED_APPROVERS_HASH_SIZE
var HASH_END = HASH_START + MARSHALED_APPROVERS_HASH_SIZE
copy(result[HASH_START:HASH_END], hash.CastToBytes())
......@@ -89,13 +89,13 @@ func (approvers *Approvers) Marshal() (result []byte) {
func (approvers *Approvers) Unmarshal(data []byte) (err errors.IdentifiableError) {
dataLen := len(data)
if dataLen <= MARSHALED_APPROVERS_MIN_SIZE {
if dataLen < MARSHALED_APPROVERS_MIN_SIZE {
return ErrMarshallFailed.Derive(errors.New("unmarshall failed"), "marshaled approvers are too short")
}
hashesCount := binary.BigEndian.Uint64(data[MARSHALED_APPROVERS_HASHES_COUNT_START:MARSHALED_APPROVERS_HASHES_COUNT_END])
if dataLen <= MARSHALED_APPROVERS_MIN_SIZE+int(hashesCount)*MARSHALED_APPROVERS_HASH_SIZE {
if dataLen < MARSHALED_APPROVERS_MIN_SIZE+int(hashesCount)*MARSHALED_APPROVERS_HASH_SIZE {
return ErrMarshallFailed.Derive(errors.New("unmarshall failed"), "marshaled approvers are too short for "+strconv.FormatUint(hashesCount, 10)+" approvers")
}
......@@ -105,7 +105,7 @@ func (approvers *Approvers) Unmarshal(data []byte) (err errors.IdentifiableError
approvers.hashes = make(map[ternary.Trytes]bool, hashesCount)
for i := uint64(0); i < hashesCount; i++ {
var HASH_START = MARSHALED_APPROVERS_HASHES_START + i*(MARSHALED_APPROVERS_HASH_SIZE)
var HASH_END = HASH_START * MARSHALED_APPROVERS_HASH_SIZE
var HASH_END = HASH_START + MARSHALED_APPROVERS_HASH_SIZE
approvers.hashes[ternary.Trytes(typeutils.BytesToString(data[HASH_START:HASH_END]))] = true
}
......
package approvers
import (
"fmt"
"testing"
"github.com/iotaledger/goshimmer/packages/ternary"
"github.com/magiconair/properties/assert"
)
func TestApprovers_SettersGetters(t *testing.T) {
hashA := ternary.Trytes("A9999999999999999999999999999999999999999999999999999999999999999999999999999999F")
hashB := ternary.Trytes("B9999999999999999999999999999999999999999999999999999999999999999999999999999999F")
approversTest := New(hashA)
approversTest.Add(hashB)
assert.Equal(t, approversTest.GetHash(), hashA, "hash")
assert.Equal(t, approversTest.GetHashes()[0], hashB, "hashes")
}
func TestApprovers_MarshalUnmarshalGetters(t *testing.T) {
hashA := ternary.Trytes("A9999999999999999999999999999999999999999999999999999999999999999999999999999999F")
hashB := ternary.Trytes("B9999999999999999999999999999999999999999999999999999999999999999999999999999999F")
approversTest := New(hashA)
approversTest.Add(hashB)
approversTestBytes := approversTest.Marshal()
var approversUnmarshaled Approvers
err := approversUnmarshaled.Unmarshal(approversTestBytes)
if err != nil {
fmt.Println(err, len(approversTestBytes))
}
assert.Equal(t, approversUnmarshaled.GetHash(), approversTest.GetHash(), "hash")
assert.Equal(t, approversUnmarshaled.GetHashes(), approversTest.GetHashes(), "hashes")
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment