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
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)
|
|
}
|
|
}
|
|
|