public void TestDataSourceId()
        {
            string fname = Path.GetTempFileName();
            var settings = new ApplicationSettings(fname);
            var dataSource = new DataSource("foo");
            dataSource.Id = Guid.NewGuid();
            settings.DataSources.Add(dataSource);
            settings.Save();

            var settings2 = new ApplicationSettings(fname);
            bool neededPatching;
            settings2.Restore(out neededPatching);
            neededPatching.Should().BeFalse();
            settings2.DataSources.Count.Should().Be(1);
            DataSource dataSource2 = settings2.DataSources[0];
            dataSource2.File.Should().Be("foo");
            dataSource2.Id.Should().Be(dataSource.Id);
        }
        public void TestRestore3()
        {
            string fname = Path.GetTempFileName();
            var settings = new ApplicationSettings(fname);
            DateTime timestamp = DateTime.Now;
            settings.DataSources.Add(new DataSource("dawadaw")
                {
                    LastViewed = timestamp
                });

            settings.Save();
            settings = new ApplicationSettings(fname);
            settings.Restore();

            settings.DataSources.Count.Should().Be(1);
            DataSource source = settings.DataSources[0];
            source.Should().NotBeNull();
            source.LastViewed.Should().Be(timestamp);
        }
        public void TestStore1()
        {
            string path = Path.GetTempPath();
            const string folderName = "ApplicationSettingsTest";
            const string fileName = "settings.xml";
            string fileFolder = Path.Combine(path, folderName);
            string filePath = Path.Combine(fileFolder, fileName);

            if (File.Exists(filePath))
                File.Delete(filePath);

            if (Directory.Exists(fileFolder))
                Directory.Delete(fileFolder);

            var settings = new ApplicationSettings(filePath);
            settings.QuickFilters.Add(new QuickFilter());
            settings.Save().Should().BeTrue();

            File.Exists(filePath);
            var settings2 = new ApplicationSettings(filePath);
            settings2.Restore();
            settings2.QuickFilters.Count.Should().Be(1);
        }
        public void TestStoreRestore()
        {
            const string fileName = "applicationsettingstest.xml";
            var settings = new ApplicationSettings(fileName);
            settings.MainWindow.Left = 1;
            settings.MainWindow.Top = 2;
            settings.MainWindow.Width = 3;
            settings.MainWindow.Height = 4;
            settings.MainWindow.State = WindowState.Maximized;
            settings.DataSources.Add(new DataSource(@"SharpRemote.Host.1600.log")
                {
                    Id = Guid.NewGuid(),
                    FollowTail = true,
                    SearchTerm = "foobar",
                    LevelFilter = LevelFlags.Debug,
                    VisibleLogLine = new LogLineIndex(1),
                    ShowLineNumbers = false,
                    ActivatedQuickFilters =
                        {
                            Guid.NewGuid(),
                            Guid.NewGuid(),
                            Guid.NewGuid(),
                        }
                });
            settings.DataSources.Add(new DataSource(@"SharpRemote.Host.1700.log")
            {
                Id = Guid.NewGuid(),
                FollowTail = false,
                ShowLineNumbers = true,
            });
            List<Guid> guids = settings.DataSources[0].ActivatedQuickFilters.ToList();
            settings.QuickFilters.Add(new QuickFilter
                {
                    Value = "foobar",
                    IgnoreCase = true,
                    MatchType = QuickFilterMatchType.RegexpFilter,
                    IsInverted = true,
                });
            settings.QuickFilters.Add(new QuickFilter
            {
                Value = "clondykebar",
                IgnoreCase = false,
                MatchType = QuickFilterMatchType.WildcardFilter,
                IsInverted = false,
            });
            Guid filterId1 = settings.QuickFilters[0].Id;
            Guid filterId2 = settings.QuickFilters[1].Id;
            settings.DataSources.SelectedItem = settings.DataSources[0].Id;
            settings.Save().Should().BeTrue();

            settings = new ApplicationSettings(fileName);
            settings.Restore();
            settings.MainWindow.Left.Should().Be(1);
            settings.MainWindow.Top.Should().Be(2);
            settings.MainWindow.Width.Should().Be(3);
            settings.MainWindow.Height.Should().Be(4);
            settings.MainWindow.State.Should().Be(WindowState.Maximized);
            settings.DataSources.Count.Should().Be(2);
            settings.DataSources[0].File.Should().Be(@"SharpRemote.Host.1600.log");
            settings.DataSources[0].FollowTail.Should().BeTrue();
            settings.DataSources[0].ShowLineNumbers.Should().BeFalse();
            settings.DataSources[0].SearchTerm.Should().Be("foobar");
            settings.DataSources[0].LevelFilter.Should().Be(LevelFlags.Debug);
            settings.DataSources[0].VisibleLogLine.Should().Be(new LogLineIndex(1));
            settings.DataSources[0].ActivatedQuickFilters.Should().Equal(guids);
            settings.DataSources[1].File.Should().Be(@"SharpRemote.Host.1700.log");
            settings.DataSources[1].FollowTail.Should().BeFalse();
            settings.DataSources[1].ShowLineNumbers.Should().BeTrue();
            settings.DataSources.SelectedItem.Should().NotBe(Guid.Empty);
            settings.DataSources.SelectedItem.Should().Be(settings.DataSources[0].Id);

            settings.QuickFilters.Count.Should().Be(2);
            settings.QuickFilters[0].Id.Should().Be(filterId1);
            settings.QuickFilters[0].Value.Should().Be("foobar");
            settings.QuickFilters[0].IgnoreCase.Should().BeTrue();
            settings.QuickFilters[0].MatchType.Should().Be(QuickFilterMatchType.RegexpFilter);
            settings.QuickFilters[0].IsInverted.Should().BeTrue();

            settings.QuickFilters[1].Id.Should().Be(filterId2);
            settings.QuickFilters[1].Value.Should().Be("clondykebar");
            settings.QuickFilters[1].IgnoreCase.Should().BeFalse();
            settings.QuickFilters[1].MatchType.Should().Be(QuickFilterMatchType.WildcardFilter);
            settings.QuickFilters[1].IsInverted.Should().BeFalse();
        }
        public void TestRestore4()
        {
            string fname = Path.GetTempFileName();
            var settings = new ApplicationSettings(fname);
            settings.DataSources.Add(new DataSource("dawadaw")
            {
                VisibleLogLine = 42,
                HorizontalOffset = 142.42
            });

            settings.Save();
            settings = new ApplicationSettings(fname);
            settings.Restore();

            settings.DataSources.Count.Should().Be(1);
            DataSource source = settings.DataSources[0];
            source.Should().NotBeNull();
            source.VisibleLogLine.Should().Be(42);
            source.HorizontalOffset.Should().Be(142.42);
        }