package locRIB import ( "testing" "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/route" "github.com/stretchr/testify/assert" ) type pfxPath struct { pfx net.Prefix path *route.Path } type containsPfxPathTestcase struct { in []pfxPath check pfxPath expected bool } func TestContainsPfxPath(t *testing.T) { testCases := []containsPfxPathTestcase{ { in: []pfxPath{}, check: pfxPath{ pfx: net.NewPfx(1, 32), path: nil, }, expected: false, }, // Not equal path { in: []pfxPath{ { pfx: net.NewPfx(1, 32), path: &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ NextHop: 2, }, }, }, }, check: pfxPath{ pfx: net.NewPfx(1, 32), path: nil, }, expected: false, }, // Equal { in: []pfxPath{ { pfx: net.NewPfx(1, 32), path: &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ NextHop: 2, }, }, }, }, check: pfxPath{ pfx: net.NewPfx(1, 32), path: &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ NextHop: 2, }, }, }, expected: true, }, } for i, tc := range testCases { rib := New() for _, p := range tc.in { err := rib.AddPath(p.pfx, p.path) assert.Nil(t, err, "could not fill rib in testcase %v", i) } contains := rib.ContainsPfxPath(tc.check.pfx, tc.check.path) assert.Equal(t, tc.expected, contains, "mismatch in testcase %v", i) } } func TestLocRIB_RemovePathUnknown(t *testing.T) { rib := New() assert.True(t, rib.RemovePath(net.NewPfx(1, 32), &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ NextHop: 2, }, })) }