package container
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestServiceHandler_New(t *testing.T) {
|
|
methodName := "String"
|
|
caller, err := serviceInstance.GetCaller(methodName)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
methodHandler, err := NewServiceMethodHandler(caller)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
serviceHandler, err := NewServiceHandler(serviceInstance, map[string]*ServiceMethodHandler{methodName: methodHandler})
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
if serviceHandler == nil {
|
|
t.Fatalf("创建失败!")
|
|
}
|
|
if serviceHandler.instance != serviceInstance {
|
|
t.Fatalf("实例设置错误!")
|
|
}
|
|
if len(serviceHandler.methodMapping) != 1 {
|
|
t.Fatalf("方法句柄映射数量错误!")
|
|
}
|
|
methodHandler1, ok := serviceHandler.methodMapping[methodName]
|
|
if !ok {
|
|
t.Fatalf("方法句柄映名称设置错误")
|
|
}
|
|
if methodHandler != methodHandler1 {
|
|
t.Fatalf("方法句柄映设置错误")
|
|
}
|
|
}
|
|
|
|
func TestServiceHandler_New_NullMethodMapping(t *testing.T) {
|
|
_, err := NewServiceHandler(serviceInstance, nil)
|
|
if err == nil {
|
|
t.Fatalf("意外的没有错误!")
|
|
}
|
|
if err.Error() != fmt.Sprintf("方法句柄映射不能为空!") {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
}
|
|
|
|
func TestServiceHandler_New_EmptyMethodName(t *testing.T) {
|
|
methodName := "String"
|
|
caller, err := serviceInstance.GetCaller(methodName)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
methodHandler, err := NewServiceMethodHandler(caller)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
_, err = NewServiceHandler(serviceInstance, map[string]*ServiceMethodHandler{"": methodHandler})
|
|
if err == nil {
|
|
t.Fatalf("意外的没有错误!")
|
|
}
|
|
if err.Error() != fmt.Sprintf("方法名不能为空!") {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
}
|
|
|
|
func TestServiceHandler_New_NullMethodHandler(t *testing.T) {
|
|
methodName := "String"
|
|
_, err := NewServiceHandler(serviceInstance, map[string]*ServiceMethodHandler{methodName: nil})
|
|
if err == nil {
|
|
t.Fatalf("意外的没有错误!")
|
|
}
|
|
if err.Error() != fmt.Sprintf("方法句柄不能为空!") {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
}
|
|
|
|
func TestServiceHandler_Instance(t *testing.T) {
|
|
handler, err := NewServiceHandler(ZeroInstance, map[string]*ServiceMethodHandler{})
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
handler.instance = serviceInstance
|
|
if handler.Instance() != serviceInstance {
|
|
t.Fatalf("获取实例错误!")
|
|
}
|
|
}
|
|
|
|
func TestServiceHandler_Method(t *testing.T) {
|
|
serviceHandler, err := NewServiceHandler(serviceInstance, map[string]*ServiceMethodHandler{})
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
if serviceHandler.instance != serviceInstance {
|
|
t.Fatalf("实例设置错误!")
|
|
}
|
|
methodName := "String"
|
|
caller, err := serviceInstance.GetCaller(methodName)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
methodHandler, err := NewServiceMethodHandler(caller)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
serviceHandler.methodMapping[methodName] = methodHandler
|
|
if serviceHandler.Method(methodName) != methodHandler {
|
|
t.Fatalf("获取方法句柄映射错误")
|
|
}
|
|
}
|
|
|
|
func TestServiceHandler_Method_EmptyMethodName(t *testing.T) {
|
|
serviceHandler, err := NewServiceHandler(serviceInstance, map[string]*ServiceMethodHandler{})
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
if serviceHandler.instance != serviceInstance {
|
|
t.Fatalf("实例设置错误!")
|
|
}
|
|
methodName := "String"
|
|
caller, err := serviceInstance.GetCaller(methodName)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
methodHandler, err := NewServiceMethodHandler(caller)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
serviceHandler.methodMapping[methodName] = methodHandler
|
|
if serviceHandler.Method("") != nil {
|
|
t.Fatalf("获取空方法名的方法句柄映射错误")
|
|
}
|
|
}
|
|
|
|
func TestServiceHandler_Method_MissingMethod(t *testing.T) {
|
|
serviceHandler, err := NewServiceHandler(serviceInstance, map[string]*ServiceMethodHandler{})
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
if serviceHandler.instance != serviceInstance {
|
|
t.Fatalf("实例设置错误!")
|
|
}
|
|
methodName := "String"
|
|
caller, err := serviceInstance.GetCaller(methodName)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
methodHandler, err := NewServiceMethodHandler(caller)
|
|
if err != nil {
|
|
t.Fatalf("意外错误:%s", err.Error())
|
|
}
|
|
serviceHandler.methodMapping[methodName] = methodHandler
|
|
if serviceHandler.Method("String1") != nil {
|
|
t.Fatalf("找到了不存在的方法句柄")
|
|
}
|
|
}
|