Beispiel #1
0
        public void Fill_ThrowsException_IfOpenQuantityIsLessThanFillQuantity()
        {
            PriceLevel priceLevel = new PriceLevel(100);
            Order      order1     = new Order()
            {
                IsBuy = true, OrderId = 1, Price = 100, Sequnce = 1
            };

            priceLevel.AddOrder(order1);

            Assert.Equal(1, priceLevel.OrderCount);

            Order order2 = new Order()
            {
                IsBuy = true, OrderId = 2, Price = 100, Sequnce = 2
            };

            priceLevel.AddOrder(order2);

            Assert.Equal(2, priceLevel.OrderCount);

            Exception ex = Assert.Throws <Exception>(() => priceLevel.Fill(order1, 1100));

            Assert.Equal("Order quantity is less then requested fill quanity", ex.Message);
            Assert.Equal(2, priceLevel.OrderCount);
        }
Beispiel #2
0
        public void Fill_RemovesOrder_IfOpenQuantityIs0()
        {
            PriceLevel priceLevel = new PriceLevel(100);
            Order      order1     = new Order()
            {
                IsBuy = true, OrderId = 1, Price = 100, OpenQuantity = 1000, Sequnce = 1
            };

            priceLevel.AddOrder(order1);

            Assert.Equal(1, priceLevel.OrderCount);

            Order order2 = new Order()
            {
                IsBuy = true, OrderId = 2, Price = 100, OpenQuantity = 1000, Sequnce = 2
            };

            priceLevel.AddOrder(order2);

            Assert.Equal(2, priceLevel.OrderCount);

            priceLevel.Fill(order1, 1000);

            Assert.Equal(1, priceLevel.OrderCount);
            Assert.Contains(order2, priceLevel);
        }
Beispiel #3
0
        public void Fill_DoesNotRemoveOrder_IfOpenQuantityIsNot0()
        {
            PriceLevel priceLevel = new PriceLevel(100);
            Order      order1     = new Order()
            {
                IsBuy = true, OrderId = 1, OpenQuantity = 1000, Price = 100, Sequnce = 1
            };

            priceLevel.AddOrder(order1);

            Assert.Equal(1, priceLevel.OrderCount);

            Order order2 = new Order()
            {
                IsBuy = true, OrderId = 2, OpenQuantity = 1000, Price = 100, Sequnce = 2
            };

            priceLevel.AddOrder(order2);

            Assert.Equal(2, priceLevel.OrderCount);

            priceLevel.Fill(order1, 900);

            Assert.Equal(2, priceLevel.OrderCount);
            Assert.Contains(order1, priceLevel);
            Assert.Contains(order2, priceLevel);
            Assert.True(100 == order1.OpenQuantity, "Quantity should be 100");
        }