view Implab.Test/Mock/MockRunnableComponent.cs @ 206:86b61d53b7db v2

Слияние
author cin
date Tue, 25 Oct 2016 17:40:45 +0300
parents 8200ab154c8a
children 7d07503621fe
line wrap: on
line source

using System;
using Implab.Components;

namespace Implab.Test.Mock {
    class MockRunnableComponent : RunnableComponent {
        public MockRunnableComponent(bool initialized) : base(initialized) {
        }

        public MockRunnableComponent(bool initialized, bool reusable) : base(initialized, reusable) {
        }

        public Action MockInit {
            get;
            set;
        }

        public Func<IPromise> MockStart {
            get;
            set;
        }

        public Func<IPromise> MockStop {
            get;
            set;
        }

        public Action<bool, Exception> MockDispose {
            get;
            set;
        }

        protected override IPromise OnStart() {
            return MockStart != null ? Safe.Run(MockStart).Chain(base.OnStart) : Safe.Run(base.OnStart);
        }

        protected override IPromise OnStop() {
            return MockStop != null ? Safe.Run(MockStop).Chain(base.OnStop) : Safe.Run(base.OnStop);
        }

        protected override void OnInitialize() {
            if (MockInit != null)
                MockInit();
        }

        protected override void Dispose(bool disposing, Exception lastError) {
            if (MockDispose != null)
                MockDispose(disposing, lastError);
            base.Dispose(disposing, lastError);
        }
    }
}