From 74443fca319c4c2f5e9968b8e268c30a4a74dc64 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Tue, 16 Sep 2014 06:08:48 -0700 Subject: [PATCH] Added Equal func --- index.go | 6 ++++++ multiaddr_test.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/index.go b/index.go index df22012..a55fa66 100644 --- a/index.go +++ b/index.go @@ -1,6 +1,7 @@ package multiaddr import ( + "bytes" "fmt" "strings" ) @@ -19,6 +20,11 @@ func NewMultiaddr(s string) (*Multiaddr, error) { return &Multiaddr{Bytes: b}, nil } +// Equal tests whether two multiaddrs are equal +func (m *Multiaddr) Equal(m2 *Multiaddr) bool { + return bytes.Equal(m.Bytes, m2.Bytes) +} + // String returns the string representation of a Multiaddr func (m *Multiaddr) String() (string, error) { return bytesToString(m.Bytes) diff --git a/multiaddr_test.go b/multiaddr_test.go index 65cb972..7bc2e92 100644 --- a/multiaddr_test.go +++ b/multiaddr_test.go @@ -6,6 +6,40 @@ import ( "testing" ) +func newMultiaddr(t *testing.T, a string) *Multiaddr { + m, err := NewMultiaddr(a) + if err != nil { + t.Error(err) + } + return m +} + +func TestEqual(t *testing.T) { + m1 := newMultiaddr(t, "/ip4/127.0.0.1/udp/1234") + m2 := newMultiaddr(t, "/ip4/127.0.0.1/tcp/1234") + m3 := newMultiaddr(t, "/ip4/127.0.0.1/tcp/1234") + + if m1.Equal(m2) { + t.Error("should not be equal") + } + + if m2.Equal(m1) { + t.Error("should not be equal") + } + + if !m2.Equal(m3) { + t.Error("should be equal") + } + + if !m3.Equal(m2) { + t.Error("should be equal") + } + + if !m1.Equal(m1) { + t.Error("should be equal") + } +} + func TestStringToBytes(t *testing.T) { testString := func(s string, h string) {