package container import ( "fmt" "testing" ) func TestHandlerManager_New(t *testing.T) { handler := NewElementHandler(elementInstance) handlerMapping := map[Interface]ComponentHandler{testElementType: handler} handlerManager, err := NewHandlerManager(handlerMapping) if err != nil { t.Fatalf("意外错误:%s", err.Error()) } if handlerManager == nil { t.Fatalf("创建失败!") } if handlerManager.handlerMapping == nil { t.Fatalf("组件句柄映射设置错误!") } if len(handlerManager.handlerMapping) != 1 { t.Fatalf("组件句柄映射数量错误!") } handler1, ok := handlerManager.handlerMapping[testElementType] if !ok { t.Fatalf("未找到组件句柄!") } if handler != handler1 { t.Fatalf("组件句柄错误!") } } func TestHandlerManager_New_NullInterfaceType(t *testing.T) { handler := NewElementHandler(elementInstance) _, err := NewHandlerManager(map[Interface]ComponentHandler{nil: handler}) if err == nil { t.Fatalf("意外的没有错误!") } if err.Error() != fmt.Sprintf("组件接口不能为空!") { t.Fatalf("意外错误:%s", err.Error()) } } func TestHandlerManager_New_NullHandler(t *testing.T) { _, err := NewHandlerManager(map[Interface]ComponentHandler{testElementType: nil}) if err == nil { t.Fatalf("意外的没有错误!") } if err.Error() != fmt.Sprintf("组件句柄不能为空!") { t.Fatalf("意外错误:%s", err.Error()) } } func TestHandlerManager_Handler(t *testing.T) { handlerManager, err := NewHandlerManager(map[Interface]ComponentHandler{}) if err != nil { t.Fatalf("意外错误:%s", err.Error()) } handler := NewElementHandler(elementInstance) handlerManager.handlerMapping[testElementType] = handler if handlerManager.Handler(testElementType) != handler { t.Fatalf("获取指定组件句柄错误!") } if handlerManager.Handler(testServiceType) != nil { t.Fatalf("获取不存在的组件句柄错误!") } } func TestHandlerManager_Handler__NullInterfaceType(t *testing.T) { handlerManager, err := NewHandlerManager(map[Interface]ComponentHandler{}) if err != nil { t.Fatalf("意外错误:%s", err.Error()) } if handlerManager.Handler(nil) != nil { t.Fatalf("获取空接口类型的组件句柄错误!") } }