mirror of
https://github.com/Threnklyn/jira.git
synced 2026-06-07 13:33:32 +02:00
rewrite checkpoint
This commit is contained in:
+151
@@ -0,0 +1,151 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user