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.
184 lines
3.6 KiB
184 lines
3.6 KiB
2 years ago
|
package base64Captcha
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestRandText(t *testing.T) {
|
||
|
type args struct {
|
||
|
size int
|
||
|
sourceChars string
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
want string
|
||
|
}{
|
||
|
{"", args{0, "foo"}, ""},
|
||
|
{"", args{1, "aaa"}, "a"},
|
||
|
{"", args{2, "bbb"}, "bb"},
|
||
|
{"", args{3, "bbb"}, "bbb"},
|
||
|
{"", args{3, "b"}, "bbb"},
|
||
|
{"", args{4, "b"}, "bbbb"},
|
||
|
{"", args{4, ""}, ""},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
if got := RandText(tt.args.size, tt.args.sourceChars); got != tt.want {
|
||
|
t.Errorf("RandText() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestRandom(t *testing.T) {
|
||
|
type args struct {
|
||
|
min int64
|
||
|
max int64
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
}{
|
||
|
{"", args{-10, 10}},
|
||
|
{"", args{-1, 5}},
|
||
|
{"", args{0, 15}},
|
||
|
{"", args{10, 14}},
|
||
|
{"", args{10, 10}},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
got := random(tt.args.min, tt.args.max)
|
||
|
// if out of bound then error
|
||
|
if got < float64(tt.args.min) || got > float64(tt.args.max) {
|
||
|
t.Errorf("RandText() = %v, out of range", got)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestRandDarkAndLightColor(t *testing.T) {
|
||
|
// Test RandColor
|
||
|
for i := 0; i < 100; i++ {
|
||
|
rgbA := RandColor()
|
||
|
if rgbA.R < 0 || rgbA.R > 255 ||
|
||
|
rgbA.B < 0 || rgbA.B > 255 ||
|
||
|
rgbA.G < 0 || rgbA.G > 255 {
|
||
|
t.Errorf("RandText() = %v, out of range", rgbA)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Test RandLightColor
|
||
|
for i := 0; i < 100; i++ {
|
||
|
rgbA := RandLightColor()
|
||
|
if rgbA.R < 200 || rgbA.R > 255 ||
|
||
|
rgbA.B < 200 || rgbA.B > 255 ||
|
||
|
rgbA.G < 200 || rgbA.G > 255 {
|
||
|
t.Errorf("RandText() = %v, out of range", rgbA)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Test RandDeepColor
|
||
|
for i := 0; i < 100; i++ {
|
||
|
rgbA := RandDeepColor()
|
||
|
if rgbA.R < 0 || rgbA.R > 255 ||
|
||
|
rgbA.B < 0 || rgbA.B > 255 ||
|
||
|
rgbA.G < 0 || rgbA.G > 255 {
|
||
|
t.Errorf("RandText() = %v, out of range", rgbA)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestRand(t *testing.T) {
|
||
|
// test rand int Range
|
||
|
type args struct {
|
||
|
from int
|
||
|
to int
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
}{
|
||
|
{"", args{-10, 10}},
|
||
|
{"", args{-1, 5}},
|
||
|
{"", args{0, 15}},
|
||
|
{"", args{10, 14}},
|
||
|
{"", args{10, 10}},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
got := randIntRange(tt.args.from, tt.args.to)
|
||
|
|
||
|
// if out of bound then error
|
||
|
if got < tt.args.from || got > tt.args.to {
|
||
|
t.Errorf("RandText() = %v, out of range", got)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// test rand float Range
|
||
|
|
||
|
type fargs struct {
|
||
|
from float64
|
||
|
to float64
|
||
|
}
|
||
|
tests2 := []struct {
|
||
|
name string
|
||
|
arg fargs
|
||
|
}{
|
||
|
{"", fargs{-10.0, 10.1}},
|
||
|
{"", fargs{-1.0, 5.2}},
|
||
|
{"", fargs{0, 15.3}},
|
||
|
{"", fargs{10.1, 14.3}},
|
||
|
{"", fargs{10.5, 10.5}},
|
||
|
}
|
||
|
for _, tt := range tests2 {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
got := randFloat64Range(tt.arg.from, tt.arg.to)
|
||
|
|
||
|
// if out of bound then error
|
||
|
if got < tt.arg.from || got > tt.arg.to {
|
||
|
t.Errorf("RandText() = %v, out of range", got)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestRandomID(t *testing.T) {
|
||
|
id := RandomId()
|
||
|
if len(id) != idLen {
|
||
|
t.Errorf("Wrong length got %d, want %d", len(id), idLen)
|
||
|
}
|
||
|
for _, val := range id {
|
||
|
if !bytes.ContainsRune(idChars, val) {
|
||
|
t.Errorf("got %v, want %v", idChars, val)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestRandBytes(t *testing.T) {
|
||
|
type args struct {
|
||
|
n int
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
want int
|
||
|
}{
|
||
|
{"", args{5}, 5},
|
||
|
{"", args{0}, 0},
|
||
|
{"", args{1}, 1},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
got := randBytes(tt.args.n)
|
||
|
|
||
|
// if out of bound then error
|
||
|
if len(got) != tt.want {
|
||
|
t.Errorf("randBytes() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|