Example #1
0
        public void Ctor_CustomComparison()
        {
            //Act
            var target = new TextSubstitutionEngine("<", ">", StringComparison.CurrentCulture);

            //Assert
            target.DefaultComparison.Should().Be(StringComparison.CurrentCulture);
        }
Example #2
0
        public void Ctor_DelimitersAreValid( )
        {
            //Act
            var target = new TextSubstitutionEngine("<", ">");

            //Assert
            target.StartDelimiter.Should().Be("<");
            target.EndDelimiter.Should().Be(">");
        }
Example #3
0
        public void Process_ArgumentIsEmpty()
        {
            //Arrange
            var target = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("simple", "complex"));

            //Act
            var actual = target.Process("");

            //Assert
            actual.Should().BeEmpty();
        }
Example #4
0
        public void Process_ArgumentIsValid()
        {
            //Arrange
            var input    = "Hello <Name>!";
            var expected = "Hello Bob!";
            var target   = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("Name", "Bob"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
Example #5
0
        public void Process_UsingCustomComparison()
        {
            //Arrange
            var input    = "Begin <first> End";
            var expected = input;
            var target   = new TextSubstitutionEngine("<", ">", StringComparison.CurrentCulture);

            target.Rules.Add(new SimpleTextSubstitutionRule("First", "one"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
Example #6
0
        public void Process_DelimiterUsingWrongCaseWithDefaultComparison()
        {
            //Arrange
            var input    = "Begin <first> End";
            var expected = "Begin one End";
            var target   = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("First", "one"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
Example #7
0
        public void Process_EmptyDelimiter()
        {
            //Arrange
            var input    = "Begin <> End";
            var expected = input;
            var target   = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("first", "one"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
Example #8
0
        public void Process_TokenNotDefinedWithSpaces()
        {
            //Arrange
            var input    = "Begin <  third  > End";
            var expected = input;
            var target   = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("first", "one"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
Example #9
0
        public void Process_TokenAtStart()
        {
            //Arrange
            var input    = "<first> End";
            var expected = "one End";
            var target   = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("first", "one"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
Example #10
0
        public void Process_ReplacementValueHasDelimiter()
        {
            //Arrange
            var input    = "Begin <first> End";
            var expected = "Begin <second> End";
            var target   = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("first", "<second>"));
            target.Rules.Add(new SimpleTextSubstitutionRule("second", "two"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
Example #11
0
        public void Process_MultipleTokens()
        {
            //Arrange
            var input    = "Begin <first> and <second> End";
            var expected = "Begin one and two End";
            var target   = new TextSubstitutionEngine("<", ">");

            target.Rules.Add(new SimpleTextSubstitutionRule("first", "one"));
            target.Rules.Add(new SimpleTextSubstitutionRule("second", "two"));

            //Act
            var actual = target.Process(input);

            //Assert
            actual.Should().Be(expected);
        }
        private Task <string> BuildBranchNameAsync(MigratedProject project, string branch, CancellationToken cancellationToken)
        {
            return(Task.Run(() => {
                var engine = new TextSubstitutionEngine("{", "}");
                engine.Rules.Add(new SimpleTextSubstitutionRule("major", project.Version?.Major.ToString() ?? "0"));
                engine.Rules.Add(new SimpleTextSubstitutionRule("minor", project.Version?.Minor.ToString() ?? "0"));
                engine.Rules.Add(new SimpleTextSubstitutionRule("build", project.Version?.Build.ToString() ?? "0"));
                engine.Rules.Add(new SimpleTextSubstitutionRule("revision", project.Version?.Revision.ToString() ?? "0"));
                engine.Rules.Add(new SimpleTextSubstitutionRule("version", project.Version?.ToString() ?? "0.0.0.0"));

                engine.Rules.Add(new SimpleTextSubstitutionRule("yyyy", DateTime.Now.ToString("yyyy")));
                engine.Rules.Add(new SimpleTextSubstitutionRule("MM", DateTime.Now.ToString("MM")));
                engine.Rules.Add(new SimpleTextSubstitutionRule("dd", DateTime.Now.ToString("dd")));
                engine.Rules.Add(new SimpleTextSubstitutionRule("MMM", DateTime.Now.ToString("MMM")));
                engine.Rules.Add(new SimpleTextSubstitutionRule("yy", DateTime.Now.ToString("yy")));

                return engine.Process(branch);
            }, cancellationToken));
        }
        private async Task UpdateMetadataFileAsync(string metadataFile, MigratedProject project, CancellationToken cancellationToken)
        {
            Logger.Info($"Updating metadata file '{metadataFile}'");

            //Open or create the file
            if (!File.Exists(metadataFile))
            {
                Logger.Warning($"No metadata file found '{metadataFile}");
                return;
            }
            ;

            await Task.Run(() => {
                var engine = new TextSubstitutionEngine("{", "}");
                engine.Rules.Add(new ObjectTextSubstitutionRule <MigratedProject>(project));
                engine.Rules.Add(new SimpleTextSubstitutionRule("Date", DateTime.Now.ToString()));
                engine.Rules.Add(new SimpleTextSubstitutionRule("TfsCollectionUrl", Host.Settings.SourceCollectionUrl));

                var text = File.ReadAllText(metadataFile);
                text     = engine.Process(text);
                File.WriteAllText(metadataFile, text);
            }, cancellationToken).ConfigureAwait(false);
        }