remove error on NewBoolean

Expose underlying with Getter on Boolean StackItem
Add Equals method for ByteArray
This commit is contained in:
BlockChainDev 2019-03-16 21:44:03 +00:00
parent 80fd427517
commit 48413900ca
3 changed files with 19 additions and 4 deletions

View file

@ -85,7 +85,7 @@ func (i *Int) ByteArray() (*ByteArray, error) {
// to convert an Integer into a Boolean StackItem
func (i *Int) Boolean() (*Boolean, error) {
boolean := (i.val.Int64() != 0)
return NewBoolean(boolean)
return NewBoolean(boolean), nil
}
//Value returns the underlying big.Int

View file

@ -7,11 +7,11 @@ type Boolean struct {
}
//NewBoolean returns a new boolean stack item
func NewBoolean(val bool) (*Boolean, error) {
func NewBoolean(val bool) *Boolean {
return &Boolean{
&abstractItem{},
val,
}, nil
}
}
// Boolean overrides the default implementation
@ -19,3 +19,8 @@ func NewBoolean(val bool) (*Boolean, error) {
func (b *Boolean) Boolean() (*Boolean, error) {
return b, nil
}
// Value returns the underlying boolean value
func (b *Boolean) Value() bool {
return b.val
}

View file

@ -1,6 +1,7 @@
package stack
import (
"bytes"
"errors"
"math/big"
"strconv"
@ -26,6 +27,15 @@ func (ba *ByteArray) ByteArray() (*ByteArray, error) {
return ba, nil
}
//Equals returns true, if two bytearrays are equal
func (ba *ByteArray) Equals(other *ByteArray) *Boolean {
// If either are nil, return false
if ba == nil || other == nil {
return NewBoolean(false)
}
return NewBoolean(bytes.Equal(ba.val, other.val))
}
//Integer overrides the default Integer method to convert an
// ByteArray Into an integer
func (ba *ByteArray) Integer() (*Int, error) {
@ -41,7 +51,7 @@ func (ba *ByteArray) Boolean() (*Boolean, error) {
if err != nil {
return nil, errors.New("cannot convert byte array to a boolean")
}
return NewBoolean(boolean)
return NewBoolean(boolean), nil
}
// XXX: move this into a pkg/util/slice folder