public void TestFind() { for (var i = 0; i < 10; i++) { list.AddLast(i); } var node = list.Find(5); Assert.AreEqual(5, node.Value); node = list.Find(20); Assert.AreEqual(null, node); node = list.Find(-5); Assert.AreEqual(null, node); }
public void OrderModified(LogicalOrder order) { if (order.IsActive) { // Any change to an active order even if only // a price change means the list change. IsActiveOrdersChanged = true; if (!activeOrders.Contains(order)) { var newNode = nodePool.Create(order); bool found = false; var next = activeOrders.First; for (var node = next; node != null; node = next) { next = node.Next; LogicalOrder other = node.Value; if (order.CompareTo(other) < 0) { activeOrders.AddBefore(node, newNode); found = true; break; } } if (!found) { activeOrders.AddLast(newNode); } } } else { var node = activeOrders.Find(order); if (node != null) { activeOrders.Remove(node); nodePool.Free(node); // Since this order became inactive, it // means the active list changed. IsActiveOrdersChanged = true; } } if (order.IsNextBar) { if (!nextBarOrders.Contains(order)) { nextBarOrders.Add(order); } } else { if (nextBarOrders.Contains(order)) { nextBarOrders.Remove(order); } } ActiveOrdersChanged(order); }