Add RulesetError test case.
Remove old comments.
This commit is contained in:
parent
2cbf8884bf
commit
accb598e29
4 changed files with 41 additions and 36 deletions
30
ruleset.go
30
ruleset.go
|
|
@ -1,10 +1,36 @@
|
|||
package rules
|
||||
|
||||
type RulesetError string
|
||||
|
||||
func (err RulesetError) Error() string { return string(err) }
|
||||
|
||||
const (
|
||||
MoveUp = "up"
|
||||
MoveDown = "down"
|
||||
MoveRight = "right"
|
||||
MoveLeft = "left"
|
||||
|
||||
BoardSizeSmall = 7
|
||||
BoardSizeMedium = 11
|
||||
BoardSizeLarge = 19
|
||||
|
||||
SnakeMaxHealth = 100
|
||||
SnakeStartSize = 3
|
||||
|
||||
// bvanvugt - TODO: Just return formatted strings instead of codes?
|
||||
NotEliminated = ""
|
||||
EliminatedByCollision = "snake-collision"
|
||||
EliminatedBySelfCollision = "snake-self-collision"
|
||||
EliminatedByOutOfHealth = "out-of-health"
|
||||
EliminatedByHeadToHeadCollision = "head-collision"
|
||||
EliminatedByOutOfBounds = "wall-collision"
|
||||
|
||||
// TODO - Error consts
|
||||
ErrorTooManySnakes = RulesetError("too many snakes for fixed start positions")
|
||||
ErrorNoRoomForSnake = RulesetError("not enough space to place snake")
|
||||
ErrorNoRoomForFood = RulesetError("not enough space to place food")
|
||||
ErrorNoMoveFound = RulesetError("move not provided for snake")
|
||||
ErrorZeroLengthSnake = RulesetError("snake is length zero")
|
||||
)
|
||||
|
||||
type Point struct {
|
||||
|
|
@ -37,7 +63,3 @@ type Ruleset interface {
|
|||
CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
|
||||
IsGameOver(state *BoardState) (bool, error)
|
||||
}
|
||||
|
||||
type RulesetError string
|
||||
|
||||
func (err RulesetError) Error() string { return string(err) }
|
||||
|
|
|
|||
12
ruleset_test.go
Normal file
12
ruleset_test.go
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
package rules
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestRulesetError(t *testing.T) {
|
||||
err := (error)(RulesetError("test error string"))
|
||||
require.Equal(t, "test error string", err.Error())
|
||||
}
|
||||
30
standard.go
30
standard.go
|
|
@ -1,7 +1,6 @@
|
|||
package rules
|
||||
|
||||
import (
|
||||
//"errors"
|
||||
"math/rand"
|
||||
"sort"
|
||||
)
|
||||
|
|
@ -11,33 +10,6 @@ type StandardRuleset struct {
|
|||
MinimumFood int32
|
||||
}
|
||||
|
||||
const (
|
||||
BoardSizeSmall = 7
|
||||
BoardSizeMedium = 11
|
||||
BoardSizeLarge = 19
|
||||
|
||||
SnakeMaxHealth = 100
|
||||
SnakeStartSize = 3
|
||||
|
||||
// bvanvugt - TODO: Just return formatted strings instead of codes?
|
||||
NotEliminated = ""
|
||||
EliminatedByCollision = "snake-collision"
|
||||
EliminatedBySelfCollision = "snake-self-collision"
|
||||
EliminatedByOutOfHealth = "out-of-health"
|
||||
EliminatedByHeadToHeadCollision = "head-collision"
|
||||
EliminatedByOutOfBounds = "wall-collision"
|
||||
|
||||
// TODO - Error consts
|
||||
ErrorTooManySnakes = RulesetError("too many snakes for fixed start positions")
|
||||
ErrorNoRoomForSnake = RulesetError("not enough space to place snake")
|
||||
ErrorNoRoomForFood = RulesetError("not enough space to place food")
|
||||
ErrorNoMoveFound = RulesetError("move not provided for snake")
|
||||
|
||||
// TODO: These two error codes seem equivalent, Do we only need one ?
|
||||
ErrorSizeZeroBody = RulesetError("found snake with zero size body")
|
||||
ErrorZeroLengthSnake = RulesetError("snake is length zero")
|
||||
)
|
||||
|
||||
func (r *StandardRuleset) CreateInitialBoardState(width int32, height int32, snakeIDs []string) (*BoardState, error) {
|
||||
initialBoardState := &BoardState{
|
||||
Height: height,
|
||||
|
|
@ -263,7 +235,7 @@ func (r *StandardRuleset) moveSnakes(b *BoardState, moves []SnakeMove) error {
|
|||
}
|
||||
|
||||
if len(snake.Body) == 0 {
|
||||
return ErrorSizeZeroBody
|
||||
return ErrorZeroLengthSnake
|
||||
}
|
||||
moveFound := false
|
||||
for _, move := range moves {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package rules
|
||||
|
||||
import (
|
||||
//"errors"
|
||||
"math"
|
||||
"math/rand"
|
||||
"testing"
|
||||
|
|
@ -513,7 +512,7 @@ func TestCreateNextBoardState(t *testing.T) {
|
|||
{ID: "one", Move: MoveUp},
|
||||
{ID: "two", Move: MoveDown},
|
||||
},
|
||||
ErrorSizeZeroBody,
|
||||
ErrorZeroLengthSnake,
|
||||
nil,
|
||||
},
|
||||
{
|
||||
|
|
@ -940,7 +939,7 @@ func TestMoveSnakesWrongID(t *testing.T) {
|
|||
|
||||
r := StandardRuleset{}
|
||||
err := r.moveSnakes(b, moves)
|
||||
require.Equal(t, ErrorNoMoveFound, err) // TODO: @bvanvugt is this a place where an "==" comparision should be used ?
|
||||
require.Equal(t, ErrorNoMoveFound, err)
|
||||
}
|
||||
|
||||
func TestMoveSnakesNotEnoughMoves(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue