internal static void AssertEqual(this InventoryAdjustment inventoryAdjustment, IInventoryAdjustmentReturn adjustmentReturn, List <dynamic> derivedLots = null) { if (inventoryAdjustment == null) { throw new ArgumentNullException("inventoryAdjustment"); } if (adjustmentReturn == null) { throw new ArgumentNullException("adjustmentReturn"); } Assert.AreEqual(new InventoryAdjustmentKey(inventoryAdjustment).KeyValue, adjustmentReturn.InventoryAdjustmentKey); Assert.AreEqual(inventoryAdjustment.AdjustmentDate, adjustmentReturn.AdjustmentDate); Assert.AreEqual(inventoryAdjustment.Employee.UserName, adjustmentReturn.User); Assert.AreEqual(inventoryAdjustment.TimeStamp, adjustmentReturn.TimeStamp); inventoryAdjustment.Notebook.AssertEqual(adjustmentReturn.Notebook); if (!(inventoryAdjustment.Items == null && adjustmentReturn.Items == null)) { var items = (inventoryAdjustment.Items ?? new InventoryAdjustmentItem[0]).ToList(); var returnItems = adjustmentReturn.Items.ToList(); Assert.AreEqual(items.Count, returnItems.Count); items.ForEach(i => { var inventoryAdjustmentItemKey = new InventoryAdjustmentItemKey(i); i.AssertEqual(returnItems.Single(r => inventoryAdjustmentItemKey.KeyValue == r.InventoryAdjustmentItemKey), derivedLots); }); } }