|
|
- // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
-
- package container
-
- import (
- "github.com/go-xorm/xorm"
- "reflect"
- "testing"
- )
-
- func FactoryWithoutResult() {
- }
-
- type TestElement interface {
- }
-
- type TestElementImplement struct {
- }
-
- func FactoryOfNullTestElement() TestElement {
- return nil
- }
-
- func FactoryOfElementTestInterfaceWithContent(string) TestElement {
- return &TestElementImplement{}
- }
-
- func FactoryOfTestElementImplement() *TestElementImplement {
- return &TestElementImplement{}
- }
-
- func FactoryOfTestElement() TestElement {
- return &TestElementImplement{}
- }
-
- func FactoryWithTooManyResults() (TestElement, TestService) {
- return &TestElementImplement{}, &TestServiceImplement{}
- }
-
- var testElementType = reflect.TypeOf((*TestElement)(nil)).Elem()
-
- var elementInstance = Instance(reflect.ValueOf(FactoryOfTestElement()))
-
- type TestService interface {
- String() (string, error)
- StringWithContext(*RequestContext) (string, error)
- StringNotFirstContext(string, *RequestContext) (string, error)
- String2() (string, string, error)
- String3(*RequestContext, *RequestContext) error
- NoError() string
- }
-
- type TestToString interface {
- String() string
- }
-
- type TestServiceImplement struct {
- content string
- }
-
- func (impl *TestServiceImplement) String() (string, error) {
- return impl.content, nil
- }
-
- func (impl *TestServiceImplement) StringWithContext(_ *RequestContext) (string, error) {
- return impl.content, nil
- }
-
- func (impl *TestServiceImplement) StringNotFirstContext(_ string, _ *RequestContext) (string, error) {
- return "", nil
- }
-
- func (impl *TestServiceImplement) String2() (string, string, error) {
- return impl.content, impl.content, nil
- }
-
- func (impl *TestServiceImplement) String3(_ *RequestContext, _ *RequestContext) error {
- return nil
- }
-
- func (impl *TestServiceImplement) NoError() string {
- return impl.content
- }
-
- func FactoryOfTestService() TestService {
- return &TestServiceImplement{}
- }
-
- func FactoryOfServiceTestInterfaceWithContent(content string) TestService {
- return &TestServiceImplement{content}
- }
-
- type TestServiceImplementWithContext struct {
- context *SessionContext
- }
-
- func (impl *TestServiceImplementWithContext) String() (string, error) {
- return "", nil
- }
-
- func (impl *TestServiceImplementWithContext) StringWithContext(_ *RequestContext) (string, error) {
- return "", nil
- }
-
- func (impl *TestServiceImplementWithContext) StringNotFirstContext(_ string, _ *RequestContext) (string, error) {
- return "", nil
- }
-
- func (impl *TestServiceImplementWithContext) String2() (string, string, error) {
- return "", "", nil
- }
-
- func (impl *TestServiceImplementWithContext) String3(_ *RequestContext, _ *RequestContext) error {
- return nil
- }
-
- func (impl *TestServiceImplementWithContext) NoError() string {
- return ""
- }
-
- func (impl *TestServiceImplementWithContext) SetContext(context *SessionContext) {
- impl.context = context
- }
-
- type TestWithTooManyInSetContext interface {
- SetContext(*SessionContext, string)
- }
-
- type TestWithTooManyInSetContextImplement struct {
- context *SessionContext
- }
-
- func (impl *TestWithTooManyInSetContextImplement) SetContext(_ *SessionContext, _ string) {
- }
-
- func FactoryOfTestWithTooManyInSetContext() TestWithTooManyInSetContext {
- return &TestWithTooManyInSetContextImplement{}
- }
-
- type TestWithReturnValueSetContext interface {
- SetContext(*SessionContext) error
- }
-
- type TestWithReturnValueSetContextImplement struct {
- context *SessionContext
- }
-
- func (impl *TestWithReturnValueSetContextImplement) SetContext(context *SessionContext) error {
- impl.context = context
- return nil
- }
-
- func FactoryOfTestWithReturnValueSetContext() TestWithReturnValueSetContext {
- return &TestWithReturnValueSetContextImplement{}
- }
-
- type TestWithErrorInSetContext interface {
- SetContext(string)
- }
-
- type TestWithErrorInSetContextImplement struct {
- context *SessionContext
- }
-
- func (impl *TestWithErrorInSetContextImplement) SetContext(_ string) {
- }
-
- func FactoryOfTestWithErrorInSetContext() TestWithErrorInSetContext {
- return &TestWithErrorInSetContextImplement{}
- }
-
- type TestWithNoInSetContext interface {
- SetContext()
- }
-
- type TestWithNoInSetContextImplement struct {
- context *SessionContext
- }
-
- func (impl *TestWithNoInSetContextImplement) SetContext() {
- }
-
- func FactoryOfTestWithNoInSetContext() TestWithNoInSetContext {
- return &TestWithNoInSetContextImplement{}
- }
-
- type TestToStringImplement struct {
- context *SessionContext
- }
-
- func (impl TestToStringImplement) String() string {
- return ""
- }
-
- func FactoryOfTestServiceWithContext() TestService {
- return &TestServiceImplementWithContext{}
- }
-
- func FactoryOfTestServiceImplementWithContext() *TestServiceImplementWithContext {
- return &TestServiceImplementWithContext{}
- }
-
- func FactoryOfTestServiceImplementWithContextStruct() TestServiceImplementWithContext {
- return TestServiceImplementWithContext{}
- }
-
- func FactoryOfNullTestService() TestService {
- return nil
- }
-
- func FactoryOfNullTestServiceImplementWithContext() *TestServiceImplementWithContext {
- return nil
- }
-
- func FactoryOfInt() *int {
- intValue := 123
- return &intValue
- }
-
- func FactoryOfTestToString() TestToString {
- return TestToStringImplement{}
- }
-
- var testServiceType = reflect.TypeOf((*TestService)(nil)).Elem()
-
- var serviceInstance = Instance(reflect.ValueOf(FactoryOfTestService()))
-
- type TestCallerBrokerBuilderImplementWithError struct {
- checkingError error
- buildingError error
- }
-
- func (impl *TestCallerBrokerBuilderImplementWithError) Check(_ Method) error {
-
- return impl.checkingError
- }
-
- func (impl *TestCallerBrokerBuilderImplementWithError) Build(_ *SessionContext, _ Caller) (Caller, error) {
-
- return nil, impl.buildingError
- }
-
- type TestCallerBrokerBuilderImplement struct {
- }
-
- func (impl *TestCallerBrokerBuilderImplement) Check(_ Method) error {
-
- return nil
- }
-
- func (impl *TestCallerBrokerBuilderImplement) Build(_ *SessionContext, caller Caller) (Caller, error) {
-
- return caller, nil
- }
-
- type TransactionHandlerMock struct {
- closeNumberOfTimes int
- beginNumberOfTimes int
- beginError error
- commitNumberOfTimes int
- commitError error
- session *xorm.Session
- }
-
- func (mock *TransactionHandlerMock) Close() {
- mock.closeNumberOfTimes++
- }
-
- func (mock *TransactionHandlerMock) Begin() error {
- mock.beginNumberOfTimes++
- return mock.beginError
- }
-
- func (mock *TransactionHandlerMock) Commit() error {
- mock.commitNumberOfTimes++
- return mock.commitError
- }
-
- func (mock *TransactionHandlerMock) Session() *xorm.Session {
- return mock.session
- }
-
- type TransactionHandlerFactoryMock struct {
- handler *TransactionHandlerMock
- createError error
- }
-
- // @Reference LAPP_GAAS_GFrame_BACKEND/container/TransactionHandlerFactory.Create
- func (mock *TransactionHandlerFactoryMock) Create() (TransactionHandler, error) {
- return mock.handler, mock.createError
- }
-
- var transactionHandlerFactoryMock TransactionHandlerFactory = &TransactionHandlerFactoryMock{}
-
- func TestContainer_ParseFactory(t *testing.T) {
-
- _, _ = parseFactory(FactoryOfTestElement)
- }
-
- func TestContainer_ParseFactory_NullError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂不能为空!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- _, _ = parseFactory(nil)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestContainer_ParseFactory_FactoryTypeError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂必须是func!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- _, _ = parseFactory(reflect.TypeOf(FactoryOfTestElement()))
- t.Fatalf("意外的没有错误!")
- }
-
- func TestContainer_ParseFactory_ParameterCountError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂不能有参数!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- _, _ = parseFactory(FactoryOfElementTestInterfaceWithContent)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestContainer_ParseFactory_NoReturnValueError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂必值需有返回值!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- _, _ = parseFactory(FactoryWithoutResult)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestContainer_ParseFactory_TooManyResultsError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂只能有一个返回值!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- _, _ = parseFactory(FactoryWithTooManyResults)
- t.Fatalf("意外的没有错误!")
- }
-
- func TestContainer_ParseFactory_ReturnValueTypeError(t *testing.T) {
- defer func() {
- if err := recover(); err != "工厂的返回值必需是interface!" {
- t.Fatalf("意外错误:%s", err)
- }
- }()
-
- _, _ = parseFactory(FactoryOfTestElementImplement)
- t.Fatalf("意外的没有错误!")
- }
-
- func call1(_ []reflect.Value) []reflect.Value {
- return []reflect.Value{reflect.ValueOf(1)}
- }
-
- func call2(_ []reflect.Value) []reflect.Value {
- return []reflect.Value{reflect.ValueOf(2)}
- }
-
- func TestContainer_Caller_Equal_NullCaller1AndCaller2(t *testing.T) {
-
- if !CallerEqual(nil, nil) {
- t.Fatalf("意外的不相等!")
- }
- }
-
- func TestContainer_Caller_Equal_NullCaller1(t *testing.T) {
-
- if CallerEqual(nil, call1) {
- t.Fatalf("意外的相等!")
- }
- }
-
- func TestContainer_Caller_Equal_NullCaller2(t *testing.T) {
-
- if CallerEqual(call1, nil) {
- t.Fatalf("意外的相等!")
- }
- }
-
- func TestContainer_Caller_Equal_NotNull(t *testing.T) {
-
- var caller1 = call1
- var caller2 = call1
- var caller3 = call2
- if !CallerEqual(caller1, caller2) {
- t.Fatalf("意外的不相等!")
- }
- if CallerEqual(caller2, caller3) {
- t.Fatalf("意外的相等!")
- }
- call3 := func(_ []reflect.Value) []reflect.Value {
- return []reflect.Value{reflect.ValueOf(3)}
- }
- call4 := func(_ []reflect.Value) []reflect.Value {
- return []reflect.Value{reflect.ValueOf(4)}
- }
- var caller4 = call3
- var caller5 = call3
- var caller6 = call4
- if !CallerEqual(caller4, caller5) {
- t.Fatalf("意外的不相等!")
- }
- if CallerEqual(caller5, caller6) {
- t.Fatalf("意外的相等!")
- }
- }
-
- type Synchronizer interface {
- Awake()
- Wait()
- }
-
- type SynchronizerImplement struct {
- core chan interface{}
- }
-
- func NewSynchronizer() Synchronizer {
- return &SynchronizerImplement{make(chan interface{}, 1)}
- }
-
- func (impl SynchronizerImplement) Awake() {
- impl.core <- 1
- }
-
- func (impl SynchronizerImplement) Wait() {
- <-impl.core
- }
|