From 35ec90d92098ed46a1df85743625643a08e1059a Mon Sep 17 00:00:00 2001 From: Wondertan Date: Fri, 19 Mar 2021 18:36:02 +0200 Subject: [PATCH] implement Equal for IntervalDigest --- namespace/digest.go | 9 ++++++++- namespace/digest_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/namespace/digest.go b/namespace/digest.go index 2e9e7cd..5dfe60e 100644 --- a/namespace/digest.go +++ b/namespace/digest.go @@ -1,6 +1,9 @@ package namespace -import "fmt" +import ( + "bytes" + "fmt" +) type IntervalDigest struct { min ID @@ -40,6 +43,10 @@ func (d IntervalDigest) Bytes() []byte { return append(append(d.min, d.max...), d.digest...) } +func (d *IntervalDigest) Equal(to *IntervalDigest) bool { + return d.max.Equal(to.max) && d.min.Equal(to.min) && bytes.Equal(d.digest, to.digest) +} + func (d IntervalDigest) String() string { return fmt.Sprintf( `{ diff --git a/namespace/digest_test.go b/namespace/digest_test.go index 33db1ea..004b67c 100644 --- a/namespace/digest_test.go +++ b/namespace/digest_test.go @@ -54,3 +54,31 @@ func TestIntervalDigest_String(t *testing.T) { }) } } + +func TestIntervalDigest_Equal(t *testing.T) { + tests := []struct { + name string + one, two *IntervalDigest + want bool + }{ + { + "equal", + &IntervalDigest{[]byte{0}, []byte{1}, []byte{}}, + &IntervalDigest{[]byte{0}, []byte{1}, []byte{}}, + true, + }, + { + "unequal", + &IntervalDigest{[]byte{0}, []byte{1}, []byte{1, 0, 0}}, + &IntervalDigest{[]byte{0}, []byte{1}, []byte{1, 1, 1}}, + false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.one.Equal(tt.two); got != tt.want { + t.Errorf("Equal() = %v, want %v", got, tt.want) + } + }) + } +}