Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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));
        }
Beispiel #7
0
 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();
 }
Beispiel #8
0
        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());
        }
Beispiel #11
0
        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);
        }
Beispiel #16
0
        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());
        }
Beispiel #17
0
        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());
        }
Beispiel #19
0
 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();
 }
Beispiel #20
0
        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());
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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));
        }
Beispiel #23
0
        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);
        }
Beispiel #24
0
        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);
        }
Beispiel #25
0
        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);
        }
Beispiel #26
0
        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());
        }
Beispiel #28
0
        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));
        }
Beispiel #29
0
        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);
        }
Beispiel #30
0
 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();
 }
 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();
 }