Пример #1
0
        public void GetRecentHistoryTest()
        {
            //Setup control variables for verification
            var privateStockHistory = new PrivateObject(new StockData(), new PrivateType(typeof(StockData)));
            var entireHistory       = privateStockHistory.Invoke("GetFullHistory") as MarketSegment;
            var firstDay            = entireHistory[0];
            var secondDay           = entireHistory[1];
            var thirdDay            = entireHistory[2];
            var lastDay             = entireHistory[entireHistory.Count - 1];

            //Reset StockData to day 0
            StockData.Init();

            //Current day zero, recentHistory should rollover.
            var recentHist = StockData.GetRecentHistory(2);

            Assert.AreEqual(lastDay, recentHist[0]);
            Assert.AreEqual(firstDay, recentHist[1]);

            //Current day 1, still a recentHistory rollover
            StockData.AdvanceDay();
            recentHist = StockData.GetRecentHistory(3);
            Assert.AreEqual(lastDay, recentHist[0]);
            Assert.AreEqual(firstDay, recentHist[1]);
            Assert.AreEqual(secondDay, recentHist[2]);

            //Current day 2, no more recentHistory rollover
            StockData.AdvanceDay();
            recentHist = StockData.GetRecentHistory(3);
            Assert.AreEqual(firstDay, recentHist[0]);
            Assert.AreEqual(secondDay, recentHist[1]);
            Assert.AreEqual(thirdDay, recentHist[2]);
        }
Пример #2
0
        public static void RunSimulation()
        {
            var tickDelay = Config.GetInt(Config.STOCK_TICK_DELAY);

            var runSimLocal = true;

            lock (RunSimLock)
            {
                runSimLocal = IsSimRunning;
            }

            while (runSimLocal)
            {
                Thread.Sleep(tickDelay);

                var nextMarketDay = StockData.AdvanceDay();
                foreach (var clientIp in ClientManager.Clients.Keys)
                {
                    var updateConv = new StockUpdateSendConversation(Config.GetInt(Config.STOCK_SERVER_PROCESS_NUM));
                    updateConv.SetInitialState(new StockUpdateSendState(nextMarketDay, clientIp, updateConv, null));
                    ConversationManager.AddConversation(updateConv);
                }

                lock (RunSimLock)
                {
                    runSimLocal = IsSimRunning;
                }
            }
        }
Пример #3
0
        public void LoadDataTest()
        {
            StockData.Init();
            var marketDay    = StockData.GetCurrentDay();
            var numDays      = StockData.GetSize();
            var numCompanies = marketDay.TradedCompanies.Count;

            for (int i = 0; i < numDays; i++)
            {
                Assert.AreEqual("Apple Inc.", marketDay.TradedCompanies[1].Name);
                Assert.AreEqual("AAPL", marketDay.TradedCompanies[1].Symbol);
                Assert.AreEqual("Amazon.com Inc", marketDay.TradedCompanies[2].Name);
                Assert.AreEqual("AMZN", marketDay.TradedCompanies[2].Symbol);
                Assert.AreEqual(numCompanies, marketDay.TradedCompanies.Count);
                marketDay = StockData.AdvanceDay();
            }
        }
Пример #4
0
        public void AdvanceDayTest()
        {
            StockData.Init();
            Assert.AreEqual(StockData.CurrentDayNumber, 0);

            StockData.AdvanceDay();
            Assert.AreEqual(StockData.CurrentDayNumber, 1);

            StockData.AdvanceDay();
            Assert.AreEqual(StockData.CurrentDayNumber, 2);

            StockData.Init();
            Assert.AreEqual(StockData.CurrentDayNumber, 0);

            //ensure proper rollover
            for (int i = 0; i < StockData.GetSize() - 1; i++)
            {
                StockData.AdvanceDay();
            }
            Assert.AreEqual(StockData.GetSize() - 1, StockData.CurrentDayNumber);
            StockData.AdvanceDay();
            Assert.AreEqual(0, StockData.CurrentDayNumber);
        }