예제 #1
0
        public void GivenAGenericList_WhenRenderingUsingTypeTemplate_ThenTheExpectedOutcomeIsRendered()
        {
            // Arrange
            var parser   = new TemplateParser();
            var template = parser.Parse("[foreach]{}[/]");

            var source = new List <int>()
            {
                1, 2, 3
            };

            // Act
            var testProxy = new TestProxy();

            testProxy.WriteTemplate(template, source);
            var preTemplateResult = testProxy.ToString();

            parser.AddTypeTemplate <int>("{v}", t => new{ v = (10 - t).ToString() });

            var testProxy2 = new TestProxy();

            testProxy2.WriteTemplate(template, source);
            var postTemplateResult = testProxy2.ToString();

            // Assert
            Assert.Equal("123", preTemplateResult);
            Assert.Equal("987", postTemplateResult);
        }
예제 #2
0
        public void GivenATemplateWithAUnknownObjectType_WhenWritingTheTemplate_ThenTheValueShouldEvaluateToTrue()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("[if]true[/][ifnot]false[/]", new { });

            // Assert
            Assert.Equal("true", actual.ToString());
        }
예제 #3
0
        public void GivenATemplateWithAUnknownParameter_WhenWritingTheTemplate_ThenTheValueShouldEvaluateToFalse()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("[if:source]true[/][ifnot:source]false[/]", new { });

            // Assert
            Assert.Equal("false", actual.ToString());
        }
예제 #4
0
        public void GivenATemplateWithRepeater_WhenGivenSimpleValue_ThenJustTheValueIsRendred()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[ForEach:test]{}[/]|end", new { test = true });

            // Assert
            Assert.Equal("start|True|end", actual.ToString());
        }
예제 #5
0
        public void GivenATemplateWithRepeater_WhenGivenArray_ThenValuesAreRenderd()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[ForEach:Test]'{}'[/]|end", new { Test = new[] { "A", "B", "C" } });

            // Assert
            Assert.Equal("start|'A''B''C'|end", actual.ToString());
        }
예제 #6
0
        public void GivenATemplateWithRepeater_WhenGivenEmptyArray_ThenNoRenderIsDone()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[ForEach:Test]t[/]|end", new { Test = new string[0] });

            // Assert
            Assert.Equal("start||end", actual.ToString());
        }
예제 #7
0
        public void GivenATemplateWithRepeater_WhenGivenANull_ThenNoRenderingIsDone()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[ForEach:test]t[/]|end", null);

            // Assert
            Assert.Equal("start||end", actual.ToString());
        }
예제 #8
0
        public void GivenATemplateWithRepeater_WhenGivenUnknownValue_ThenNoRenderIsDone()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[ForEach:Unknown]{}[/]|end", new { });

            // Assert
            Assert.Equal("start||end", actual.ToString());
        }
        public void GivenATemplateColor_WhenRendering_ThenExpectedColorCommandShouldBeRendered(string source, string expected)
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate(source, null).ToString();

            // Assert
            Assert.Equal(expected, actual);
        }
예제 #10
0
        public void GivenAObject_WhenTestingForTruthy_ThenExpectedResultShouldBeReturned(object source, string expected)
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("[if:source]true[/][ifnot:source]false[/]", new { source });

            // Assert
            Assert.Equal(expected, actual.ToString());
        }
예제 #11
0
        public void GivenTemplateWithClearLine_WhenRender_ThenClearRemandingIsRendered()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("[ClearLine/]", new { Test = "test" });

            // Assert
            Assert.Equal($"{new string(' ', 80)}", actual.ToString());
        }
        public void GivenAEmptyConfig_WhenRendering_ThenSubstituteWithObjectValue()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("{}", new SimpleObject(), CultureInfo.CurrentUICulture);

            // Assert
            Assert.Equal("SimpleObject", actual.ToString());
        }
예제 #13
0
        public void GivenTextNestedWithinHr_WhenRenderHr_ThenNestedIsIgnored()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[hr]test[/]|end", new { Test = "test" });

            // Assert
            Assert.Equal("start|\n" + new string('-', 80) + "|end", actual.ToString());
        }
        public void GivenATemplateWithUnknownStyle_WhenRender_ThenRenderNoStyle()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[s:test]test[/]|end", new { Test = "test" });

            // Assert
            Assert.Equal("start|test|end", actual.ToString());
        }
        public void GivenAConfigWithOnlyFormat_WhenRendering_ThenSubstituteUsesFormatter()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("{:format}", new FormattalbeObject(), new CultureInfo("da-DK"));

            // Assert
            Assert.Equal("format|da-DK", actual.ToString());
        }
        public void GivenTemplateWithUnknownSub_WhenRender_ThenRenderNothing()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|{Unknown}|end", new { Name = "Tom" });

            // Assert
            Assert.Equal("start||end", actual.ToString());
        }
        public void GivenTemplateWithSub_WhenRenderWithNullObject_ThenRenderNothing()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|{Unknown}|end", null);

            // Assert
            Assert.Equal("start||end", actual.ToString());
        }
예제 #18
0
        public void GivenATemplateContainingWith_WhenGivenUnknownValue_ThenNoRender()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[with:unknown]T[/]|end", new { });

            // Assert
            Assert.Equal("start||end", actual.ToString());
        }
        public void GivenTemplateWithSimpleSub_WhenRender_ThenRenderExpected()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|{Name}|end", new { Name = "Tom" });

            // Assert
            Assert.Equal("start|Tom|end", actual.ToString());
        }
예제 #20
0
        public void GivenABlankLineWithStartStopTag_WhenRenderHr_ThenRenderFullLine()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("[hr][/]", null);

            // Assert
            Assert.Equal(new string('-', 80), actual.ToString());
        }
예제 #21
0
        public void GivenATemplateContainingWith_WhenGivenKnownValue_ThenRenderValue()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[with:Test]{Length}[/]|end", new { Test = "test" });

            // Assert
            Assert.Equal("start|4|end", actual.ToString());
        }
예제 #22
0
        public void GivenAExistingText_WhenRenderHr_ThenRenderNewLineFirst()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[hr/]|end", new { Test = "test" });

            // Assert
            Assert.Equal("start|\n" + new string('-', 80) + "|end", actual.ToString());
        }
예제 #23
0
        public void GivenATemplateWithLineBreak_WhenRendering_ThenRenderLineBreak()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("[br][/][br/]", null);

            // Assert
            Assert.Equal("\n\n", actual.ToString());
        }
예제 #24
0
        public void GivenTextNestedWithinBr_WhenRendering_ThenNestedTextIsIgnored()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[br]Tester[/]|end", null);

            // Assert
            Assert.Equal("start|\n|end", actual.ToString());
        }
예제 #25
0
        public void GivenTemplateWithClearLineWithContent_WhenRender_ThenContentIsIgnored()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate("start|[ClearLine]Tester[/]|end", new { Test = "test" });

            // Assert
            Assert.Equal($"start|{new string(' ', 74)}|end", actual.ToString());
        }
예제 #26
0
        public void GivenATemplateWithRepeater_WhenGivenIEnumerable_ThenValuesAreRenderd()
        {
            // Arrange
            var proxy = new TestProxy();

            // Act
            var enumeration = Enumerable.Range(0, 10);
            var actual      = proxy.WriteTemplate("start|[ForEach:Test]{}[/]|end", new { Test = enumeration.AsEnumerable() });

            // Assert
            Assert.Equal("start|0123456789|end", actual.ToString());
        }
        public void GivenTemplateWithSub_WhenRenderWithSpecificCulture_ThenUseCultureToRender()
        {
            // Arrange
            var proxyDk = new TestProxy();
            var proxyUs = new TestProxy();

            // Act
            var actualDk = proxyDk.WriteTemplate("start|{number}|end", new { number = 1.2 }, new CultureInfo("da-dk"));
            var actualUs = proxyUs.WriteTemplate("start|{number}|end", new { number = 1.2 }, new CultureInfo("en-us"));

            // Assert
            Assert.Equal("start|1,2|end", actualDk.ToString());
            Assert.Equal("start|1.2|end", actualUs.ToString());
        }
        public void GivenATemplateWithKnownStyle_WhenRender_ThenRenderColorSettings()
        {
            // Arrange
            var parser   = new TemplateParser();
            var template = parser.Parse("start|[s:test]test[/s]|end");

            template.Styles.Add("test", new ConsoleStyle("test", ConsoleColor.Green, ConsoleColor.Red));
            var proxy = new TestProxy();

            // Act
            var actual = proxy.WriteTemplate(template, new { Test = "test" });

            // Assert
            Assert.Equal("start|[SetColor:F=Green|B=Red]test[SetColor:F=Black|B=Black]|end", actual.ToString());
        }
예제 #29
0
        public void GivenAObjectWithNoSubTemplate_WhenRegisteringATemplate_ThenTheRegisteredTemplateShouldBeUsed()
        {
            // Arrange
            var parser   = new TemplateParser();
            var template = parser.Parse("{}");

            // Act
            var testProxy = new TestProxy();

            testProxy.WriteTemplate(template, this);
            var preTemplateResult = testProxy.ToString();

            parser.AddTypeTemplate <SubTemplateTests>("Replaced with template");
            var testProxy2 = new TestProxy();

            testProxy2.WriteTemplate(template, this);
            var postTemplateResult = testProxy2.ToString();

            // Assert
            Assert.Equal("ConsoleExtensions.Templating.Tests.SubTemplateTests", preTemplateResult);
            Assert.Equal("Replaced with template", postTemplateResult);
        }
예제 #30
0
        public void GivenATypeTemplateWithTypeConverter_WhenRenderingAValue_ThenTheValueIsConverted()
        {
            // Arrange
            var parser   = new TemplateParser();
            var template = parser.Parse("{}");

            // Act
            var testProxy = new TestProxy();

            testProxy.WriteTemplate(template, this);
            var preTemplateResult = testProxy.ToString();

            parser.AddTypeTemplate <SubTemplateTests>("{}", tests => new string(tests.GetType().Name.Reverse().ToArray()));
            var testProxy2 = new TestProxy();

            testProxy2.WriteTemplate(template, this);
            var postTemplateResult = testProxy2.ToString();

            // Assert
            Assert.Equal("ConsoleExtensions.Templating.Tests.SubTemplateTests", preTemplateResult);
            Assert.Equal("stseTetalpmeTbuS", postTemplateResult);
        }