Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 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");
        }
Ejemplo n.º 4
0
        public void RemoveOrder_RemovesOrder()
        {
            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);

            Order order3 = new Order()
            {
                IsBuy = true, OrderId = 3, Price = 100, Sequnce = 3
            };

            priceLevel.AddOrder(order3);

            Assert.Equal(3, priceLevel.OrderCount);

            Order order4 = new Order()
            {
                IsBuy = true, OrderId = 4, Price = 100, Sequnce = 4
            };

            priceLevel.AddOrder(order4);

            Assert.Equal(4, priceLevel.OrderCount);

            priceLevel.RemoveOrder(order3);

            Assert.Equal(3, priceLevel.OrderCount);
            Assert.Contains(order1, priceLevel);
            Assert.Contains(order2, priceLevel);
            Assert.Contains(order4, priceLevel);
        }
Ejemplo n.º 5
0
        public void AddOrder_AddsOrder()
        {
            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);
            Assert.Contains(order1, priceLevel);
            Assert.Contains(order2, priceLevel);
        }
        public void PriceLevelSortsOrderBasedOnSequence()
        {
            OrderSequenceComparer comparer = new OrderSequenceComparer();
            Price      price      = new Price(1);
            PriceLevel priceLevel = new PriceLevel(price);

            Order order1 = new Order()
            {
                Sequnce = 1
            };

            priceLevel.AddOrder(order1);

            Order order3 = new Order()
            {
                Sequnce = 3
            };

            priceLevel.AddOrder(order3);

            Order order2 = new Order()
            {
                Sequnce = 2
            };

            priceLevel.AddOrder(order2);

            Order order7 = new Order()
            {
                Sequnce = 7
            };

            priceLevel.AddOrder(order7);

            Order order6 = new Order()
            {
                Sequnce = 6
            };

            priceLevel.AddOrder(order6);

            Order order4 = new Order()
            {
                Sequnce = 4
            };

            priceLevel.AddOrder(order4);

            Order order5 = new Order()
            {
                Sequnce = 5
            };

            priceLevel.AddOrder(order5);

            List <Order> expectedSequence = new List <Order> {
                order1, order2, order3, order4, order5, order6, order7
            };

            AssertHelper.SequentiallyEqual(expectedSequence, priceLevel);
        }