forked from TrueCloudLab/frostfs-api-go
[#283] pkg/owner: Implement Equal method of ID type
Implement `owner.ID.Equal` method which defines a comparison relationship between two identifiers. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
4f286f5175
commit
5fe5af5bf9
2 changed files with 32 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
||||||
package owner
|
package owner
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
@ -40,6 +41,16 @@ func (id *ID) String() string {
|
||||||
return base58.Encode((*refs.OwnerID)(id).GetValue())
|
return base58.Encode((*refs.OwnerID)(id).GetValue())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Equal defines a comparison relation on ID's.
|
||||||
|
//
|
||||||
|
// ID's are equal if they have the same binary representation.
|
||||||
|
func (id *ID) Equal(id2 *ID) bool {
|
||||||
|
return bytes.Equal(
|
||||||
|
(*refs.ObjectID)(id).GetValue(),
|
||||||
|
(*refs.ObjectID)(id2).GetValue(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
func ScriptHashBE(id fmt.Stringer) ([]byte, error) {
|
func ScriptHashBE(id fmt.Stringer) ([]byte, error) {
|
||||||
addr, err := address.StringToUint160(id.String())
|
addr, err := address.StringToUint160(id.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package owner
|
package owner_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
|
@ -6,6 +6,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/mr-tron/base58"
|
"github.com/mr-tron/base58"
|
||||||
|
. "github.com/nspcc-dev/neofs-api-go/pkg/owner"
|
||||||
|
ownertest "github.com/nspcc-dev/neofs-api-go/pkg/owner/test"
|
||||||
"github.com/nspcc-dev/neofs-crypto/test"
|
"github.com/nspcc-dev/neofs-crypto/test"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
@ -93,3 +95,21 @@ func TestIDEncoding(t *testing.T) {
|
||||||
require.Equal(t, id, a2)
|
require.Equal(t, id, a2)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestID_Equal(t *testing.T) {
|
||||||
|
var (
|
||||||
|
data1 = []byte{1, 2, 3}
|
||||||
|
data2 = data1
|
||||||
|
data3 = append(data1, 255)
|
||||||
|
)
|
||||||
|
|
||||||
|
id1 := ownertest.GenerateFromBytes(data1)
|
||||||
|
|
||||||
|
require.True(t, id1.Equal(
|
||||||
|
ownertest.GenerateFromBytes(data2),
|
||||||
|
))
|
||||||
|
|
||||||
|
require.False(t, id1.Equal(
|
||||||
|
ownertest.GenerateFromBytes(data3),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue