public HasSufficientBuyingPowerForOrderResult HasSufficientBuyingPowerForOrder( HasSufficientBuyingPowerForOrderParameters parameters ) { EnsureSecurityExists(parameters.Security); var expected = SecurityModel.HasSufficientBuyingPowerForOrder(parameters); if (reentry) { return(expected); } reentry = true; var actual = PositionGroupModel.HasSufficientBuyingPowerForOrder( new HasSufficientPositionGroupBuyingPowerForOrderParameters( Portfolio, new PositionGroup(PositionGroupModel, new Position(parameters.Security, parameters.Order.Quantity)), parameters.Order ) ); Assert.AreEqual(expected.IsSufficient, actual.IsSufficient, $"{PositionGroupModel.GetType().Name}:{nameof(HasSufficientBuyingPowerForOrder)}: " + $"ExpectedReason: {expected.Reason}{Environment.NewLine}" + $"ActualReason: {actual.Reason}" ); Assert.AreEqual(expected.Reason, actual.Reason, $"{PositionGroupModel.GetType().Name}:{nameof(HasSufficientBuyingPowerForOrder)}" ); reentry = false; return(expected); }