Go binary/server for helping run/build sessions for the Maze Rats TTRPG
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

52 lines
1.2 KiB

package dice
import (
"errors"
"reflect"
"testing"
)
func TestRoll(t *testing.T) {
roller := NewRoller(1)
result, err := roller.Roll("2d6")
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(result, []int{6, 4}) {
t.Errorf("Expected roll to equal [6, 4], but got %#v", result)
}
}
func TestRollToJSON(t *testing.T) {
r := NewRoller(1)
roll, _ := r.Roll("2d6")
result, err := RollToJSON(roll)
if err != nil {
t.Error(err)
}
expectedResult := `{"results":[6,4]}`
if !reflect.DeepEqual([]byte(expectedResult), result) {
t.Errorf("Expected '%v', but got '%v'", string(expectedResult), string(result))
}
}
func TestParseRoll(t *testing.T) {
_, err := parseRoll("1e6")
expectedMsg := "Must pass string matching '[1-9][0-9]*d[1-9]+' you passed '1e6'"
expectedError := errors.New(expectedMsg)
if err.Error() != expectedError.Error() {
t.Errorf("Expected error message: %v; got: %v", expectedError, err)
}
result, err := parseRoll("2d10")
if err != nil {
t.Errorf("Expected 'parseRoll(\"2d10\")' to not error, got %v", err)
}
if result.count != 2 {
t.Errorf("Expected 'result.count' to equal '2'; got: %v", result.count)
}
if result.diceType != 10 {
t.Errorf("Expected 'result.count' to equal '10'; got: %v", result.count)
}
}