public void Test_GetLastFormatObject_StoreExistsMultipleNames() { DataTable dt = CreateDataTable("manifest"); var expected = new FormatObject("test1", new DateTime(2003, 1, 1)); DataRow dr = dt.NewRow(); UpdateRow(dr, expected); dt.Rows.Add(dr); dr = dt.NewRow(); UpdateRow(dr, new FormatObject("test2", new DateTime(2004, 6, 1))); dt.Rows.Add(dr); var store = new Mock <ILocalStore>(); store.Setup(x => x.Exists(It.IsAny <string>())).Returns(true); store.Setup(x => x.Read(It.IsAny <string>())).Returns(dt); var target = GetTarget("test1"); target.LocalStore = store.Object; var actual = target.GetLast(); Assert.AreEqual(actual, expected); }
public void Update(FormatObject formatObject) { if (LocalStore.Exists(formatObject.SourceName)) { var dt = LocalStore.Read(formatObject.SourceName); var row = dt.AsEnumerable().Single(x => { return((x.Field <string>("SourceName") == formatObject.SourceName)); }); UpdateRow(row, formatObject); LocalStore.Write(dt, true); } else { var dt = CreateDataTable(formatObject.SourceName); DataRow dr = dt.NewRow(); UpdateRow(dr, formatObject); dt.Rows.Add(dr); LocalStore.Write(dt, false); } }
public void Test_TryDownload_Sequence() { var formatObject1 = new FormatObject("test", new DateTime(2003, 1, 1)); var newDateTime1 = new DateTimeOffset(new DateTime(2003, 1, 2), TimeSpan.FromHours(0)); var formatObject2 = new FormatObject("test", new DateTime(2003, 1, 2)); var newDateTime2 = new DateTimeOffset(new DateTime(2003, 1, 3), TimeSpan.FromHours(0)); var source = new Mock <ISourceSpecification>(); source.SetupGet(x => x.UriFormat) .Returns(@"http://www.forexite.com/free_forex_quotes/{Year}/{MonthNumber}/{DayNumber}{MonthNumber}{ShortYear}.zip"); source.SetupGet(x => x.FilenameFormat).Returns("{DayNumber}{MonthNumber}{ShortYear}.zip"); source.Setup(x => x.IsValidFile(It.IsAny <IWebResponse>())) .Returns <IWebResponse>(y => { return(y.ContentType.Equals(@"application/zip")); }); source.Setup(x => x.GetUpperBoundExclusive(formatObject1)).Returns(newDateTime1); source.Setup(x => x.GetUpperBoundExclusive(formatObject2)).Returns(newDateTime2); var formatIterator = new Mock <IFormatIterator>(); formatIterator.Setup(x => x.GetNextCandidates(It.Is <FormatObject>(y => y.Equals(formatObject1)))) .Returns(new[] { formatObject2, }); DirectoryInfo downloadLocation = new DirectoryInfo(@"d:\test"); var webResponse = new Mock <IWebResponse>(); webResponse.SetupGet(x => x.ContentType).Returns(@"application/zip"); var webClient = new Mock <IWebClient>(); webClient.Setup(x => x.DownloadFile(It.IsAny <Uri>(), It.IsAny <string>())).Returns(webResponse.Object); var target = new Downloader() { Source = source.Object, DownloadLocation = downloadLocation, FormatIterator = formatIterator.Object, WebClient = webClient.Object, }; var expected = new TryDownloadResult() { DestinationFile = new FileInfo(string.Format(@"{0}\_020103.zip", downloadLocation)), FormatObject = formatObject2, IsSuccess = true, UpperBoundExclusive = newDateTime2 }; var actual = target.TryDownload(formatObject1); webClient.Verify(x => x.DownloadFile(It.IsAny <Uri>(), It.IsAny <string>()), Times.Once()); source.Verify(x => x.IsValidFile(webResponse.Object), Times.Once()); source.Verify(x => x.GetUpperBoundExclusive(formatObject2), Times.Once()); Assert.AreEqual(actual.DestinationFile.FullName, expected.DestinationFile.FullName); Assert.AreEqual(actual.FormatObject, expected.FormatObject); Assert.AreEqual(actual.IsSuccess, expected.IsSuccess); Assert.AreEqual(actual.UpperBoundExclusive, expected.UpperBoundExclusive); }
public void Test_UpdateManifest_Exists() { var formatObject = new FormatObject("test", new DateTime(2003, 1, 1)); DataTable dt = CreateDataTable("test"); DataRow dr = dt.NewRow(); UpdateRow(dr, formatObject); dt.Rows.Add(dr); var store = new Mock <ILocalStore>(); store.Setup(x => x.Exists(It.IsAny <string>())).Returns(true); store.Setup(x => x.Read("test")).Returns(dt); var target = GetTarget(); target.LocalStore = store.Object; target.Update(formatObject); store.Verify(x => x.Exists("test"), Times.Once()); store.Verify(x => x.Read("test"), Times.Once()); store.Verify(x => x.Write(dt, true), Times.Once()); }
public DownloadAggregatorResult DownloadFirst(FormatObject lastDownloadedFormat) { var aggregateResult = new DownloadAggregatorResult() { IsSuccess = false, CurrentPosition = lastDownloadedFormat, }; var result = Downloader.TryDownload(lastDownloadedFormat); if (result.IsSuccess) { aggregateResult.CurrentPosition = lastDownloadedFormat; if (!(CurrentAggregatedFiles.Any(x => x.Item2 == result.DestinationFile))) { CurrentAggregatedFiles.Enqueue(Tuple.Create(lastDownloadedFormat, result.DestinationFile)); if (CurrentAggregatedFiles.Count > NumberOfFilesToAggregate) { CurrentAggregatedFiles.Dequeue(); } if (CurrentAggregatedFiles.Count == NumberOfFilesToAggregate) { aggregateResult.IsSuccess = true; aggregateResult.DestinationFiles = CurrentAggregatedFiles.Select(x => x.Item2).ToArray(); CurrentAggregatedFiles.Dequeue(); } } } return(aggregateResult); }
public void Extracter_Extract_Default() { var format = new FormatObject("test", DateTime.Now, TimeZoneInfo.Utc); var source = new Mock <ISourceSpecification>(); source.Setup(x => x.GetUpperBoundExclusive(It.IsAny <FormatObject>())).Returns <FormatObject>(y => y.DateTime.AddDays(1)); var downloader = new Mock <IDownloader>(); downloader.Setup(x => x.TryDownload(default(FormatObject))).Returns(default(TryDownloadResult)); downloader.SetupAllProperties(); var formatIterator = new Mock <IFormatIterator>(); formatIterator.Setup(x => x.GetNextCandidates(It.IsAny <FormatObject>())) .Returns <FormatObject>(y => { if (y.DateTime == default(FormatObject).DateTime) { return(new[] { format }); } else { var ret = y; ret.DateTime.AddDays(1); return(new[] { ret }); } }); var downloadAggregator = new DownloadAggregator() { NumberOfFilesToAggregate = 2, Source = source.Object, Downloader = downloader.Object, FormatIterator = formatIterator.Object }; downloadAggregator.Initialize(); var target = new Extracter() { Source = source.Object, TempDownloadLocation = TempLocation, Aggregator = downloadAggregator }; var expected = new FileNameExtractionResult[] { }; var actual = target.Extract(default(FormatObject)); AreEqual(expected, actual.Cast <FileNameExtractionResult>()); formatIterator.Verify(x => x.GetNextCandidates(default(FormatObject)), Times.Exactly(1)); downloader.Verify(x => x.TryDownload(format), Times.Exactly(1)); }
private void InitPage() { this.formatNodes = new ArrayList(); this.propChangesPending = false; this.fontNameChanged = false; this.currentFormatNode = null; this.currentFormatObject = null; this.formatTree.Nodes.Clear(); this.InitFormatUI(); }
public void Test_Extract_OnlyStopsWhenCurrentDate() { var source = new Mock <ISourceSpecification>(); source.Setup(x => x.GetDiscriminatingFilePairs()).Returns(() => { return(new[] { default(Pair) }); }); var formatObject1 = new FormatObject("test", DateTime.Now.AddDays(-2)); var formatObject2 = new FormatObject("test", DateTime.Now.AddDays(-1)); var downloader = new Mock <IDownloader>(); downloader.Setup(x => x.TryDownload(default(FormatObject))).Returns( new TryDownloadResult() { IsSuccess = false, DestinationFile = new FileInfo(@"d:\test.test"), FormatObject = formatObject1, UpperBoundExclusive = DateTimeOffset.Now.AddDays(-1), }); downloader.Setup(x => x.TryDownload(It.Is <FormatObject>(y => y.LocalDateTime == formatObject1.LocalDateTime))).Returns( new TryDownloadResult() { IsSuccess = false, DestinationFile = new FileInfo(@"d:\test.test"), FormatObject = formatObject2, UpperBoundExclusive = DateTimeOffset.Now.AddDays(0), }); downloader.Setup(x => x.TryDownload(It.Is <FormatObject>(y => y.LocalDateTime == formatObject2.LocalDateTime))).Returns( new TryDownloadResult() { IsSuccess = false, DestinationFile = new FileInfo(@"d:\test.test"), FormatObject = formatObject2, UpperBoundExclusive = DateTimeOffset.Now.AddDays(1), }); var target = new Extracter() { TempDownloadLocation = TempLocation, Source = source.Object, Downloader = downloader.Object, }; var expected = new FileNameExtractionResult[] {}; var actual = target.Extract(default(FormatObject)); Assert.IsTrue(actual.SequenceEqual(expected.Cast <IExtractionResult <FormatObject> >())); downloader.Verify(x => x.TryDownload(default(FormatObject)), Times.Exactly(1)); downloader.Verify(x => x.TryDownload(formatObject1), Times.Exactly(1)); downloader.Verify(x => x.TryDownload(formatObject2), Times.Exactly(1)); }
public void ContinuousFormatIterator_GetNextCandidates_ExceptionIfOneIsTheSame() { var format = new FormatObject("test", DateTime.MinValue, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); Mock <ISourceSpecification> source = new Mock <ISourceSpecification>(); source.Setup(x => x.GetNextPossibleFormatObjects(It.IsAny <FormatObject>())).Returns <FormatObject>(y => new [] { y }); var target = new ContinuousFormatIterator(source.Object); target.GetNextCandidates(format); }
public void Test_GetNextCandidatesNonDefaultFormat() { Mock <ISourceSpecification> source = new Mock <ISourceSpecification>(); var format = new FormatObject("test", DateTime.MinValue); var target = new ContinuousFormatIterator(source.Object); target.GetNextCandidates(format); source.Verify(x => x.GetPossibleFormatObjects(It.IsAny <DateTimeOffset>()), Times.Never()); source.Verify(x => x.GetNextPossibleFormatObjects(format), Times.Once()); }
public void Test_Forexite_GetPossibleFormatObjectsSummer() { var forexite = new ForexiteSourceSpecification(); IEnumerable <FormatObject> expected = new FormatObject[] { new FormatObject("Forexite", new DateTime(2002, 6, 3, 0, 0, 0)) }; var actual = forexite.GetPossibleFormatObjects(new DateTimeOffset(2002, 6, 2, 22, 0, 0, TimeSpan.Zero)); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void ContinuousFormatIterator_GetNextCandidates_NonDefaultFormat() { Mock <ISourceSpecification> source = new Mock <ISourceSpecification>(); var format = new FormatObject("test", DateTime.MinValue, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); var target = new ContinuousFormatIterator(source.Object); target.GetNextCandidates(format); source.Verify(x => x.GetPossibleFormatObjects(It.IsAny <DateTimeOffset>()), Times.Never()); source.Verify(x => x.GetNextPossibleFormatObjects(format), Times.Once()); }
public void DownloadAggregator_DownloadFirst_Two_Incomplete() { var numDaysToAggregate = 2; var format = new FormatObject( sourceName: "test", dateTime: new DateTimeOffset(new DateTime(2001, 1, 1), TimeSpan.FromHours(0)), localTimeZone: TimeZoneInfo.Utc); var file = new FileInfo(@"d:\temp\test1.test"); var downloader = new Mock <IDownloader>(); downloader.Setup(x => x.TryDownload(format)).Returns(new TryDownloadResult() { DestinationFile = file, IsSuccess = true }); var formatIterator = new Mock <IFormatIterator>(); formatIterator.Setup(x => x.GetNextCandidates(default(FormatObject))).Returns(new[] { format }); var source = new Mock <ISourceSpecification>(); source.SetupGet(x => x.NumberOfFilesToAggregate).Returns(numDaysToAggregate); var target = new DownloadAggregator() { NumberOfFilesToAggregate = numDaysToAggregate, Source = source.Object, Downloader = downloader.Object, FormatIterator = formatIterator.Object }; target.Initialize(); var expected = new DownloadAggregatorResult() { CurrentPosition = format, }; var actual = target.DownloadFirst(format); AreEqual(expected, actual); Assert.AreEqual(1, target.CurrentAggregatedFiles.Count()); Assert.IsTrue(target.CurrentAggregatedFiles.SequenceEqual(new[] { Tuple.Create(format, file) })); downloader.Verify(x => x.TryDownload(format), Times.Once()); }
public void DownloadAggregator_DownloadNext_DownloadFailure() { var numDaysToAggregate = 1; var format1 = new FormatObject( sourceName: "test", dateTime: new DateTimeOffset(new DateTime(2001, 1, 1), TimeSpan.FromHours(0)), localTimeZone: TimeZoneInfo.Utc); var format2 = new FormatObject( sourceName: "test", dateTime: new DateTimeOffset(new DateTime(2001, 1, 2), TimeSpan.FromHours(0)), localTimeZone: TimeZoneInfo.Utc); var downloader = new Mock <IDownloader>(); downloader.Setup(x => x.TryDownload(It.IsAny <FormatObject>())).Returns(new TryDownloadResult() { IsSuccess = false }); var formatIterator = new Mock <IFormatIterator>(); formatIterator.Setup(x => x.GetNextCandidates(It.Is <FormatObject>(y => y.DateTime == format1.DateTime))).Returns(new [] { format2 }); var source = new Mock <ISourceSpecification>(); source.SetupGet(x => x.NumberOfFilesToAggregate).Returns(numDaysToAggregate); var target = new DownloadAggregator() { NumberOfFilesToAggregate = numDaysToAggregate, Source = source.Object, Downloader = downloader.Object, FormatIterator = formatIterator.Object }; target.Initialize(); var expected = new DownloadAggregatorResult() { CurrentPosition = format2, }; var actual = target.DownloadNext(format1); Assert.AreEqual(expected, actual); Assert.AreEqual(0, target.CurrentAggregatedFiles.Count()); formatIterator.Verify(x => x.GetNextCandidates(format1), Times.Once()); downloader.Verify(x => x.TryDownload(format2), Times.Once()); }
public void ContinuousFormatIterator_GetNextCandidates_ExceptionIfOneIsPrevious() { var format1 = new FormatObject("test", new DateTime(2001, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); var format2 = new FormatObject("test", new DateTime(2001, 1, 2), TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); Mock <ISourceSpecification> source = new Mock <ISourceSpecification>(); source.Setup(x => x.GetUpperBoundExclusive(It.IsAny <FormatObject>())).Returns <FormatObject>(y => y.DateTime.AddDays(1)); source.Setup(x => x.GetNextPossibleFormatObjects(It.Is <FormatObject>(y => y.DateTime == format2.DateTime))).Returns(new [] { format1 }); var target = new ContinuousFormatIterator(source.Object); target.GetNextCandidates(format2); }
public void Test_UpdateManifest_UpdatesOnlyOneRow() { var formatObject1 = new FormatObject("test1", new DateTime(2001, 1, 1)); var formatObject2 = new FormatObject("test", new DateTime(2001, 1, 1)); var formatObject3 = new FormatObject("test", new DateTime(2002, 1, 1)); DataTable dtStored = CreateDataTable("test"); DataRow drStored = dtStored.NewRow(); UpdateRow(drStored, formatObject1); dtStored.Rows.Add(drStored); drStored = dtStored.NewRow(); UpdateRow(drStored, formatObject2); dtStored.Rows.Add(drStored); DataTable dtExpected = CreateDataTable("test"); DataRow drExpected = dtExpected.NewRow(); UpdateRow(drExpected, formatObject1); dtExpected.Rows.Add(drExpected); drExpected = dtExpected.NewRow(); UpdateRow(drExpected, formatObject3); dtExpected.Rows.Add(drExpected); var store = new Mock <ILocalStore>(); store.Setup(x => x.Exists("test")).Returns(true); store.Setup(x => x.Read("test")).Returns(dtStored); store.Setup(x => x.Write(It.IsAny <DataTable>(), true)).Callback <DataTable, bool>((x, y) => { for (int r = 0; r < dtExpected.Rows.Count; r++) { for (int c = 0; c < dtExpected.Columns.Count; c++) { Assert.AreEqual(dtExpected.Rows[r][c], x.Rows[r][c]); } } }); var target = GetTarget(); target.LocalStore = store.Object; target.Update(formatObject3); store.Verify(x => x.Exists("test"), Times.Once()); store.Verify(x => x.Read("test"), Times.Once()); store.Verify(x => x.Write(It.IsAny <DataTable>(), true), Times.Once()); }
public void Test_Forexite_GetNextPossibleFormatObjects() { var forexite = new ForexiteSourceSpecification(); FormatObject formatObject = new FormatObject("Forexite", new DateTime(2001, 1, 3)); IEnumerable <FormatObject> expected = new FormatObject[] { new FormatObject("Forexite", new DateTime(2001, 1, 4)) }; var actual = forexite.GetNextPossibleFormatObjects(formatObject); Assert.IsTrue(expected.SequenceEqual(actual)); }
public void DownloadAggregator_DownloadFirst_One() { var numDaysToAggregate = 1; var format = new FormatObject( sourceName: "test", dateTime: new DateTimeOffset(new DateTime(2001, 1, 1), TimeSpan.FromHours(0)), localTimeZone: TimeZoneInfo.Utc); var file = new FileInfo(@"d:\temp\test1.test"); var downloader = new Mock <IDownloader>(); downloader.Setup(x => x.TryDownload(format)).Returns(new TryDownloadResult() { DestinationFile = file, IsSuccess = true }); var formatIterator = new Mock <IFormatIterator>(); var source = new Mock <ISourceSpecification>(); var target = new DownloadAggregator() { NumberOfFilesToAggregate = numDaysToAggregate, Source = source.Object, Downloader = downloader.Object, FormatIterator = formatIterator.Object }; target.Initialize(); var expected = new DownloadAggregatorResult() { IsSuccess = true, CurrentPosition = format, DestinationFiles = new[] { file }, }; var actual = target.DownloadFirst(format); AreEqual(expected, actual); Assert.AreEqual(0, target.CurrentAggregatedFiles.Count()); downloader.Verify(x => x.TryDownload(format), Times.Once()); }
private void OnSelChangedFormatObject(object source, TreeViewEventArgs e) { if (this.propChangesPending) { this.SaveFormatProperties(); } this.currentFormatNode = (FormatTreeNode)this.formatTree.SelectedNode; if (this.currentFormatNode != null) { this.currentFormatObject = this.currentFormatNode.FormatObject; } else { this.currentFormatObject = null; } this.LoadFormatProperties(); }
public void Test_UpdateManifest_DoesNotExist() { var formatObject = new FormatObject("test", new DateTime(2003, 1, 1)); var store = new Mock <ILocalStore>(); store.Setup(x => x.Exists(It.IsAny <string>())).Returns(false); var target = GetTarget(); target.LocalStore = store.Object; target.Update(formatObject); store.Verify(x => x.Exists("test"), Times.Once()); store.Verify(x => x.Write(It.IsAny <DataTable>(), false), Times.Once()); }
public void Downloader_TryDownload_IncorrectResponse() { var formatObject = new FormatObject("test", new DateTime(2003, 3, 2), TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); var source = new Mock <ISourceSpecification>(); source.SetupGet(x => x.UriFormat) .Returns(@"http://www.forexite.com/free_forex_quotes/{Year}/{MonthNumber}/{DayNumber}{MonthNumber}{ShortYear}.zip"); source.SetupGet(x => x.FilenameFormat).Returns("{DayNumber}{MonthNumber}{ShortYear}.zip"); source.Setup(x => x.IsValidFile(It.IsAny <IWebResponse>())) .Returns <IWebResponse>(y => { return(y.ContentType.Equals(@"application/zip")); }); DirectoryInfo downloadLocation = new DirectoryInfo(@"d:\test"); var webResponse = new Mock <IWebResponse>(); webResponse.Setup(x => x.ContentType).Returns(@"text\html"); var webClient = new Mock <IWebClient>(); webClient.Setup(x => x.DownloadFile(It.IsAny <Uri>(), It.IsAny <string>())).Returns(webResponse.Object); var target = new Downloader() { Source = source.Object, DownloadLocation = downloadLocation, WebClient = webClient.Object }; var expected = new TryDownloadResult() { DestinationFile = default(FileInfo), IsSuccess = false, }; var actual = target.TryDownload(formatObject); webClient.Verify(x => x.DownloadFile(It.IsAny <Uri>(), It.IsAny <string>()), Times.Once()); source.Verify(x => x.IsValidFile(webResponse.Object), Times.Once()); Assert.AreEqual(actual.DestinationFile, expected.DestinationFile); //Assert.AreEqual(actual.FormatObject, expected.FormatObject); Assert.AreEqual(actual.IsSuccess, expected.IsSuccess); }
public void Test_Extract_ExtractBreaksOutOfLoopIfAttemptSameDownloadTwice() { var source = new Mock <ISourceSpecification>(); source.Setup(x => x.GetDiscriminatingFilePairs()).Returns(() => { return(new[] { default(Pair) }); }); var formatObject = new FormatObject("test", new DateTime(2003, 1, 1)); var downloader = new Mock <IDownloader>(); downloader.Setup(x => x.TryDownload(default(FormatObject))) .Returns(new TryDownloadResult() { IsSuccess = true, DestinationFile = new FileInfo(@"d:\test.test"), FormatObject = formatObject, }); var target = new Extracter() { TempDownloadLocation = TempLocation, Source = source.Object, Downloader = downloader.Object, }; var expected = new FileNameExtractionResult[] { new FileNameExtractionResult() { FileFullName = @"d:\test.test", Pair = default(Pair), CurrentPosition = formatObject, IsSuccess = true }, }; var actual = target.Extract(default(FormatObject)); Assert.IsTrue(actual.SequenceEqual(expected.Cast <IExtractionResult <FormatObject> >())); downloader.Verify(x => x.TryDownload(default(FormatObject)), Times.Exactly(1)); downloader.Verify(x => x.TryDownload(formatObject), Times.Exactly(1)); }
public void Test_Clear() { var target = GetTarget("test1"); var other = GetTarget("test2"); var expected = new DateTime(2003, 1, 1); target.LocalStore = CreateUnmockedStore(); other.LocalStore = CreateUnmockedStore(); var format1 = new FormatObject("test1", expected); var format2 = new FormatObject("test2", expected); target.Update(format1); other.Update(format2); target.Clear(); Assert.AreEqual(new DateTime(2003, 1, 1), other.GetLast().LocalDateTime); Assert.AreEqual(default(DateTime), target.GetLast().LocalDateTime); }
public void Manifest_Clear() { var target = GetTarget("test1"); var other = GetTarget("test2"); var expected = new DateTime(2003, 1, 1); target.LocalStore = CreateUnmockedStore(); other.LocalStore = CreateUnmockedStore(); var format1 = new FormatObject("test1", expected, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); var format2 = new FormatObject("test2", expected, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); target.Update(format1); other.Update(format2); target.Clear(); Assert.AreEqual(new DateTime(2003, 1, 1), other.GetLast().DateTime); Assert.AreEqual(default(DateTime), target.GetLast().DateTime); }
public void Manifest_UnMocked() { var expected = new FormatObject("test", new DateTime(2003, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); DataTable dt = CreateDataTable("test"); DataRow dr = dt.NewRow(); UpdateRow(dr, expected); dt.Rows.Add(dr); var store = CreateUnmockedStore(); var target = GetTarget("test"); target.LocalStore = store; target.Update(expected); var actual = target.GetLast(); Assert.AreEqual(actual, expected); }
public void Test_UnMocked() { var expected = new FormatObject("test", new DateTime(2003, 1, 1)); DataTable dt = CreateDataTable("test"); DataRow dr = dt.NewRow(); UpdateRow(dr, expected); dt.Rows.Add(dr); var store = CreateUnmockedStore(); var target = GetTarget("test"); target.LocalStore = store; target.Update(expected); var actual = target.GetLast(); Assert.AreEqual(actual, expected); }
public void DownloadAggregator_DownloadFirst_DownloadFailure() { var numDaysToAggregate = 1; var format = new FormatObject( sourceName: "test", dateTime: new DateTimeOffset(new DateTime(2001, 1, 1), TimeSpan.FromHours(0)), localTimeZone: TimeZoneInfo.Utc); var downloader = new Mock <IDownloader>(); var formatIterator = new Mock <IFormatIterator>(); var source = new Mock <ISourceSpecification>(); source.SetupGet(x => x.NumberOfFilesToAggregate).Returns(numDaysToAggregate); var target = new DownloadAggregator() { NumberOfFilesToAggregate = numDaysToAggregate, Source = source.Object, Downloader = downloader.Object, FormatIterator = formatIterator.Object }; target.Initialize(); var expected = new DownloadAggregatorResult() { CurrentPosition = format, }; var actual = target.DownloadFirst(format); Assert.AreEqual(expected, actual); Assert.AreEqual(0, target.CurrentAggregatedFiles.Count()); downloader.Verify(x => x.TryDownload(format), Times.Once()); }
public TryDownloadResult TryDownload(FormatObject formatObject) { if (formatObject.Equals(default(FormatObject)) || (Source == null) || (string.IsNullOrWhiteSpace(Source.UriFormat)) || (string.IsNullOrWhiteSpace(Source.FilenameFormat))) { return(default(TryDownloadResult)); } Uri uri = new Uri(Source.UriFormat.FormatWith(formatObject)); FileInfo destinationFile = new FileInfo(Path.Combine( DownloadLocation.FullName, string.Format("{0}_{1}", Source.SourceName, Source.FilenameFormat.FormatWith(formatObject)))); try { var response = WebClient.DownloadFile(uri, destinationFile.FullName); if (Source.IsValidFile(response)) { return(new TryDownloadResult() { IsSuccess = true, DestinationFile = destinationFile, }); } } catch (System.Net.WebException) { // Do nothing - try the next candidate until one is available } return(default(TryDownloadResult)); }
public void Manifest_GetLastFormatObject_StoreExists() { DataTable dt = CreateDataTable("test"); DataRow dr = dt.NewRow(); UpdateRow(dr, new FormatObject("test", new DateTime(2003, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"))); dt.Rows.Add(dr); var store = new Mock <ILocalStore>(); store.Setup(x => x.Exists(It.IsAny <string>())).Returns(true); store.Setup(x => x.Read(It.IsAny <string>())).Returns(dt); var target = GetTarget("test"); target.LocalStore = store.Object; var expected = new FormatObject("test", new DateTime(2003, 1, 1), TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")); var actual = target.GetLast(); Assert.AreEqual(actual, expected); }
public DateTimeOffset GetUpperBoundExclusive(FormatObject formatObject) { return(new DateTimeOffset(TimeZoneInfo.ConvertTime(formatObject.LocalDateTime.AddDays(1), TimeZoneInfo, TimeZoneInfo.Utc), TimeSpan.Zero)); }
private void OnSelChangedFormatObject(object source, TreeViewEventArgs e) { if (this.propChangesPending) { this.SaveFormatProperties(); } this.currentFormatNode = (FormatTreeNode) this.formatTree.SelectedNode; if (this.currentFormatNode != null) { this.currentFormatObject = this.currentFormatNode.FormatObject; } else { this.currentFormatObject = null; } this.LoadFormatProperties(); }