public void Translate_TemplateBuilder_Write_IsNeverCalled()
        {
            ITemplateBuilder templateBuilder = new FailingTemplateBuilder();

            var sut = new IgnoreSpanTranslator();

            sut.Translate(SpanHelper.BuildSpan("a"), templateBuilder);
        }
        public void Translate_CallsMatchOnCodeSpanTranslator()
        {
            var span = SpanHelper.BuildSpan("a");
            var sut  = new StatementTranslator(this._codeSpanTranslator.Object);

            sut.Translate(span, this._templateBuilder.Object);

            this._codeSpanTranslator.Verify(c => c.Match(span));
        }
示例#3
0
        public void Match_GivenContentNotEndCodeBlock_ReturnsFalse()
        {
            var span = SpanHelper.BuildSpan("@Html.HiddenFor(m => m.Id)");

            var sut = new EndCodeBlockTranslator();

            var result = sut.Match(span);

            Assert.IsFalse(result);
        }
        public void Match_GivenSpanNotFromModelDeclaration_ReturnsFalse()
        {
            Span span = SpanHelper.BuildSpan("a");

            var sut = new IgnoreSpanTranslator();

            var result = sut.Match(span);

            Assert.IsFalse(result);
        }
示例#5
0
        public void Match_GivenEndCodeBlockContentEndingInLineBreak_ReturnsTrue()
        {
            var span = SpanHelper.BuildSpan("}\r\n");

            var sut = new EndCodeBlockTranslator();

            var result = sut.Match(span);

            Assert.IsTrue(result);
        }
示例#6
0
        public void Match_GivenEndCodeBlockContentStartingWithTabIndent_ReturnsTrue()
        {
            var span = SpanHelper.BuildSpan("\t}");

            var sut = new EndCodeBlockTranslator();

            var result = sut.Match(span);

            Assert.IsTrue(result);
        }
        public void Match_GivenForEachContentCollectionOnModel_ReturnsTrue()
        {
            var span = SpanHelper.BuildSpan("foreach (var item in Model.Collection) {");

            var sut = new ForEachCodeSpanTranslator();

            var result = sut.Match(span);

            Assert.IsTrue(result);
        }
        public void Match_GivenForEachContentEndingInLineBreak_ReturnsTrue()
        {
            var span = SpanHelper.BuildSpan("foreach (var item in Collection) {\r\n");

            var sut = new ForEachCodeSpanTranslator();

            var result = sut.Match(span);

            Assert.IsTrue(result);
        }
示例#9
0
        public void Match_GivenCodeSpan_ReturnsTrue()
        {
            Span codeSpan = SpanHelper.BuildSpan("a", SpanKind.Code);

            var sut = new GenericCodeSpanTranslator();

            var result = sut.Match(codeSpan);

            Assert.IsTrue(result);
        }
示例#10
0
        public void Translate_GivenTextWithLineBreakEnd_CallsTemplateBuilderQuoted_LineBreakEscaped()
        {
            var sut = new MarkupSpanTranslator();

            string input = "Hello \nMartin!";
            Span   span  = SpanHelper.BuildSpan(input);

            sut.Translate(span, this._templateBuilder.Object);

            this._templateBuilder.Verify(t => t.Write(input.Replace("\n", "\\n"), true));
        }
示例#11
0
        public void Translate_GivenText_CallsTemplateBuilderQuoted()
        {
            var sut = new NullSpanTranslator();

            string input = "asas}}";
            Span   span  = SpanHelper.BuildSpan(input);

            sut.Translate(span, this._templateBuilder.Object);

            this._templateBuilder.Verify(t => t.Write(input, true));
        }
示例#12
0
        public void Translate_GivenTextWithDoubleQuotes_CallsTemplateBuilderQuoted_DoubleQuotesEscaped()
        {
            var sut = new MarkupSpanTranslator();

            string input = "Hello \"Martin\"!";
            Span   span  = SpanHelper.BuildSpan(input);

            sut.Translate(span, this._templateBuilder.Object);

            this._templateBuilder.Verify(t => t.Write(input.Replace("\"", "\\\""), true));
        }
        public void Translate_GivenText_CallsTemplateBuilder()
        {
            var sut = new ExpressionTranslator();

            string input = "Model.Property";
            Span   span  = SpanHelper.BuildSpan(input);

            sut.Translate(span, this._templateBuilder.Object);

            this._templateBuilder.Verify(t => t.Write(input));
        }
示例#14
0
        public void Translate_GivenBlockWithOneChildSpan_CallsMatchOnSpanTranslator()
        {
            Span  span     = SpanHelper.BuildSpan("a");
            Block document = BlockHelper.BuildWithChildren(span);

            var sut = this.CreateSut();

            sut.Translate(document, this._templateBuilder.Object);

            this._spanTranslator.Verify(s => s.Match(span));
        }
        public void Translate_FoundMatchingCodeSpanTranslator_CallsTranslater()
        {
            this._codeSpanTranslator.Setup(c => c.Match(It.IsAny <Span>())).Returns(true);

            var span = SpanHelper.BuildSpan("a");
            var sut  = new StatementTranslator(this._codeSpanTranslator.Object);

            sut.Translate(span, this._templateBuilder.Object);

            this._codeSpanTranslator.Verify(c => c.Translate(span.Content, this._templateBuilder.Object));
        }
        public void Translate_GivenCodeWithLineBreaks_CleanLineBreaksWhenHandingToTranslator()
        {
            this._codeSpanTranslator.Setup(c => c.Match(It.IsAny <Span>())).Returns(true);

            var span = SpanHelper.BuildSpan("a\r\nb");
            var sut  = new StatementTranslator(this._codeSpanTranslator.Object);

            sut.Translate(span, this._templateBuilder.Object);

            this._codeSpanTranslator.Verify(c => c.Translate("ab", It.IsAny <ITemplateBuilder>()));
        }
        public void Translate_NoMatchingCodeSpanTranslator_DoNotCallTranslater()
        {
            this._codeSpanTranslator.Setup(c => c.Match(It.IsAny <Span>())).Returns(false);

            var span = SpanHelper.BuildSpan("a");
            var sut  = new StatementTranslator(this._codeSpanTranslator.Object);

            sut.Translate(span, this._templateBuilder.Object);

            this._codeSpanTranslator.Verify(c => c.Translate(It.IsAny <string>(), It.IsAny <ITemplateBuilder>()), Times.Never());
        }
示例#18
0
        public void Translate_NoMatchingCodeSpanTranslator_DoNotCallTranslater()
        {
            this._spanTranslator.Setup(s => s.Match(It.IsAny <Span>())).Returns(false);

            Block document = BlockHelper.BuildWithChildren(SpanHelper.BuildSpan("a"));

            var sut = this.CreateSut();

            sut.Translate(document, this._templateBuilder.Object);

            this._spanTranslator.Verify(c => c.Translate(It.IsAny <Span>(), It.IsAny <ITemplateBuilder>()), Times.Never());
        }
示例#19
0
        public void Translate_GivenAtSign_DoesNotCallTemplateBuilder()
        {
            var sut = new NullSpanTranslator();

            string input = "@";
            Span   span  = SpanHelper.BuildSpan(input);

            sut.Translate(span, this._templateBuilder.Object);

            this._templateBuilder.Verify(t => t.Write(It.IsAny <string>()), Times.Never());
            this._templateBuilder.Verify(t => t.Write(It.IsAny <string>(), It.IsAny <bool>()), Times.Never());
        }
示例#20
0
        public void Translate_FoundMatchingSpanTranslator_CallsTranslater()
        {
            this._spanTranslator.Setup(s => s.Match(It.IsAny <Span>())).Returns(true);

            Span  span     = SpanHelper.BuildSpan("a");
            Block document = BlockHelper.BuildWithChildren(span);

            var sut = this.CreateSut();

            sut.Translate(document, this._templateBuilder.Object);

            this._spanTranslator.Verify(s => s.Translate(span, this._templateBuilder.Object));
        }
        public void Translate_MultipleMatchingCodeSpanTranslator_CallsFirstTranslater()
        {
            Mock <ICodeSpanTranslator> secondTranslator = new Mock <ICodeSpanTranslator>();

            secondTranslator.Setup(c => c.Match(It.IsAny <Span>())).Returns(true);
            this._codeSpanTranslator.Setup(c => c.Match(It.IsAny <Span>())).Returns(true);

            var span = SpanHelper.BuildSpan("a");
            var sut  = new StatementTranslator(this._codeSpanTranslator.Object, secondTranslator.Object);

            sut.Translate(span, this._templateBuilder.Object);

            this._codeSpanTranslator.Verify(c => c.Translate(span.Content, this._templateBuilder.Object));
            secondTranslator.Verify(c => c.Translate(It.IsAny <string>(), It.IsAny <ITemplateBuilder>()), Times.Never());
        }
示例#22
0
        public void Translate_MultipleMatchingCodeSpanTranslator_CallsFirstTranslater()
        {
            Mock <ISpanTranslator> secondTranslator = new Mock <ISpanTranslator>();

            secondTranslator.Setup(c => c.Match(It.IsAny <Span>())).Returns(true);
            this._spanTranslator.Setup(c => c.Match(It.IsAny <Span>())).Returns(true);

            Span  span     = SpanHelper.BuildSpan("a");
            Block document = BlockHelper.BuildWithChildren(span);

            var sut = new DocumentTranslator(this._spanTranslator.Object, secondTranslator.Object);

            sut.Translate(document, this._templateBuilder.Object);

            this._spanTranslator.Verify(c => c.Translate(span, this._templateBuilder.Object));
            secondTranslator.Verify(c => c.Translate(It.IsAny <Span>(), It.IsAny <ITemplateBuilder>()), Times.Never());
        }