Codex first iteration

This commit is contained in:
2026-07-12 02:56:51 +08:00
parent 16c626fbd7
commit 7cb409f5a6
20 changed files with 1771 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
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)
}
}