package judge import ( "testing" "github.com/stretchr/testify/assert" ) type MockJudge struct { name string } func (mj *MockJudge) Name() string { return mj.name } func (mj *MockJudge) Judge(taskID string, input map[string]interface{}) (map[string]interface{}, error) { return map[string]interface{}{"approved": true}, nil } func (mj *MockJudge) Validate() error { return nil } func TestRegisterJudge(t *testing.T) { registry := NewCustomJudgeRegistry() judge := &MockJudge{name: "security-auditor"} err := registry.Register("security-auditor", judge) assert.NoError(t, err) retrieved, exists := registry.Get("security-auditor") assert.True(t, exists) assert.Equal(t, "security-auditor", retrieved.Name()) } func TestJudge(t *testing.T) { registry := NewCustomJudgeRegistry() judge := &MockJudge{name: "security-auditor"} registry.Register("security-auditor", judge) result, err := registry.Judge("security-auditor", "T0.1", map[string]interface{}{}) assert.NoError(t, err) approved, ok := result["approved"].(bool) assert.True(t, ok) assert.True(t, approved) } func TestListJudges(t *testing.T) { registry := NewCustomJudgeRegistry() for i := 0; i < 3; i++ { registry.Register("judge-"+string(rune(48+i)), &MockJudge{}) } judges := registry.ListJudges() assert.Equal(t, 3, len(judges)) } func TestSetDefault(t *testing.T) { registry := NewCustomJudgeRegistry() judge := &MockJudge{name: "default"} registry.SetDefaultJudge(judge) assert.NotNil(t, registry.GetDefaultJudge()) } func TestUnregister(t *testing.T) { registry := NewCustomJudgeRegistry() judge := &MockJudge{name: "test"} registry.Register("test", judge) err := registry.Unregister("test") assert.NoError(t, err) _, exists := registry.Get("test") assert.False(t, exists) }