|
|
- // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
-
- package container
-
- import (
- "fmt"
- "reflect"
- "testing"
- )
-
- func TestDefaultInformationManager_New(t *testing.T) {
-
- defaultInformationManager := NewDefaultInformationManager()
- if defaultInformationManager == nil {
- t.Fatalf("创建失败!")
- }
- if len(defaultInformationManager.informationMapping) != 0 {
- t.Fatalf("组件列表数量错误!")
- }
- }
-
- func TestDefaultInformationManager_Item(t *testing.T) {
-
- informationManager := NewDefaultInformationManager()
- elementInformation := NewElementInformation(FactoryOfTestElement)
- informationManager.informationMapping[testElementType] = elementInformation
- if informationManager.Item(testElementType) == nil {
- t.Fatalf("意外未找到了组件信息!")
- }
- if informationManager.Item(testElementType) != elementInformation {
- t.Fatalf("获取组件信息错误!")
- }
- if informationManager.Item(testServiceType) != nil {
- t.Fatalf("意外找到了组件信息!")
- }
- }
-
- func TestDefaultInformationManager_Item_NullError(t *testing.T) {
-
- informationManager := NewDefaultInformationManager()
- information := informationManager.Item(nil)
- if information != nil {
- t.Fatal("意外的查到了数据!")
- }
- }
-
- func TestDefaultInformationManager_Items(t *testing.T) {
-
- informationManager := NewDefaultInformationManager()
- elementInformation := NewElementInformation(FactoryOfTestElement)
- informationManager.informationMapping[testElementType] = elementInformation
- if len(informationManager.Items()) != 1 {
- t.Fatalf("组件列表数量错误!")
- }
- if informationManager.Items()[0] != elementInformation {
- t.Fatalf("获取组件信息列表错误!")
- }
- }
-
- func TestDefaultInformationManager_RegisterElement(t *testing.T) {
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(FactoryOfTestElement, false)
- information, ok := informationManager.informationMapping[testElementType]
- if !ok {
- t.Fatalf("未找到组件!")
- }
- if information == nil {
- t.Fatalf("没找到信息")
- }
- elementInformation, ok := information.(*ElementInformation)
- if !ok {
- t.Fatalf("Information类型不正确!")
- }
- if testElementType != elementInformation.Interface() {
- t.Fatalf("接口类型不正确!")
- }
- }
-
- func TestDefaultInformationManager_RegisterGlobalElement(t *testing.T) {
- defer func() {
- if err := recover(); err != "目前不支持全局组件!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(FactoryOfTestElement, true)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterElement_NullError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂不能为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(nil, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterElement_FactoryTypeError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂必须是func!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(reflect.TypeOf(FactoryOfTestElement()), false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterElement_ParameterCountError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂不能有参数!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(FactoryOfElementTestInterfaceWithContent, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterElement_NoReturnValueError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂必值需有返回值!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(FactoryWithoutResult, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterElement_TooManyResultsError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂只能有一个返回值!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(FactoryWithTooManyResults, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterElement_ReturnValueTypeError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂的返回值必需是interface!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(FactoryOfTestElementImplement, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterElement_Repeat(t *testing.T) {
- defer func() {
- if err := recover(); err != fmt.Sprintf("组件%s接口已经注册!", testElementType.Name()) {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- informationManager.RegisterElement(FactoryOfTestElement, false)
- informationManager.RegisterElement(FactoryOfTestElement, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService(t *testing.T) {
-
- informationManager := NewDefaultInformationManager()
- serviceInformation := informationManager.RegisterService(FactoryOfTestService, false)
- if serviceInformation == nil {
- t.Fatalf("注册失败!")
- }
- information, ok := informationManager.informationMapping[testServiceType]
- if !ok {
- t.Fatalf("未找到组件!")
- }
- if information == nil {
- t.Fatalf("没找到信息")
- }
- serviceInformation, ok = information.(*ServiceInformation)
- if !ok {
- t.Fatalf("Information类型不正确!")
- }
- if testServiceType != serviceInformation.Interface() {
- t.Fatalf("接口类型不正确!")
- }
- }
-
- func TestDefaultInformationManager_RegisterGlobalService(t *testing.T) {
- defer func() {
- if err := recover(); err != "目前不支持全局组件!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(FactoryOfTestService, true)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService_NullError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂不能为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(nil, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService_FactoryTypeError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂必须是func!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(reflect.TypeOf(FactoryOfTestElement()), false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService_ParameterCountError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂不能有参数!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(FactoryOfServiceTestInterfaceWithContent, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService_NoReturnValueError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂必值需有返回值!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(FactoryWithoutResult, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService_TooManyResultsError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂只能有一个返回值!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(FactoryWithTooManyResults, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService_ReturnValueTypeError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂的返回值必需是interface!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(FactoryOfTestElementImplement, false)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestDefaultInformationManager_RegisterService_Repeat(t *testing.T) {
- defer func() {
- if err := recover(); err != fmt.Sprintf("组件%s接口已经注册!", testServiceType.Name()) {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- informationManager := NewDefaultInformationManager()
- _ = informationManager.RegisterService(FactoryOfTestService, false)
- _ = informationManager.RegisterService(FactoryOfTestService, false)
- t.Fatalf("意外的没有错误!")
- }
|