public MaintenanceMargin GetMaintenanceMargin(MaintenanceMarginParameters parameters) { EnsureSecurityExists(parameters.Security); var expected = SecurityModel.GetMaintenanceMargin(parameters); if (reentry) { return(expected); } reentry = true; var actual = PositionGroupModel.GetMaintenanceMargin(new PositionGroupMaintenanceMarginParameters( Portfolio, new PositionGroup(PositionGroupModel, new Position(parameters.Security, parameters.Quantity)) )); Assert.AreEqual(expected.Value, actual.Value, $"{PositionGroupModel.GetType().Name}:{nameof(GetMaintenanceMargin)}" ); reentry = false; return(expected); }