-
Notifications
You must be signed in to change notification settings - Fork 2
/
example_test.go
88 lines (80 loc) · 1.63 KB
/
example_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package skipfilter_test
import (
"fmt"
"github.com/kevburnsjr/skipfilter"
)
func ExampleNew() {
sf := skipfilter.New(func(value interface{}, filter interface{}) bool {
return value.(int)%filter.(int) == 0
}, 10)
fmt.Printf("%d", sf.Len())
// Output:
// 0
}
func ExampleSkipFilter_Add() {
sf := skipfilter.New(func(value interface{}, filter interface{}) bool {
return value.(int)%filter.(int) == 0
}, 10)
for i := 0; i < 10; i++ {
sf.Add(i)
}
sf.Remove(0)
fmt.Printf("%d", sf.Len())
// Output:
// 9
}
func ExampleSkipFilter_MatchAny() {
sf := skipfilter.New(func(value interface{}, filter interface{}) bool {
return value.(int)%filter.(int) == 0
}, 10)
for i := 0; i < 10; i++ {
sf.Add(i)
}
fmt.Printf("Multiples of 2: %+v\n", sf.MatchAny(2))
fmt.Printf("Multiples of 3: %+v\n", sf.MatchAny(3))
// Output:
// Multiples of 2: [0 2 4 6 8]
// Multiples of 3: [0 3 6 9]
}
func ExampleSkipFilter_Walk_all() {
sf := skipfilter.New(nil, 10)
for i := 0; i < 10; i++ {
sf.Add(i)
}
var n []int
sf.Walk(0, func(v interface{}) bool {
n = append(n, v.(int))
return true
})
fmt.Printf("%d", len(n))
// Output:
// 10
}
func ExampleSkipFilter_Walk_limit() {
sf := skipfilter.New(nil, 10)
for i := 0; i < 10; i++ {
sf.Add(i)
}
var n []int
sf.Walk(0, func(v interface{}) bool {
n = append(n, v.(int))
return len(n) < 5
})
fmt.Printf("%d", len(n))
// Output:
// 5
}
func ExampleSkipFilter_Walk_start() {
sf := skipfilter.New(nil, 10)
for i := 0; i < 10; i++ {
sf.Add(i)
}
var n []int
sf.Walk(5, func(v interface{}) bool {
n = append(n, v.(int))
return true
})
fmt.Printf("%d", len(n))
// Output:
// 5
}