public void DownloadsFileOnceConcurrently() { var dataProvider = new ApiDataProviderTest(); var tasks = new List <Task>(); for (var i = 0; i < 10; i++) { tasks.Add(Task.Factory.StartNew(() => dataProvider.Fetch(Path.Combine(Globals.DataFolder, "equity", Market.USA, "hour", "f.zip")))); } tasks.ForEach(task => task.Wait()); dataProvider.DisposeSafely(); Assert.AreEqual(1, dataProvider.DownLoadCount); }
[TestCase("futureoption/cme/minute/es/20200320/20200105_quote_american.zip", 10, false)] // Date based minute data // Index Cases / Index Option Cases *Not included because not allowed to download public void ShouldDownloadTest(string file, int days, bool expected) { // First create our test file and set its time var path = Path.Combine("./ApiDataTests", file); var time = DateTime.Now - TimeSpan.FromDays(days); var directory = Path.GetDirectoryName(path); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } File.Create(path).Dispose(); File.SetLastWriteTime(path, time); var dataProvider = new ApiDataProviderTest(); var result = dataProvider.NeedToDownloadExposed(path); Assert.AreEqual(expected, result); // Cleanup after test File.Delete(path); }