go_dreamfactory/comm/error_test.go
2023-08-09 11:28:34 +08:00

69 lines
1.2 KiB
Go

package comm
import (
"crypto/rand"
"errors"
"fmt"
"go_dreamfactory/pb"
"math/big"
"strings"
"testing"
)
func TestErro(t *testing.T) {
err := findUser("ddada")
if err != nil {
var customErr = new(CustomError)
if errors.As(err, &customErr) {
if customErr.Code == pb.ErrorCode_UserSessionNobeing {
fmt.Println("用户不存在")
}
}
}
}
func findUser(uid string) error {
if strings.Contains(uid, "z_") {
return NewCustomError(pb.ErrorCode_UserSessionNobeing)
}
return nil
}
// / 参数 权重数组 返回值 数组下标
func Test_GetRandWs(t *testing.T) {
results := make([]int, 0)
sz := []int32{100, 50, 200, 90, 20}
num := 2
if len(sz) > 0 {
var _totalW int64 // 总权重
var _tmpW int64 // 临时权重
for _, v := range sz {
_totalW += int64(v)
}
for i := 0; i < int(num); i++ {
_tmpW = 0
// 随机权重
n, _ := rand.Int(rand.Reader, big.NewInt(_totalW))
for i, v := range sz {
jump := false
for _, v1 := range results {
if i == v1 {
jump = true
break
}
}
if !jump {
_tmpW += int64(v)
if n.Int64() < _tmpW {
results = append(results, i)
_totalW -= int64(v)
break
}
}
}
}
}
fmt.Printf("results:%v", results)
}