Reorganize state

This commit is contained in:
Madison Rye Progress
2025-08-26 22:26:08 -07:00
parent b87631cb77
commit 29bd181e4f
13 changed files with 747 additions and 191 deletions

107
state/cursor_test.go Normal file
View File

@ -0,0 +1,107 @@
package state
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestCursor(t *testing.T) {
Convey("Given a cursor", t, func() {
s := New(4, 4)
So(*s.cursor, ShouldResemble, Point{0, 0})
Convey("When moving cell to cell", func() {
Convey("You can move down", func() {
s.CursorCellDown()
So(*s.cursor, ShouldResemble, Point{0, 1})
})
Convey("You can move up", func() {
s.CursorCellDown()
s.CursorCellUp()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can move right", func() {
s.CursorCellRight()
So(*s.cursor, ShouldResemble, Point{1, 0})
})
Convey("You can move left", func() {
s.CursorCellRight()
s.CursorCellLeft()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can't move up beyond the top", func() {
s.CursorCellUp()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can't move left beyond the edge", func() {
s.CursorCellLeft()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can't move down below the bottom", func() {
s.cursor = &Point{15, 15}
s.CursorCellDown()
So(*s.cursor, ShouldResemble, Point{15, 15})
})
Convey("You can't move right beyond the edge", func() {
s.cursor = &Point{15, 15}
s.CursorCellRight()
So(*s.cursor, ShouldResemble, Point{15, 15})
})
})
Convey("When moving section to section", func() {
Convey("You can move down", func() {
s.CursorSectionDown()
So(*s.cursor, ShouldResemble, Point{0, 4})
})
Convey("You can move up", func() {
s.CursorSectionDown()
s.CursorSectionUp()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can move right", func() {
s.CursorSectionRight()
So(*s.cursor, ShouldResemble, Point{4, 0})
})
Convey("You can move left", func() {
s.CursorSectionRight()
s.CursorSectionLeft()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can't move up beyond the top", func() {
s.CursorCellUp()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can't move left beyond the edge", func() {
s.CursorCellLeft()
So(*s.cursor, ShouldResemble, Point{0, 0})
})
Convey("You can't move down below the bottom", func() {
s.cursor = &Point{15, 15}
s.CursorSectionDown()
So(*s.cursor, ShouldResemble, Point{15, 15})
})
Convey("You can't move right beyond the edge", func() {
s.cursor = &Point{15, 15}
s.CursorSectionRight()
So(*s.cursor, ShouldResemble, Point{15, 15})
})
})
})
}