public void GetExitDecisions_NoExitDecisionsReached_ExecutesAlLFilters()
        {
            var bets = new Bet[]
            {
                new Bet {
                    Id = 1, PlacedOn = DateTime.UtcNow.AddHours(-2), BidAmount = 13.12m, Direction = Direction.Increase, ExitPrice = 10.2m, InitialLoss = 100.01m, OpeningPosition = 12.5m, Stock = new Stock {
                        Identifier = "STK.1"
                    }
                },
                new Bet {
                    Id = 1, PlacedOn = DateTime.UtcNow.AddHours(-1), BidAmount = 13.13m, Direction = Direction.Increase, ExitPrice = 10.2m, InitialLoss = 100.01m, OpeningPosition = 12.5m, Stock = new Stock {
                        Identifier = "STK.2"
                    }
                },
            };

            var decider1 = new Mock <IExitDecider>();

            decider1.Setup(x => x.GetExitDescisions(bets)).Returns(new List <Bet>());

            var decider2 = new Mock <IExitDecider>();

            decider2.Setup(x => x.GetExitDescisions(bets)).Returns(new List <Bet>());

            var decider3 = new Mock <IExitDecider>();

            decider3.Setup(x => x.GetExitDescisions(bets)).Returns(new List <Bet>());

            var compositeFilter = new CompositeExitDecider(decider1.Object, decider2.Object, decider3.Object);

            var result = compositeFilter.GetExitDescisions(bets);

            decider1.Verify(x => x.GetExitDescisions(It.IsAny <IEnumerable <Bet> >()), Times.Once());
            decider2.Verify(x => x.GetExitDescisions(It.IsAny <IEnumerable <Bet> >()), Times.Once());
            decider3.Verify(x => x.GetExitDescisions(It.IsAny <IEnumerable <Bet> >()), Times.Once());

            Assert.AreEqual(0, result.Count());
            Assert.AreEqual(2, bets.Count());
            Assert.IsTrue(bets.Any(x => x.Stock.Identifier.Equals("STK.1")));
            Assert.IsTrue(bets.Any(x => x.Stock.Identifier.Equals("STK.2")));
        }