106 lines
2.3 KiB
Go
106 lines
2.3 KiB
Go
package rectangle_test
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
|
|
"github.com/StevanFreeborn/advent-of-code-2025/cmd/09/rectangle"
|
|
"github.com/StevanFreeborn/advent-of-code-2025/internal/position"
|
|
)
|
|
|
|
func TestFrom(t *testing.T) {
|
|
cornerOne := position.From(1, 2)
|
|
cornerTwo := position.From(3, 4)
|
|
|
|
expectedCorners := []position.Position{
|
|
cornerOne,
|
|
cornerTwo,
|
|
position.From(1, 4),
|
|
position.From(3, 2),
|
|
}
|
|
|
|
result := rectangle.From(cornerOne, cornerTwo)
|
|
|
|
if slices.Equal(result.Corners(), expectedCorners) == false {
|
|
t.Errorf("Expected corners %v, but got %v", expectedCorners, result.Corners())
|
|
}
|
|
}
|
|
|
|
func TestMaxRow(t *testing.T) {
|
|
expectedMaxRow := 3
|
|
|
|
cornerOne := position.From(1, 2)
|
|
cornerTwo := position.From(3, 4)
|
|
|
|
result := rectangle.From(cornerOne, cornerTwo).MaxRow()
|
|
|
|
if result != expectedMaxRow {
|
|
t.Errorf("Expected max row %d, but got %d", expectedMaxRow, result)
|
|
}
|
|
}
|
|
|
|
func TestMinRow(t *testing.T) {
|
|
expectedMinRow := 1
|
|
|
|
cornerOne := position.From(1, 2)
|
|
cornerTwo := position.From(3, 4)
|
|
|
|
result := rectangle.From(cornerOne, cornerTwo).MinRow()
|
|
|
|
if result != expectedMinRow {
|
|
t.Errorf("Expected min row %d, but got %d", expectedMinRow, result)
|
|
}
|
|
}
|
|
|
|
func TestMaxColumn(t *testing.T) {
|
|
expectedMaxColumn := 4
|
|
|
|
cornerOne := position.From(1, 2)
|
|
cornerTwo := position.From(3, 4)
|
|
|
|
result := rectangle.From(cornerOne, cornerTwo).MaxColumn()
|
|
|
|
if result != expectedMaxColumn {
|
|
t.Errorf("Expected max column %d, but got %d", expectedMaxColumn, result)
|
|
}
|
|
}
|
|
|
|
func TestMinColumn(t *testing.T) {
|
|
expectedMinColumn := 2
|
|
|
|
cornerOne := position.From(1, 2)
|
|
cornerTwo := position.From(3, 4)
|
|
|
|
result := rectangle.From(cornerOne, cornerTwo).MinColumn()
|
|
|
|
if result != expectedMinColumn {
|
|
t.Errorf("Expected min column %d, but got %d", expectedMinColumn, result)
|
|
}
|
|
}
|
|
|
|
func TestArea(t *testing.T) {
|
|
expectedArea := 9
|
|
|
|
cornerOne := position.From(1, 2)
|
|
cornerTwo := position.From(3, 4)
|
|
|
|
result := rectangle.From(cornerOne, cornerTwo).Area()
|
|
|
|
if result != expectedArea {
|
|
t.Errorf("Expected area %d, but got %d", expectedArea, result)
|
|
}
|
|
}
|
|
|
|
func TestCenter(t *testing.T) {
|
|
expectedCenter := position.From(2, 3)
|
|
|
|
cornerOne := position.From(1, 2)
|
|
cornerTwo := position.From(3, 4)
|
|
|
|
result := rectangle.From(cornerOne, cornerTwo).Center()
|
|
|
|
if result != expectedCenter {
|
|
t.Errorf("Expected center %v, but got %v", expectedCenter, result)
|
|
}
|
|
}
|