Exemplo n.º 1
0
        public void FilterByExecutionProviderRequest_RetrieveResults_Successful_DeleteAddedEntries()
        {
            // Contains Trades which are created in the Test Case
            IList <Trade> localTradesList = new List <Trade>();

            // Save New Trade
            {
                Trade trade = new Trade(TradeSide.Buy, 20, 113, "FilterTestCase", "B00", new Security()
                {
                    Symbol = "GOOG"
                }, new DateTime(2015, 01, 21, 18, 20, 57));

                Dictionary <string, int> executionDetails = new Dictionary <string, int>();
                executionDetails.Add("B00", 20);
                executionDetails.Add("B01", -20);

                trade.ExecutionDetails = executionDetails;

                //add Trade to database
                _tradeRespository.AddUpdate(trade);

                // Add to list
                localTradesList.Add(trade);
            }

            // Save New Trade
            {
                Trade trade = new Trade(TradeSide.Buy, 20, 113, OrderExecutionProvider.Simulated, "B02", new Security()
                {
                    Symbol = "GOOG"
                }, new DateTime(2015, 01, 21, 18, 20, 57));

                Dictionary <string, int> executionDetails = new Dictionary <string, int>();
                executionDetails.Add("B02", 20);
                executionDetails.Add("B03", -20);

                trade.ExecutionDetails = executionDetails;

                //add Trade to database
                _tradeRespository.AddUpdate(trade);

                // Add to list
                localTradesList.Add(trade);
            }

            // Save New Trade
            {
                Trade trade = new Trade(TradeSide.Buy, 20, 113, "FilterTestCase", "B04", new Security()
                {
                    Symbol = "GOOG"
                }, new DateTime(2015, 01, 21, 18, 20, 57));

                Dictionary <string, int> executionDetails = new Dictionary <string, int>();
                executionDetails.Add("B04", 20);
                executionDetails.Add("B05", -20);

                trade.ExecutionDetails = executionDetails;

                //add Trade to database
                _tradeRespository.AddUpdate(trade);

                // Add to list
                localTradesList.Add(trade);
            }

            // Wait for Transactions to complete
            Thread.Sleep(1000);

            //get the Trades filtered by Execution Provider
            IList <Trade> tradesReturned = _tradeRespository.FilterByExecutionProvider("FilterTestCase");

            Assert.IsNotNull(tradesReturned, "Values Retrieved");
            Assert.AreEqual(localTradesList.Count - 1, tradesReturned.Count, "Values Retrieved");

            Assert.IsTrue(tradesReturned[0].ExecutionDetails["B00"].Equals(localTradesList[0].ExecutionDetails["B00"]), "Matching 1st Trade 1st Execution");
            Assert.IsTrue(tradesReturned[0].ExecutionDetails["B01"].Equals(localTradesList[0].ExecutionDetails["B01"]), "Matching 1st Trade 2st Execution");

            Assert.IsTrue(tradesReturned[1].ExecutionDetails["B04"].Equals(localTradesList[2].ExecutionDetails["B04"]), "Matching 2nd Trade 1st Execution");
            Assert.IsTrue(tradesReturned[1].ExecutionDetails["B05"].Equals(localTradesList[2].ExecutionDetails["B05"]), "Matching 2nd Trade 2st Execution");

            // Delete Trades Generated for Test Case
            foreach (Trade trade in localTradesList)
            {
                _tradeRespository.Delete(trade);
            }
        }