* DEV-1761: Clean up Ruleset interface (#115) * remove legacy ruleset types and simplify ruleset interface * remove unnecessary settings argument from Ruleset interface * decouple rules.Settings from client API and store settings as strings * DEV 1761: Add new BoardState and Point fields (#117) * add Point.TTL, Point.Value, GameState and PointState to BoardState * allow maps to access BoardState.GameState,PointState * add PreUpdateBoard and refactor snail_mode with it * fix bug where an extra turn was printed to the console * fix formatting * fix lint errors Co-authored-by: JonathanArns <jonathan.arns@googlemail.com>
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package rules
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
// included to allow using -update-fixtures for every package without errors
|
|
|
|
_ "github.com/BattlesnakeOfficial/rules/test"
|
|
)
|
|
|
|
func TestRulesetError(t *testing.T) {
|
|
err := (error)(RulesetError("test error string"))
|
|
require.Equal(t, "test error string", err.Error())
|
|
}
|
|
|
|
func TestRulesetBuilderInternals(t *testing.T) {
|
|
// test Royale with seed
|
|
rsb := NewRulesetBuilder().WithSeed(3)
|
|
require.Equal(t, int64(3), rsb.seed)
|
|
require.Equal(t, GameTypeRoyale, rsb.NamedRuleset(GameTypeRoyale).Name())
|
|
require.Equal(t, int64(3), rsb.NamedRuleset(GameTypeRoyale).Settings().Seed())
|
|
|
|
// test parameter merging
|
|
rsb = NewRulesetBuilder().
|
|
WithParams(map[string]string{
|
|
"someSetting": "some value",
|
|
"anotherSetting": "another value",
|
|
}).
|
|
WithParams(map[string]string{
|
|
"anotherSetting": "overridden value",
|
|
"aNewSetting": "a new value",
|
|
})
|
|
|
|
require.Equal(t, map[string]string{
|
|
"someSetting": "some value",
|
|
"anotherSetting": "overridden value",
|
|
"aNewSetting": "a new value",
|
|
}, rsb.params, "multiple calls to WithParams should merge parameters")
|
|
}
|