예제 #1
0
파일: QuoteTest.cs 프로젝트: Gelian/Trader
        public void QuoteStore_RemoveQuote()
        {
            var expDate = new DateTime(2013, 08, 07, 22, 35, 00, DateTimeKind.Utc);
              var expDate2 = expDate.AddMinutes(2);
              var expDate3 = expDate.AddMinutes(3);
              var expDate4 = expDate.AddMinutes(5);

              var expQuote = new Quote
            {
              Symbol = "EURUSD",
              Ask = 1.33924,
              Bid = 1.33907,
              Time = expDate
            };

              var expQuote2 = new Quote
            {
              Symbol = "EURUSD",
              Ask = 1.33925,
              Bid = 1.33908,
              Time = expDate2
            };

              var expQuote3 = new Quote
            {
              Symbol = "EURUSD",
              Ask = 1.33929,
              Bid = 1.33912,
              Time = expDate3
            };

              var expQuote4 = new Quote
            {
              Symbol = "EURUSD",
              Ask = 1.33927,
              Bid = 1.33910,
              Time = expDate4
            };

              var quoteStore4Elements = new QuoteStore();

              quoteStore4Elements.Add(expQuote);
              quoteStore4Elements.Add(expQuote2);
              quoteStore4Elements.Add(expQuote3);
              quoteStore4Elements.Add(expQuote4);

              quoteStore4Elements.Remove(expDate.AddMinutes(2), expDate.AddMinutes(3));

              Assert.AreEqual(expQuote, quoteStore4Elements.Get(expDate));
              Assert.AreEqual(null, quoteStore4Elements.Get(expDate2));
              Assert.AreEqual(null, quoteStore4Elements.Get(expDate3));
              Assert.AreEqual(expQuote4, quoteStore4Elements.Get(expDate4));
        }
예제 #2
0
파일: QuoteTest.cs 프로젝트: Gelian/Trader
        public void QuoteStore_MT_RemoveQuotesWhenManyWritesInQuotes()
        {
            var expDate = new DateTime(2013, 08, 07, 22, 35, 00, DateTimeKind.Utc);

              var quoteStore = new QuoteStore();

              var tasks = new Task[100];

              for (int i = 0; i < 100; i++)
              {
            int i1 = i;
            tasks[i] = Task.Factory.StartNew(() =>
            {
              for (int j = 0; j < 10; j++)
              {
            quoteStore.Add(new Quote
            {
              Symbol = "EURUSD",
              Ask = 1.33925,
              Bid = 1.33908,
              Time = expDate.AddSeconds(i1*10 + j)
            });
            Thread.Sleep(10);  //hack
              }
              quoteStore.Remove(expDate.AddSeconds(10), expDate.AddSeconds(13));
            });
              }

              Task.WaitAll(tasks);

              Assert.AreEqual(expDate.AddSeconds(9), quoteStore.Get(expDate.AddSeconds(9)).Time);
              Assert.AreEqual(null, quoteStore.Get(expDate.AddSeconds(10)));
              Assert.AreEqual(null, quoteStore.Get(expDate.AddSeconds(11)));
              Assert.AreEqual(null, quoteStore.Get(expDate.AddSeconds(12)));
              Assert.AreEqual(null, quoteStore.Get(expDate.AddSeconds(13)));
              Assert.AreEqual(expDate.AddSeconds(14), quoteStore.Get(expDate.AddSeconds(14)).Time);
        }