go_dreamfactory/modules/hero/hero_test.go

161 lines
4.5 KiB
Go

package hero_test
import (
"context"
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego"
"go_dreamfactory/lego/base/rpcx"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules/equipment"
"go_dreamfactory/modules/hero"
"go_dreamfactory/modules/items"
"go_dreamfactory/modules/task"
"go_dreamfactory/modules/user"
"go_dreamfactory/pb"
"go_dreamfactory/services"
"go_dreamfactory/sys/configure"
"go_dreamfactory/sys/db"
"reflect"
"strings"
"testing"
"time"
"github.com/golang/protobuf/ptypes"
"go.mongodb.org/mongo-driver/bson/primitive"
flag "github.com/spf13/pflag"
)
var service core.IService
var s_gateComp comm.ISC_GateRouteComp = services.NewGateRouteComp()
var module = new(hero.Hero)
type TestService struct {
rpcx.RPCXService
}
func newService(ops ...rpcx.Option) core.IService {
s := new(TestService)
s.Configure(ops...)
return s
}
//初始化相关系统
func (this *TestService) InitSys() {
this.RPCXService.InitSys()
if err := db.OnInit(this.GetSettings().Sys["db"]); err != nil {
panic(fmt.Sprintf("init sys.db err: %s", err.Error()))
} else {
log.Infof("init sys.db success!")
}
if err := configure.OnInit(this.GetSettings().Sys["configure"], configure.SetConfigPath("F:/work/go/go_dreamfactory/bin/json")); err != nil {
panic(fmt.Sprintf("init sys.configure err: %s", err.Error()))
} else {
log.Infof("init sys.configure success!")
}
}
func Test_Main(t *testing.T) {
oldHero := new(pb.DBHero)
oldHero.Lv = 2
new := copyPoint(oldHero)
fmt.Printf("%v", new)
oldHero.Lv = 8
currentTime := time.Unix(1637420154, 0)
startTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, currentTime.Location())
fmt.Print(startTime.Unix())
service = newService(
rpcx.SetConfPath("../../bin/conf/worker_1.yaml"),
)
service.OnInstallComp( //装备组件
s_gateComp, //此服务需要接受用户的消息 需要装备网关组件
)
go func() {
lego.Run(service, //运行模块
module,
items.NewModule(),
user.NewModule(),
equipment.NewModule(),
task.NewModule(),
)
}()
time.Sleep(time.Second * 2)
}
func GetMap() map[int32]int32 {
return nil
}
func copyPoint(m *pb.DBHero) *pb.DBHero {
vt := reflect.TypeOf(m).Elem()
fmt.Println(vt)
newoby := reflect.New(vt)
newoby.Elem().Set(reflect.ValueOf(m).Elem())
newoby.Interface().(*pb.DBHero).Lv = 1111
return newoby.Interface().(*pb.DBHero)
}
func CloneNewHero(hero *pb.DBHero) (newHero *pb.DBHero) {
newHero = new(pb.DBHero)
*newHero = *hero
newHero.Block = true
newHero.Lv = 100
newHero.Id = primitive.NewObjectID().Hex()
return
}
func wordSepNormalizeFunc(f *flag.FlagSet, name string) flag.NormalizedName {
from := []string{"-", "_"}
to := "."
for _, sep := range from {
name = strings.Replace(name, sep, to, -1)
}
return flag.NormalizedName(name)
}
func Test_Modules(t *testing.T) {
var cliName = flag.StringP("name", "n", "nick", "Input Your Name")
var cliAge = flag.IntP("age", "a", 22, "Input Your Age")
var cliGender = flag.StringP("gender", "g", "male", "Input Your Gender")
var cliOK = flag.BoolP("ok", "o", false, "Input Are You OK")
var cliDes = flag.StringP("des-detail", "d", "", "Input Description")
var cliOldFlag = flag.StringP("badflag", "b", "just for test", "Input badflag")
flag.CommandLine.SetNormalizeFunc(wordSepNormalizeFunc)
// 为 age 参数设置 NoOptDefVal 默认值,通过简便的方式为参数设置默认值之外的值
flag.Lookup("age").NoOptDefVal = "25"
// 把 badflag 参数标记为即将废弃的,请用户使用 des-detail 参数
flag.CommandLine.MarkDeprecated("badflag", "please use --des-detail instead")
// 把 badflag 参数的 shorthand 标记为即将废弃的,请用户使用 des-detail 的 shorthand 参数
flag.CommandLine.MarkShorthandDeprecated("badflag", "please use -d instead")
// 在帮助文档中隐藏参数 gender
flag.CommandLine.MarkHidden("badflag")
// 把用户传递的命令行参数解析为对应变量的值
flag.Parse()
fmt.Println("name=", *cliName)
fmt.Println("age=", *cliAge)
fmt.Println("gender=", *cliGender)
fmt.Println("ok=", *cliOK)
fmt.Println("des=", *cliDes)
fmt.Println("cliOldFlag=", *cliOldFlag)
oldHero := new(pb.DBHero)
new := copyPoint(oldHero)
fmt.Printf("%v", new)
data, _ := ptypes.MarshalAny(&pb.HeroListReq{})
reply := &pb.RPCMessageReply{}
s_gateComp.ReceiveMsg(context.Background(), &pb.AgentMessage{UserId: "0_62c79d66acc7aa239b07c21e", MainType: "hero", SubType: "list", Message: data}, reply)
log.Debugf("reply:%v", reply)
}