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.
123 lines
2.6 KiB
123 lines
2.6 KiB
2 years ago
|
// Copyright 2017 Eric Zhou. All rights reserved.
|
||
|
// Use of this source code is governed by a MIT-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package base64Captcha
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func Test_newAudio(t *testing.T) {
|
||
|
type args struct {
|
||
|
id string
|
||
|
digits []byte
|
||
|
lang string
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
want *ItemAudio
|
||
|
}{
|
||
|
{"zh3", args{RandomId(), randomDigits(3), "zh"}, nil},
|
||
|
{"en4", args{RandomId(), randomDigits(4), "en"}, nil},
|
||
|
{"ru2", args{RandomId(), randomDigits(2), "ru"}, nil},
|
||
|
{"jp5", args{RandomId(), randomDigits(5), "jp"}, nil},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
got := newAudio(tt.args.id, tt.args.digits, tt.args.lang)
|
||
|
if got == nil {
|
||
|
t.Errorf("newAudio() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestItemAudio_encodedLen(t *testing.T) {
|
||
|
ia := newAudio(RandomId(), randomDigits(3), "zh")
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
a *ItemAudio
|
||
|
want int
|
||
|
}{
|
||
|
{"encode", ia, 1},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
if got := tt.a.encodedLen(); got < tt.want {
|
||
|
t.Errorf("ItemAudio.encodedLen() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestItemAudio_longestDigitSndLen(t *testing.T) {
|
||
|
baseS := "0123456789abcdef"
|
||
|
base := int64(len(baseS))
|
||
|
num := time.Now().UnixNano()
|
||
|
fmt.Printf("%x\n", num)
|
||
|
newB := []byte{}
|
||
|
for {
|
||
|
idx := num % base
|
||
|
bbb := []byte{byte(baseS[idx])}
|
||
|
newB = append(bbb, newB...)
|
||
|
num = num / base
|
||
|
if num == 0 {
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
t.Log(string(newB))
|
||
|
}
|
||
|
|
||
|
func TestItemAudio_WriteTo(t *testing.T) {
|
||
|
ia := newAudio(RandomId(), randomDigits(3), "zh")
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
a *ItemAudio
|
||
|
wantN int64
|
||
|
wantW string
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{"one", ia, 0, "", false},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
w := &bytes.Buffer{}
|
||
|
gotN, err := tt.a.WriteTo(w)
|
||
|
if (err != nil) != tt.wantErr {
|
||
|
t.Errorf("ItemAudio.WriteTo() error = %v, wantErr %v", err, tt.wantErr)
|
||
|
return
|
||
|
}
|
||
|
if gotN < 1 {
|
||
|
t.Errorf("ItemAudio.WriteTo() = %v, want %v", gotN, tt.wantN)
|
||
|
}
|
||
|
if gotW := w.String(); len(gotW) < 1 {
|
||
|
t.Errorf("ItemAudio.WriteTo() = %v, want %v", gotW, tt.wantW)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestItemAudio_EncodeB64string(t *testing.T) {
|
||
|
ia := newAudio(RandomId(), randomDigits(5), "en")
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
a *ItemAudio
|
||
|
want string
|
||
|
}{
|
||
|
{"b64", ia, ""},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
if got := tt.a.EncodeB64string(); len(got) < 1 {
|
||
|
t.Errorf("ItemAudio.EncodeB64string() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|