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)); }
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); }