Co-authored-by: codegirl007 <codegirl-007@users.noreply.github.com>
55 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|