8 "github.com/google/btree"
9 "github.com/stretchr/testify/assert"
12 func TestPrioritizedPeers(t *testing.T) {
13 pp := prioritizedPeers{
15 getPrio: func(p Peer) peerPriority {
16 return bep40PriorityIgnoreError(p.addr(), ipPort{IP: net.ParseIP("0.0.0.0")})
19 _, ok := pp.DeleteMin()
20 assert.Panics(t, func() { pp.PopMax() })
23 {IP: net.ParseIP("1.2.3.4")},
24 {IP: net.ParseIP("1::2")},
25 {IP: net.ParseIP("")},
27 for i, p := range ps {
28 t.Logf("peer %d priority: %08x\n", i, pp.getPrio(p))
29 assert.False(t, pp.Add(p))
30 assert.True(t, pp.Add(p))
31 assert.Equal(t, i+1, pp.Len())
33 sort.Slice(ps, func(i, j int) bool {
34 return pp.getPrio(ps[i]) < pp.getPrio(ps[j])
36 pop := func(expected *Peer) {
38 assert.Panics(t, func() { pp.PopMax() })
40 assert.Equal(t, *expected, pp.PopMax())
43 min := func(expected *Peer) {
44 i, ok := pp.DeleteMin()
49 assert.Equal(t, *expected, i.p)