mirror of
https://github.com/Threnklyn/jira.git
synced 2026-06-01 10:48:27 +02:00
152 lines
3.7 KiB
Go
152 lines
3.7 KiB
Go
package survey
|
|
|
|
import (
|
|
"math/rand"
|
|
"testing"
|
|
)
|
|
|
|
func TestRequired_canSucceedOnPrimitiveTypes(t *testing.T) {
|
|
// a string to test
|
|
str := "hello"
|
|
// if the string is not valid
|
|
if valid := Required(str); valid != nil {
|
|
//
|
|
t.Error("Non null returned an error when one wasn't expected.")
|
|
}
|
|
}
|
|
|
|
func TestRequired_canFailOnPrimitiveTypes(t *testing.T) {
|
|
// a string to test
|
|
str := ""
|
|
// if the string is valid
|
|
if notValid := Required(str); notValid == nil {
|
|
//
|
|
t.Error("Non null did not return an error when one was expected.")
|
|
}
|
|
}
|
|
|
|
func TestRequired_canSucceedOnMap(t *testing.T) {
|
|
// an non-empty map to test
|
|
val := map[string]int{"hello": 1}
|
|
// if the string is not valid
|
|
if valid := Required(val); valid != nil {
|
|
//
|
|
t.Error("Non null returned an error when one wasn't expected.")
|
|
}
|
|
}
|
|
|
|
func TestRequired_canFailOnMap(t *testing.T) {
|
|
// an non-empty map to test
|
|
val := map[string]int{}
|
|
// if the string is valid
|
|
if notValid := Required(val); notValid == nil {
|
|
//
|
|
t.Error("Non null did not return an error when one was expected.")
|
|
}
|
|
}
|
|
|
|
func TestRequired_canSucceedOnLists(t *testing.T) {
|
|
// a string to test
|
|
str := []string{"hello"}
|
|
// if the string is not valid
|
|
if valid := Required(str); valid != nil {
|
|
//
|
|
t.Error("Non null returned an error when one wasn't expected.")
|
|
}
|
|
}
|
|
|
|
func TestRequired_canFailOnLists(t *testing.T) {
|
|
// a string to test
|
|
str := []string{}
|
|
// if the string is not valid
|
|
if notValid := Required(str); notValid == nil {
|
|
//
|
|
t.Error("Non null did not return an error when one was expected.")
|
|
}
|
|
}
|
|
|
|
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
|
|
func randString(n int) string {
|
|
b := make([]byte, n)
|
|
for i := range b {
|
|
b[i] = letterBytes[rand.Int63()%int64(len(letterBytes))]
|
|
}
|
|
return string(b)
|
|
}
|
|
|
|
func TestMaxLength(t *testing.T) {
|
|
// the string to test
|
|
testStr := randString(150)
|
|
// validate the string
|
|
if err := MaxLength(140)(testStr); err == nil {
|
|
t.Error("No error returned with input greater than 150 characters.")
|
|
}
|
|
}
|
|
|
|
func TestMinLength(t *testing.T) {
|
|
// validate the string
|
|
if err := MinLength(12)(randString(10)); err == nil {
|
|
t.Error("No error returned with input less than 12 characters.")
|
|
}
|
|
}
|
|
|
|
func TestMinLength_onInt(t *testing.T) {
|
|
// validate the string
|
|
if err := MinLength(12)(1); err == nil {
|
|
t.Error("No error returned when enforcing length on int.")
|
|
}
|
|
}
|
|
|
|
func TestMaxLength_onInt(t *testing.T) {
|
|
// validate the string
|
|
if err := MaxLength(12)(1); err == nil {
|
|
t.Error("No error returned when enforcing length on int.")
|
|
}
|
|
}
|
|
|
|
func TestComposeValidators_passes(t *testing.T) {
|
|
// create a validator that requires a string of no more than 10 characters
|
|
valid := ComposeValidators(
|
|
Required,
|
|
MaxLength(10),
|
|
)
|
|
|
|
str := randString(12)
|
|
// if a valid string fails
|
|
if err := valid(str); err == nil {
|
|
// the test failed
|
|
t.Error("Composed validator did not pass. Wanted string less than 10 chars, passed in", str)
|
|
}
|
|
|
|
}
|
|
|
|
func TestComposeValidators_failsOnFirstError(t *testing.T) {
|
|
// create a validator that requires a string of no more than 10 characters
|
|
valid := ComposeValidators(
|
|
Required,
|
|
MaxLength(10),
|
|
)
|
|
|
|
// if an empty string passes
|
|
if err := valid(""); err == nil {
|
|
// the test failed
|
|
t.Error("Composed validator did not fail on first test like expected.")
|
|
}
|
|
}
|
|
|
|
func TestComposeValidators_failsOnSubsequentValidators(t *testing.T) {
|
|
// create a validator that requires a string of no more than 10 characters
|
|
valid := ComposeValidators(
|
|
Required,
|
|
MaxLength(10),
|
|
)
|
|
|
|
str := randString(12)
|
|
// if a string longer than 10 passes
|
|
if err := valid(str); err == nil {
|
|
// the test failed
|
|
t.Error("Composed validator did not fail on second first test like expected. Should fail max length > 10 :", str)
|
|
}
|
|
}
|