Exemplo n.º 1
0
        public void WasChangedExternally_WhenFileWasModified_ReturnsTrueUntilLoadIsPerformed()
        {
            using (var file = TestFileName.Create("x", Toml.FileExtension))
            {
                // Arrange
                File.WriteAllText(file, "x=0");
                var cfg = new FileConfigStore(TomlSettings.DefaultInstance, file);
                cfg.Load();
                using (var sw = File.AppendText(file))
                {
                    sw.WriteLine();
                    sw.WriteLine("y=1");
                }

                // Act
                var r1 = cfg.WasChangedExternally();
                var r2 = cfg.WasChangedExternally();
                cfg.Load();
                var r3 = cfg.WasChangedExternally();

                // Assert
                r1.Should().Be(true);
                r2.Should().Be(true);
                r3.Should().Be(false);
            }
        }
        public void TransformToSourceTable_ProducesCorrectTable()
        {
            using (var scenario = MultiLevelTableScenario.Setup())
            {
                // Act
                var src         = new FileConfigStore(TomlSettings.DefaultInstance, "test", "test");
                var sourceTable = scenario.Table.TransformToSourceTable(src);

                // Assert
                sourceTable.Get <IConfigSource>(nameof(scenario.Clr.X)).Should().BeSameAs(src);
                var sub = sourceTable.Get <TomlTable>(nameof(scenario.Clr.Sub));
                sub.Get <IConfigSource>(nameof(scenario.Clr.Sub.Y)).Should().BeSameAs(src);
            }
        }
Exemplo n.º 3
0
        public Config <GitConfig> CreateMergedFromDefaultsWithExplicitFileStore()
        {
            var sys  = new FileConfigStore(TomlSettings.DefaultInstance, this.SystemFile);
            var user = new FileConfigStore(TomlSettings.DefaultInstance, this.UserFile);
            var repo = new FileConfigStore(TomlSettings.DefaultInstance, this.RepoFile);

            return(Config.CreateAs()
                   .MappedToType(() => new GitConfig())
                   .StoredAs(store => store
                             .File(this.SystemFile).AsSourceWithName(this.SystemSourceName)
                             .MergeWith().File(this.UserFile).AsSourceWithName(this.UserSourceName)
                             .MergeWith().File(this.RepoFile).AsSourceWithName(this.RepoSourceName))
                   .Initialize());
        }
Exemplo n.º 4
0
        public void WasChangedExternally_WhenThereWasNoModification_ReturnsFalse()
        {
            using (var file = TestFileName.Create("x", Toml.FileExtension))
            {
                // Arrange
                File.WriteAllText(file, "x=0");
                var cfg = new FileConfigStore(TomlSettings.DefaultInstance, file);
                cfg.Load();

                // Act
                var r = cfg.WasChangedExternally();

                // Assert
                r.Should().Be(false);
            }
        }
Exemplo n.º 5
0
        public void WasChangedExternally_WhenFileWasNotLoadedAtLeastOnce_WillAlwaysReturnTrue()
        {
            using (var file = TestFileName.Create("x", Toml.FileExtension))
            {
                // Arrange
                File.WriteAllText(file, "x=0");
                var cfg = new FileConfigStore(TomlSettings.DefaultInstance, file);

                // Act
                var r1 = cfg.WasChangedExternally();
                var r2 = cfg.WasChangedExternally();

                // Assert
                r1.Should().Be(true);
                r2.Should().Be(true);
            }
        }
        public void Save_UpdatesInMemoryConfigSoNextLoadWillDeliverThatConfig()
        {
            using (var fn = TestFileName.Create("file", Toml.FileExtension))
            {
                // Arrange
                var fc = new FileConfigStore(TomlSettings.DefaultInstance, fn);
                var oc = new ConfigStoreWithSource(new ConfigSource(fn), fc);
                File.WriteAllText(fn, "X = 1");
                oc.Load(); // At least one load needs to be done, otherwise a load will be done because not any data was loaded yet

                // Act
                oc.Save(Toml.ReadString("X = 2"));

                // Assert
                var readBack = oc.Load();
                ((TomlInt)readBack["X"]).Value.Should().Be(2);
            }
        }