mirror of
https://github.com/lukaszraczylo/llm-testbench.git
synced 2026-10-12 00:45:19 +00:00
Framework runs a category/subcategory test catalog against multiple LLMs through an OpenAI-compatible endpoint. Deterministic evaluators score each response. Reports render as table, markdown, or JSON.
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package eval
|
|
|
|
import "testing"
|
|
|
|
func TestExtractCodeBlock(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
response string
|
|
lang string
|
|
want string
|
|
}{
|
|
{
|
|
name: "tagged block matches lang",
|
|
response: "Here:\n```go\nfunc F() {}\n```\nDone.",
|
|
lang: "go",
|
|
want: "func F() {}",
|
|
},
|
|
{
|
|
name: "case insensitive lang tag",
|
|
response: "```GO\nfunc F() {}\n```",
|
|
lang: "go",
|
|
want: "func F() {}",
|
|
},
|
|
{
|
|
name: "prefers matching lang over other tagged blocks",
|
|
response: "```json\n{\"x\":1}\n```\n```go\nfunc F() {}\n```",
|
|
lang: "go",
|
|
want: "func F() {}",
|
|
},
|
|
{
|
|
name: "falls back to untagged block",
|
|
response: "```\nfunc F() {}\n```",
|
|
lang: "go",
|
|
want: "func F() {}",
|
|
},
|
|
{
|
|
name: "no fences falls back to whole response",
|
|
response: " func F() {} ",
|
|
lang: "go",
|
|
want: "func F() {}",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := ExtractCodeBlock(tt.response, tt.lang)
|
|
if got != tt.want {
|
|
t.Errorf("ExtractCodeBlock(%q, %q) = %q, want %q", tt.response, tt.lang, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|