public void CalculateDealVolumeInDepoCurrency()
        {
            const int volume = 10000;
            var       deal   = new MarketOrder
            {
                Symbol        = "USDRUB",
                Volume        = volume,
                Side          = 1,
                PriceEnter    = 1.3290f,
                TimeEnter     = DateTime.Now.AddMinutes(-60 * 24 * 3),
                State         = PositionState.Opened,
                ExpertComment = "",
                MasterOrder   = 10001
            };
            var dicQuote = new Dictionary <string, List <QuoteData> >();
            var quoteArc = new QuoteArchive(dicQuote);

            curveCalculator.CalculateDealVolumeInDepoCurrency(deal, new QuoteData(1.3820f, 1.3822f, DateTime.Now), "USD", quoteArc, DateTime.Now);
            Assert.AreEqual(0, deal.VolumeInDepoCurrency, "При разных валютах депозита и сделки и не инициализированом словаре котировок, метод не вернул правильное значение");

            curveCalculator.CalculateDealVolumeInDepoCurrency(deal, new QuoteData(1.3820f, 1.3822f, DateTime.Now), "RUB", quoteArc, DateTime.Now);
            Assert.AreEqual(volume * (1.3822f + 1.3820f) / 2, deal.VolumeInDepoCurrency,
                            "При одинаковых валютах депозита и сделки метод не вернул правильное значение");

            foreach (var smb in DalSpot.Instance.GetTickerNames())
            {
                dicQuote.Add(smb, dailyQuoteStorage.GetQuotes(smb).Select(q => new QuoteData(q.b, q.b, q.a)).ToList());
            }
            quoteArc = new QuoteArchive(dicQuote);

            curveCalculator.CalculateDealVolumeInDepoCurrency(deal, new QuoteData(1.3820f, 1.3822f, DateTime.Now), "RUB", quoteArc, dicQuote["USDRUB"].First().time);
            Assert.AreEqual(volume * (1.3822f + 1.3820f) / 2, deal.VolumeInDepoCurrency,
                            "При инициализированных всех данных и метод не вернул правильное значение");
        }
        public void TestLoadAndUpdate()
        {
            var stor = new DailyQuoteStorage();

            try
            {
                stor.UpdateStorageSync();
            }
            catch (Exception ex)
            {
                Assert.Fail("UpdateStorageSync() failed: " + ex.Message);
            }

            // удостовериться в наличии нужной котировки
            var quotes = stor.GetQuotes("EURUSD");

            Assert.Greater(quotes.Count, 0, "GetQuotes(\"EURUSD\") - has some quotes");

            // котировки за одну дату не повторяются
            Assert.AreEqual(quotes.Select(q => q.a.Date).Distinct().Count(), quotes.Count,
                            "all dates are unique");

            // прочитать котировки снова
            stor.UpdateStorageSync();
            var quotesNew = stor.GetQuotes("EURUSD");

            Assert.Less(quotesNew.Count - quotes.Count, 2, //quotes.SequenceEqual(quotesNew),
                        "Прочитанные заново котировки - количество неизменно");
        }