public void Decorator_Handles_Half_OrderFill() { var order = BuildOrder(); order.OrderFilledVolume = 50; order.OrderOrderedVolume = 100; var orderAllocation = BuildAllocation(100); var decorator = new OrderAllocationDecorator(order, orderAllocation); Assert.AreEqual(decorator.OrderFilledVolume, 50); }
public void Decorator_Handles_ZeroAllocatedFill() { var order = this.BuildOrder(); order.OrderFilledVolume = 100; var orderAllocation = this.BuildAllocation(0); var decorator = new OrderAllocationDecorator(order, orderAllocation); Assert.AreEqual(decorator.OrderFilledVolume, 0); Assert.AreEqual(decorator.OrderOrderedVolume, 0); }
public void Decorator_Handles_Zero_CorrectAccountingEntities() { var order = this.BuildOrder(); order.OrderFilledVolume = 1000; var orderAllocation = this.BuildAllocation(100); var decorator = new OrderAllocationDecorator(order, orderAllocation); Assert.AreEqual(decorator.OrderClientAccountAttributionId, "allocation-account"); Assert.AreEqual(decorator.OrderFund, "allocation-fund"); Assert.AreEqual(decorator.OrderStrategy, "allocation-strategy"); }
public void Decorator_Handles_OrderVolumeAdjustment() { var order = this.BuildOrder(); order.OrderOrderedVolume = 100; order.OrderFilledVolume = 1000; var orderAllocation = this.BuildAllocation(100); var decorator = new OrderAllocationDecorator(order, orderAllocation); Assert.AreEqual(decorator.OrderFilledVolume, 100); Assert.AreEqual(decorator.OrderOrderedVolume, 10); }
/// <summary> /// The project. /// </summary> /// <param name="order"> /// The order. /// </param> /// <param name="groupedAllocations"> /// The grouped allocations. /// </param> /// <returns> /// The <see cref="OrderAllocationDecorator"/>. /// </returns> private IReadOnlyCollection <OrderAllocationDecorator> Project( Order order, IDictionary <string, List <OrderAllocation> > groupedAllocations) { if (!groupedAllocations.ContainsKey(order.OrderId)) { var allocation = new OrderAllocation(order); var decorator = new OrderAllocationDecorator(order, allocation); return(new[] { decorator }); } var allocations = groupedAllocations[order.OrderId]; var decoratedAllocations = allocations?.Select(alloc => new OrderAllocationDecorator(order, alloc))?.ToList() ?? new List <OrderAllocationDecorator>(); return(decoratedAllocations); }