(t *testing.T)
| 50 | } |
| 51 | |
| 52 | func TestPeerSetAddRemoveOne(t *testing.T) { |
| 53 | t.Parallel() |
| 54 | |
| 55 | peerSet := NewPeerSet() |
| 56 | |
| 57 | var peerList []Peer |
| 58 | for i := 0; i < 5; i++ { |
| 59 | p := newMockPeer(net.IP{127, 0, 0, byte(i)}) |
| 60 | if err := peerSet.Add(p); err != nil { |
| 61 | t.Error(err) |
| 62 | } |
| 63 | peerList = append(peerList, p) |
| 64 | } |
| 65 | |
| 66 | n := len(peerList) |
| 67 | // 1. Test removing from the front |
| 68 | for i, peerAtFront := range peerList { |
| 69 | removed := peerSet.Remove(peerAtFront) |
| 70 | assert.True(t, removed) |
| 71 | wantSize := n - i - 1 |
| 72 | for j := 0; j < 2; j++ { |
| 73 | assert.Equal(t, false, peerSet.Has(peerAtFront.ID()), "#%d Run #%d: failed to remove peer", i, j) |
| 74 | assert.Equal(t, wantSize, peerSet.Size(), "#%d Run #%d: failed to remove peer and decrement size", i, j) |
| 75 | // Test the route of removing the now non-existent element |
| 76 | removed := peerSet.Remove(peerAtFront) |
| 77 | assert.False(t, removed) |
| 78 | } |
| 79 | } |
| 80 | |
| 81 | // 2. Next we are testing removing the peer at the end |
| 82 | // a) Replenish the peerSet |
| 83 | for _, peer := range peerList { |
| 84 | if err := peerSet.Add(peer); err != nil { |
| 85 | t.Error(err) |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | // b) In reverse, remove each element |
| 90 | for i := n - 1; i >= 0; i-- { |
| 91 | peerAtEnd := peerList[i] |
| 92 | removed := peerSet.Remove(peerAtEnd) |
| 93 | assert.True(t, removed) |
| 94 | assert.Equal(t, false, peerSet.Has(peerAtEnd.ID()), "#%d: failed to remove item at end", i) |
| 95 | assert.Equal(t, i, peerSet.Size(), "#%d: differing sizes after peerSet.Remove(atEndPeer)", i) |
| 96 | } |
| 97 | } |
| 98 | |
| 99 | func TestPeerSetAddRemoveMany(t *testing.T) { |
| 100 | t.Parallel() |
nothing calls this directly
no test coverage detected