public void AddInterface()
        {
            //Assemble
            var bdi     = new Mock <IBatchDriven <ISender <IEntity>, IBatchDrivenReceiver <IEntity> > >().Object;
            var manager = new BatchDrivenInterfaceManager();

            //Act
            manager.Add(bdi);

            //Assert
            Assert.Single(manager.Interfaces);
        }
        public void ExecuteInterface_DoNotExecuteIfNextExecutionTimeGreaterThanCurrentTime()
        {
            using (var manager = new BatchDrivenInterfaceManager())
            {
                //Assemble
                var mock = new Mock <IBatchDriven <ISender <IEntity>, IBatchDrivenReceiver <IEntity> > >();
                mock.SetupGet(p => p.NextExecutionTime)
                .Returns(DateTime.Now.AddSeconds(10000));
                mock.Setup(i => i.Execute())
                .Callback(() => mock.SetupGet(p => p.IsExecuting).Returns(true));

                manager.Add(mock.Object);

                //Act
                manager.Start();

                //Assert
                Thread.Sleep(1000);
                Assert.False(manager.Interfaces.FirstOrDefault().IsExecuting);
            }
        }