Skip to content

Commit

Permalink
Add tests for Set type
Browse files Browse the repository at this point in the history
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
  • Loading branch information
hsanjuan committed Aug 2, 2018
1 parent 06f861b commit b340dd2
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions set_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package cid

import (
"crypto/rand"
"errors"
"testing"

mh "github.com/multiformats/go-multihash"
)

func makeRandomCid(t *testing.T) *Cid {
p := make([]byte, 256)
_, err := rand.Read(p)
if err != nil {
t.Fatal(err)
}

h, err := mh.Sum(p, mh.SHA3, 4)
if err != nil {
t.Fatal(err)
}

cid := &Cid{
codec: 7,
version: 1,
hash: h,
}

return cid
}

func TestSet(t *testing.T) {
cid := makeRandomCid(t)
cid2 := makeRandomCid(t)
s := NewSet()

s.Add(cid)

if !s.Has(cid) {
t.Error("should have the CID")
}

if s.Len() != 1 {
t.Error("should report 1 element")
}

keys := s.Keys()

if len(keys) != 1 || !keys[0].Equals(cid) {
t.Error("key should correspond to Cid")
}

if s.Visit(cid) {
t.Error("visit should return false")
}

foreach := []*Cid{}
foreachF := func(c *Cid) error {
foreach = append(foreach, c)
return nil
}

if err := s.ForEach(foreachF); err != nil {
t.Error(err)
}

if len(foreach) != 1 {
t.Error("ForEach should have visited 1 element")
}

foreachErr := func(c *Cid) error {
return errors.New("test")
}

if err := s.ForEach(foreachErr); err == nil {
t.Error("Should have returned an error")
}

if !s.Visit(cid2) {
t.Error("should have visited a new Cid")
}

if s.Len() != 2 {
t.Error("len should be 2 now")
}

s.Remove(cid2)

if s.Len() != 1 {
t.Error("len should be 1 now")
}
}

0 comments on commit b340dd2

Please sign in to comment.