diff --git a/packages/model/approvers/approvers.go b/packages/model/approvers/approvers.go index 153968fabdf9ec449f20d126ddd0bf7b7008a38d..cd7e66c4ed8db52178f13936f0840b7194d275a1 100644 --- a/packages/model/approvers/approvers.go +++ b/packages/model/approvers/approvers.go @@ -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 } diff --git a/packages/model/approvers/approvers_test.go b/packages/model/approvers/approvers_test.go new file mode 100644 index 0000000000000000000000000000000000000000..3f4008aeb3c10ea1932b5e946aaa3ee32f5a0617 --- /dev/null +++ b/packages/model/approvers/approvers_test.go @@ -0,0 +1,37 @@ +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 + approversUnmarshaled := New(hashA) + 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") +}