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

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