Files
codegirl-games/agentbox/internal/phase1/run_test.go
T

55 lines
1.2 KiB
Go

package phase1
import (
"image"
"image/color"
"image/png"
"os"
"path/filepath"
"testing"
)
func TestSquareCentroid(t *testing.T) {
path := filepath.Join(t.TempDir(), "screenshot.png")
img := image.NewRGBA(image.Rect(0, 0, 200, 100))
green := color.RGBA{R: 0, G: 255, B: 102, A: 255}
for y := 20; y < 60; y++ {
for x := 80; x < 120; x++ {
img.Set(x, y, green)
}
}
writePNG(t, path, img)
got, err := squareCentroid(path)
if err != nil {
t.Fatalf("squareCentroid() error = %v", err)
}
if got.X != 99.5 || got.Y != 39.5 {
t.Fatalf("squareCentroid() = (%.1f, %.1f), want (99.5, 39.5)", got.X, got.Y)
}
}
func TestSquareCentroidRejectsMissingSquare(t *testing.T) {
path := filepath.Join(t.TempDir(), "empty.png")
writePNG(t, path, image.NewRGBA(image.Rect(0, 0, 200, 100)))
if _, err := squareCentroid(path); err == nil {
t.Fatal("squareCentroid() error = nil, want missing-square error")
}
}
func writePNG(t *testing.T, path string, img image.Image) {
t.Helper()
file, err := os.Create(path)
if err != nil {
t.Fatal(err)
}
if err := png.Encode(file, img); err != nil {
_ = file.Close()
t.Fatal(err)
}
if err := file.Close(); err != nil {
t.Fatal(err)
}
}