using KLHZ.Trader.Core.DataLayer.Entities.Prices; using KLHZ.Trader.Core.Math.Declisions.Services.Cache; namespace KLHZ.Trader.Core.Tests { public class HistoryCacheUnit3Tests { private static PriceChange[] GetHistory(int count, string figi) { var res = new PriceChange[count]; if (count != 0) { var startDt = DateTime.UtcNow.AddSeconds(-count); for (int i = 0; i < count; i++) { startDt = startDt.AddSeconds(1); res[i] = new PriceChange() { Figi = figi, Ticker = figi + "_ticker", Id = i, Time = startDt, Price = (decimal)(i + 0.5), Value = i % 2 == 0 ? i : 0 }; } } return res; } [Test] public void Test1() { var count = 0; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi, hist); var data = cacheUnit.GetData().Result; Assert.That(data.Length == count); } [Test] public void Test2() { var count = 1111; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi, hist); var data = cacheUnit.GetData().Result; Assert.That(data.Length == count); } [Test] public void Test3() { var count = 60 * 60 * 3 * 24; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi, hist); var data = cacheUnit.GetData().Result; Assert.That(data.Length == count); } [Test] public void Test4() { var count = 60 * 60 * 3 * 24; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi); foreach (var item in hist) { cacheUnit.AddData(item); } var data = cacheUnit.GetData().Result; Assert.That(data.Length == count); } [Test] public void Test5() { var count = 60 * 60 * 3 * 24 + 10; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi); for (int i = 0; i < hist.Length - 1; i++) { cacheUnit.AddData(hist[i]); } cacheUnit.AddData(hist.Last()); var data = cacheUnit.GetData().Result; var dt = data.Last().Time - data.First().Time; Assert.That(dt <= TimeSpan.FromDays(3)); Assert.That(dt > TimeSpan.Zero); } [Test] public void Test6() { var count = 60 * 60 * 3 * 24 + 10; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi); for (int i = 0; i < hist.Length - 1; i++) { cacheUnit.AddData(hist[i], "kkk"); } var data = cacheUnit.GetData(key: "kkk").Result; var dt = data.Last().Time - data.First().Time; Assert.That(dt <= TimeSpan.FromHours(1)); Assert.That(dt > TimeSpan.Zero); } [Test] public void Test7() { var count = 60 * 60 * 3 * 24 + 10; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi); for (int i = 0; i < hist.Length - 1; i++) { cacheUnit.AddData(hist[i], "kkk"); } var data = cacheUnit.GetData(TimeSpan.FromMinutes(3), key: "kkk").Result; var dt = data.Last().Time - data.First().Time; Assert.That(dt <= TimeSpan.FromMinutes(3)); Assert.That(dt > TimeSpan.Zero); } [Test] public void Test8() { var count = 60 * 60 * 3 * 24 + 10; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi); for (int i = 0; i < hist.Length - 1; i++) { cacheUnit.AddData(hist[i], "kkk"); } var data = cacheUnit.GetData(TimeSpan.FromMinutes(4), TimeSpan.FromMinutes(3), key: "kkk").Result; var dt = data.Last().Time - data.First().Time; Assert.That(dt <= TimeSpan.FromMinutes(3)); Assert.That(dt > TimeSpan.Zero); } [Test] public void Test9() { var count = 60 * 60 * 3 * 24 + 10; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi); for (int i = 0; i < hist.Length - 1; i++) { cacheUnit.AddData(hist[i], "kkk"); } var data = cacheUnit.GetData(TimeSpan.FromMinutes(4), TimeSpan.FromMinutes(3), key: "kkk", (i) => i.Value != 0).Result; Assert.That(data.All(d => d.Value != 0)); } [Test] public void Test10() { var count = 60 * 60 * 3 * 24 + 10; var figi = "figi"; var hist = GetHistory(count, figi); var cacheUnit = new PriceHistoryCacheUnit3(figi); for (int i = 0; i < hist.Length - 1; i++) { cacheUnit.AddData(hist[i], "kkk"); } var data = cacheUnit.GetData(selector: (i) => i.Value != 0).Result; Assert.That(data.All(d => d.Value != 0)); } } }