namespace YLErp.Modules.EodModule { [TestClass] public class EodCurrencyRateServiceTest { [TestMethod] public void TestGetEodCurrencyRate() { using (var db = DbContextFactory.GetYLDbContext()) { db.Database.ExecuteSqlRaw("delete from eod_currency_rate where ValueDate<='1971-01-01'"); var rate1 = new eod_currency_rate { ValueDate = new DateTime(1970, 12, 31), BuyRate = 6.45, ForeignCurrency = "USD", LocalCurrency = "CNH", OptDate = DateTime.Now, OptId = 0, OptName = "系统", Rate = 6.45, SellRate = 6.45 }; var rates = new eod_currency_rate[5]; rates[0] = rate1; for (var i = 1; i < 5; i++) { var rate2 = rates[i - 1].Clone(); rate2.ValueDate = rate2.ValueDate.AddDays(-i * 2); rate2.BuyRate = rate2.SellRate = rate2.Rate -= 0.1; rates[i] = rate2; } db.eod_currency_rate.AddRange(rates); db.SaveChanges(); } var service = new EodCurrencyRateService(OptUserInfo.SystemUser); var rate = service.GetEodCurrencyRate("USD", "CNH", new DateTime(1970, 12, 31)); Assert.IsTrue(rate != null && rate.Rate == 6.45); service.GetEodCurrencyRate("USD", "CNH", new DateTime(1970, 12, 31), true); Assert.IsTrue(rate != null && rate.Rate == 6.45); rate = service.GetEodCurrencyRate("CNH", "USD", new DateTime(1970, 12, 31)); Assert.IsTrue(rate != null && rate.Rate == 1 / 6.45); rate = service.GetEodCurrencyRate("CNH", "USD", new DateTime(1970, 12, 31), true); Assert.IsTrue(rate != null && rate.Rate == 1 / 6.45); rate = service.GetEodCurrencyRate("USD", "CNY", new DateTime(1970, 12, 31)); Assert.IsTrue(rate == null); rate = service.GetEodCurrencyRate("USD", "CNY", new DateTime(1970, 12, 31), true); Assert.IsTrue(rate == null); rate = service.GetEodCurrencyRate("USD", "CNH", new DateTime(1970, 12, 1), true); Assert.IsTrue(rate == null); } } }