public void RequestWithMoreThan10KHourlyObservationIsCorrectlySaved() { // Arrange var resolution = Resolution.Hour; var startDate = new DateTime(year: 2014, month: 01, day: 01); var endDate = startDate.AddYears(value: 3); // Act _downloader.Run(_eurusd, resolution, startDate, endDate); // Assert var outputFile = Path.Combine(_dataDirectory, "forex/fxcm/hour/eurusd_volume.zip"); var observationsCount = FxcmVolumeAuxiliaryMethods.ReadZipFileData(outputFile).Count; // 3 years x 52 weeks x 5 days x 24 hours = 18720 hours at least. Assert.True(observationsCount >= 18720, $"Actual observations: {observationsCount}"); }
public void ParsedDataIsCorrectlySaved(string ticker, Resolution resolution, string startDate, int requestLength) { // Arrange var symbol = Symbol.Create(ticker, SecurityType.Base, Market.FXCM); var startUtc = Parse.DateTimeExact(startDate, "yyyy-MM-dd"); var endUtc = startUtc.AddDays(requestLength); var data = _downloader.Get(symbol, resolution, startUtc, endUtc); // Act var writer = new FxcmVolumeWriter(resolution, symbol, _dataDirectory); writer.Write(data); // Assert var expectedData = data.Cast <FxcmVolume>().ToArray(); var expectedFolder = Path.Combine(_dataDirectory, $"forex/fxcm/{resolution.ToLower()}"); if (resolution == Resolution.Minute) { expectedFolder = Path.Combine(expectedFolder, symbol.Value.ToLowerInvariant()); } Assert.True(Directory.Exists(expectedFolder)); if (resolution == Resolution.Minute) { var zipFiles = Directory.GetFiles(expectedFolder, "*_volume.zip").Length; // Minus one because the Downloader starts one day earlier. Assert.AreEqual(requestLength + 1, zipFiles); } else { var expectedFilename = $"{symbol.Value.ToLowerInvariant()}_volume.zip"; Assert.True(File.Exists(Path.Combine(expectedFolder, expectedFilename))); } var actualdata = FxcmVolumeAuxiliaryMethods.ReadZipFolderData(expectedFolder); Assert.AreEqual(expectedData.Length, actualdata.Count); var lines = actualdata.Count; for (var i = 0; i < lines - 1; i++) { Assert.AreEqual(expectedData[i].Value, Parse.Long(actualdata[i][1])); Assert.AreEqual(expectedData[i].Transactions, Parse.Int(actualdata[i][2])); } }