package tools import ( "net/http" "testing" ) type fakeTool struct{ key, name string } func (f fakeTool) Definition() Definition { return Definition{Key: f.key, Name: f.name} } func (fakeTool) StudentHandler() http.Handler { return http.NotFoundHandler() } func TestRegistry(t *testing.T) { r := NewRegistry() if err := r.Register(fakeTool{}); err == nil { t.Fatal("empty key accepted") } if err := r.Register(fakeTool{key: "b", name: "Beta"}); err != nil { t.Fatal(err) } if err := r.Register(fakeTool{key: "a", name: "Alpha"}); err != nil { t.Fatal(err) } if err := r.Register(fakeTool{key: "a", name: "Again"}); err == nil { t.Fatal("duplicate accepted") } if got := r.List(); len(got) != 2 || got[0].Definition().Key != "a" { t.Fatalf("unstable list: %#v", got) } if _, err := r.Get("missing"); err != ErrNotFound { t.Fatalf("got %v", err) } }