diff --git a/route/route.go b/route/route.go index b3de6203022600719a165b58e31f92f00d27f305..90bc3972a9da22eec7e5901bb002fe0be7301b47 100644 --- a/route/route.go +++ b/route/route.go @@ -80,7 +80,7 @@ func (r *Route) AddPath(p *Path) { r.paths = append(r.paths, p) } -// RemovePath removes path `rm` from route `r`. Returns length of path list after removing path `rm` +// RemovePath removes path `p` from route `r`. Returns length of path list after removing path `rm` func (r *Route) RemovePath(p *Path) int { if p == nil { return len(r.paths) diff --git a/routingtable/client_manager.go b/routingtable/client_manager.go index 0c6dc5ba174be01bbbc422fc8f37e28b20a43f51..bb86111d6f89cd8d98d15396e211050dfe8872ba 100644 --- a/routingtable/client_manager.go +++ b/routingtable/client_manager.go @@ -32,7 +32,8 @@ func (c *ClientManager) Unregister(client RouteTableClient) { } // Clients returns a list of registered clients -func (c *ClientManager) Clients() (ret []RouteTableClient) { +func (c *ClientManager) Clients() []RouteTableClient { + ret := make([]RouteTableClient, 0) for rtc := range c.clients { ret = append(ret, rtc) } diff --git a/routingtable/client_manager_test.go b/routingtable/client_manager_test.go new file mode 100644 index 0000000000000000000000000000000000000000..d05370ce55e0a3d4608e131b0b371b6ef5e6f4fc --- /dev/null +++ b/routingtable/client_manager_test.go @@ -0,0 +1,66 @@ +package routingtable + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/bio-routing/bio-rd/net" + "github.com/bio-routing/bio-rd/route" +) + +type MockClient struct { + foo int +} + +func (m MockClient) AddPath(net.Prefix, *route.Path) error { + return nil +} +func (m MockClient) RemovePath(net.Prefix, *route.Path) bool { + return false +} +func (m MockClient) UpdateNewClient(RouteTableClient) error { + return nil +} + +func TestClients(t *testing.T) { + tests := []struct { + name string + clients []MockClient + expected []RouteTableClient + }{ + { + name: "No clients", + clients: []MockClient{}, + expected: []RouteTableClient{}, + }, + { + name: "No clients", + clients: []MockClient{ + MockClient{ + foo: 1, + }, + MockClient{ + foo: 2, + }, + }, + expected: []RouteTableClient{ + MockClient{ + foo: 1, + }, + MockClient{ + foo: 2, + }, + }, + }, + } + + for _, test := range tests { + cm := NewClientManager(MockClient{}) + for _, client := range test.clients { + cm.Register(client) + } + ret := cm.Clients() + assert.Equal(t, test.expected, ret) + } +}