From 9437b3af611de51a91e1b1313b53d3f00be852ee Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Mon, 15 Aug 2016 11:53:56 +0200 Subject: [PATCH 1/2] test: 100% coverage on blocks/set License: MIT Signed-off-by: Jakub Sztandera --- blocks/set/set_test.go | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 blocks/set/set_test.go diff --git a/blocks/set/set_test.go b/blocks/set/set_test.go new file mode 100644 index 000000000..5e599c7bc --- /dev/null +++ b/blocks/set/set_test.go @@ -0,0 +1,71 @@ +package set + +import ( + "testing" + + bu "github.com/ipfs/go-ipfs/blocks/blocksutil" + k "github.com/ipfs/go-ipfs/blocks/key" +) + +func exampleKeys() []k.Key { + res := make([]k.Key, 1<<8) + gen := bu.NewBlockGenerator() + for i := uint64(0); i < 1<<8; i++ { + res[i] = gen.Next().Key() + } + return res +} +func checkSet(set BlockSet, keySlice []k.Key, t *testing.T) { + for i, key := range keySlice { + if i&(1<<2) == 0 { + if set.HasKey(key) == false { + t.Error("key should be in the set") + } + } else if i&(1<<1) == 0 { + if set.HasKey(key) == true { + t.Error("key shouldn't be in the set") + } + } else if i&(1<<0) == 0 { + if set.HasKey(key) == false { + t.Error("key should be in the set") + } + } + } +} + +func TestSetWorks(t *testing.T) { + set := NewSimpleBlockSet() + keys := exampleKeys() + + for i, key := range keys { + if i&(1<<0) == 0 { + set.AddBlock(key) + } + } + for i, key := range keys { + if i&(1<<1) == 0 { + set.RemoveBlock(key) + } + } + for i, key := range keys { + if (i)&(1<<2) == 0 { + set.AddBlock(key) + } + } + + checkSet(set, keys, t) + addedKeys := set.GetKeys() + + newSet := SimpleSetFromKeys(addedKeys) + // same check works on a new set + checkSet(newSet, keys, t) + + bloom := set.GetBloomFilter() + + for _, key := range addedKeys { + if bloom.Find([]byte(key)) == false { + t.Error("bloom doesn't contain expected key") + } + } + +} From a63b5c38b7c2b15e637d72e63849b35eb1c6508c Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Tue, 16 Aug 2016 12:49:32 +0200 Subject: [PATCH 2/2] test: make the test bit cleaner License: MIT Signed-off-by: Jakub Sztandera --- blocks/set/set_test.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/blocks/set/set_test.go b/blocks/set/set_test.go index 5e599c7bc..74465b927 100644 --- a/blocks/set/set_test.go +++ b/blocks/set/set_test.go @@ -7,6 +7,12 @@ import ( k "github.com/ipfs/go-ipfs/blocks/key" ) +const ( + tAdd int = 1 << iota + tRemove + tReAdd +) + func exampleKeys() []k.Key { res := make([]k.Key, 1<<8) gen := bu.NewBlockGenerator() @@ -17,15 +23,15 @@ func exampleKeys() []k.Key { } func checkSet(set BlockSet, keySlice []k.Key, t *testing.T) { for i, key := range keySlice { - if i&(1<<2) == 0 { + if i&tReAdd == 0 { if set.HasKey(key) == false { t.Error("key should be in the set") } - } else if i&(1<<1) == 0 { + } else if i&tRemove == 0 { if set.HasKey(key) == true { t.Error("key shouldn't be in the set") } - } else if i&(1<<0) == 0 { + } else if i&tAdd == 0 { if set.HasKey(key) == false { t.Error("key should be in the set") } @@ -38,17 +44,17 @@ func TestSetWorks(t *testing.T) { keys := exampleKeys() for i, key := range keys { - if i&(1<<0) == 0 { + if i&tAdd == 0 { set.AddBlock(key) } } for i, key := range keys { - if i&(1<<1) == 0 { + if i&tRemove == 0 { set.RemoveBlock(key) } } for i, key := range keys { - if (i)&(1<<2) == 0 { + if i&tReAdd == 0 { set.AddBlock(key) } }