@cryptotaxi247 / kubo / commits / 9437b3af6

test: 100% coverage on blocks/set

License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>

Jakub Sztandera committed Aug 15, 2016 at 11:53 UTC 9437b3af611de51a91e1b1313b53d3f00be852ee
1 file changed +71
blocks/set/set_test.go new
+71
@@ -0,0 +1,71 @@
1 +package set
2 +
3 +import (
4 + "testing"
5 +
6 + bu "github.com/ipfs/go-ipfs/blocks/blocksutil"
7 + k "github.com/ipfs/go-ipfs/blocks/key"
8 +)
9 +
10 +func exampleKeys() []k.Key {
11 + res := make([]k.Key, 1<<8)
12 + gen := bu.NewBlockGenerator()
13 + for i := uint64(0); i < 1<<8; i++ {
14 + res[i] = gen.Next().Key()
15 + }
16 + return res
17 +}
18 +func checkSet(set BlockSet, keySlice []k.Key, t *testing.T) {
19 + for i, key := range keySlice {
20 + if i&(1<<2) == 0 {
21 + if set.HasKey(key) == false {
22 + t.Error("key should be in the set")
23 + }
24 + } else if i&(1<<1) == 0 {
25 + if set.HasKey(key) == true {
26 + t.Error("key shouldn't be in the set")
27 + }
28 + } else if i&(1<<0) == 0 {
29 + if set.HasKey(key) == false {
30 + t.Error("key should be in the set")
31 + }
32 + }
33 + }
34 +}
35 +
36 +func TestSetWorks(t *testing.T) {
37 + set := NewSimpleBlockSet()
38 + keys := exampleKeys()
39 +
40 + for i, key := range keys {
41 + if i&(1<<0) == 0 {
42 + set.AddBlock(key)
43 + }
44 + }
45 + for i, key := range keys {
46 + if i&(1<<1) == 0 {
47 + set.RemoveBlock(key)
48 + }
49 + }
50 + for i, key := range keys {
51 + if (i)&(1<<2) == 0 {
52 + set.AddBlock(key)
53 + }
54 + }
55 +
56 + checkSet(set, keys, t)
57 + addedKeys := set.GetKeys()
58 +
59 + newSet := SimpleSetFromKeys(addedKeys)
60 + // same check works on a new set
61 + checkSet(newSet, keys, t)
62 +
63 + bloom := set.GetBloomFilter()
64 +
65 + for _, key := range addedKeys {
66 + if bloom.Find([]byte(key)) == false {
67 + t.Error("bloom doesn't contain expected key")
68 + }
69 + }
70 +
71 +}