Beispiel #1
0
        public void AddLiteralChunk_AppendsToPreviousChunk_IfChunkWasLiteral()
        {
            // Arrange
            var spanFactory  = SpanFactory.CreateCsHtml();
            var previousSpan = spanFactory.Markup("<a>").Builder.Build();
            var newSpan      = spanFactory.Markup("<p>").Builder.Build();
            var builder      = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("<a>", previousSpan);
            builder.AddLiteralChunk("<p>", newSpan);

            // Assert
            var chunk = Assert.Single(builder.Root.Children);

            var literalChunk = Assert.IsType <ParentLiteralChunk>(chunk);

            Assert.Equal(2, literalChunk.Children.Count);

            var span = Assert.IsType <Span>(literalChunk.Children[0].Association);

            Assert.Same(span, previousSpan);

            span = Assert.IsType <Span>(literalChunk.Children[1].Association);
            Assert.Same(span, newSpan);
        }
Beispiel #2
0
        public void AddLiteralChunk_AddsChunkToChunkTree_IfPreviousChunkWasNotLiteral()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var codeSpan    = spanFactory.Code("int a = 10;")
                              .AsStatement()
                              .Builder.Build();
            var literalSpan = spanFactory.Markup("<p>").Builder.Build();
            var builder     = new ChunkTreeBuilder();

            // Act
            builder.AddStatementChunk("int a = 10;", codeSpan);
            builder.AddLiteralChunk("<p>", literalSpan);

            // Assert
            var chunks = builder.Root.Children;

            Assert.Equal(2, chunks.Count);
            var statementChunk = Assert.IsType <StatementChunk>(chunks[0]);

            Assert.Equal("int a = 10;", statementChunk.Code);
            Assert.Same(codeSpan, statementChunk.Association);
            var literalChunk = Assert.IsType <LiteralChunk>(chunks[1]);

            Assert.Equal("<p>", literalChunk.Text);
            Assert.Same(literalSpan, literalChunk.Association);
        }
Beispiel #3
0
        public void AddLiteralChunk_CreatesNewChunk_IfChunkIsNotLiteral()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var span1       = spanFactory.Markup("<a>").Builder.Build();
            var span2       = spanFactory.Markup("<p>").Builder.Build();
            var span3       = spanFactory.Code("Hi!").AsExpression().Builder.Build();
            var builder     = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("<a>", span1);
            builder.AddLiteralChunk("<p>", span2);
            builder.AddExpressionChunk("Hi!", span3);

            // Assert
            Assert.Equal(2, builder.Root.Children.Count);

            var literalChunk = Assert.IsType <ParentLiteralChunk>(builder.Root.Children[0]);

            Assert.Equal(2, literalChunk.Children.Count);

            var span = Assert.IsType <Span>(literalChunk.Children[0].Association);

            Assert.Same(span, span1);

            span = Assert.IsType <Span>(literalChunk.Children[1].Association);
            Assert.Same(span, span2);

            Assert.IsType <ExpressionChunk>(builder.Root.Children[1]);
        }
Beispiel #4
0
 public ChunkGeneratorContext(
     RazorEngineHost host,
     string className,
     string rootNamespace,
     string sourceFile,
     bool shouldGenerateLinePragmas)
 {
     ChunkTreeBuilder = new ChunkTreeBuilder();
     Host             = host;
     SourceFile       = shouldGenerateLinePragmas ? sourceFile : null;
     RootNamespace    = rootNamespace;
     ClassName        = className;
 }
Beispiel #5
0
 public ChunkGeneratorContext(
     RazorEngineHost host,
     string className,
     string rootNamespace,
     string sourceFile,
     bool shouldGenerateLinePragmas)
 {
     ChunkTreeBuilder = new ChunkTreeBuilder();
     Host = host;
     SourceFile = shouldGenerateLinePragmas ? sourceFile : null;
     RootNamespace = rootNamespace;
     ClassName = className;
 }
 public static void AddDirectiveToken(
     this ChunkTreeBuilder builder,
     string value,
     RazorDirectiveTokenDescriptor tokenDescriptor,
     SyntaxTreeNode association)
 {
     builder.AddChunk(
         new RazorDirectiveTokenChunk
     {
         Value      = value,
         Descriptor = tokenDescriptor,
     },
         association);
 }
Beispiel #7
0
        public void AddLiteralChunk_AddsChunkToChunkTree()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var previousSpan = spanFactory.EmptyHtml().Builder.Build();
            var builder = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("some text", previousSpan);

            // Assert
            var chunk = Assert.Single(builder.Root.Children);
            var literalChunk = Assert.IsType<LiteralChunk>(chunk);
            Assert.Equal("some text", literalChunk.Text);
            Assert.Same(previousSpan, literalChunk.Association);
        }
Beispiel #8
0
        public void AddLiteralChunk_AddsChunkToChunkTree()
        {
            // Arrange
            var spanFactory  = SpanFactory.CreateCsHtml();
            var previousSpan = spanFactory.EmptyHtml().Builder.Build();
            var builder      = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("some text", previousSpan);

            // Assert
            var chunk        = Assert.Single(builder.Root.Children);
            var literalChunk = Assert.IsType <LiteralChunk>(chunk);

            Assert.Equal("some text", literalChunk.Text);
            Assert.Same(previousSpan, literalChunk.Association);
        }
Beispiel #9
0
        public void AddLiteralChunk_AppendsToPreviousChunk_IfChunkWasLiteral()
        {
            // Arrange
            var spanFactory  = SpanFactory.CreateCsHtml();
            var previousSpan = spanFactory.Markup("<a>").Builder.Build();
            var newSpan      = spanFactory.Markup("<p>").Builder.Build();
            var builder      = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("<a>", previousSpan);
            builder.AddLiteralChunk("<p>", newSpan);

            // Assert
            var chunk        = Assert.Single(builder.ChunkTree.Chunks);
            var literalChunk = Assert.IsType <LiteralChunk>(chunk);

            Assert.Equal("<a><p>", literalChunk.Text);
            var span = Assert.IsType <Span>(literalChunk.Association);

            Assert.Equal(previousSpan.Symbols.Concat(newSpan.Symbols), span.Symbols);
        }
Beispiel #10
0
        public void AddRemoveTagHelperChunk_AddsChunkToTopLevelChunkTree()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var builder = new ChunkTreeBuilder();
            var block = new ExpressionBlock();
            var removeTagHelperDirective = spanFactory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ");

            // Act
            builder.StartParentChunk<ExpressionBlockChunk>(block);
            builder.AddRemoveTagHelperChunk("some text", removeTagHelperDirective);
            builder.EndParentChunk();

            // Assert
            Assert.Equal(2, builder.Root.Children.Count);

            var parentChunk = Assert.IsType<ExpressionBlockChunk>(builder.Root.Children.First());
            Assert.Empty(parentChunk.Children);

            var removeTagHelperChunk = Assert.IsType<RemoveTagHelperChunk>(builder.Root.Children.Last());
            Assert.Equal(removeTagHelperChunk.LookupText, "some text");
        }
Beispiel #11
0
        public void AddRemoveTagHelperChunk_AddsChunkToTopLevelChunkTree()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var builder     = new ChunkTreeBuilder();
            var block       = new ExpressionBlock();
            var removeTagHelperDirective = spanFactory.MetaCode(SyntaxConstants.CSharp.RemoveTagHelperKeyword + " ");

            // Act
            builder.StartParentChunk <ExpressionBlockChunk>(block);
            builder.AddRemoveTagHelperChunk("some text", removeTagHelperDirective);
            builder.EndParentChunk();

            // Assert
            Assert.Equal(2, builder.Root.Children.Count);

            var parentChunk = Assert.IsType <ExpressionBlockChunk>(builder.Root.Children.First());

            Assert.Empty(parentChunk.Children);

            var removeTagHelperChunk = Assert.IsType <RemoveTagHelperChunk>(builder.Root.Children.Last());

            Assert.Equal(removeTagHelperChunk.LookupText, "some text");
        }
Beispiel #12
0
        public void AddLiteralChunk_AppendsToPreviousChunk_IfChunkWasLiteral()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var previousSpan = spanFactory.Markup("<a>").Builder.Build();
            var newSpan = spanFactory.Markup("<p>").Builder.Build();
            var builder = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("<a>", previousSpan);
            builder.AddLiteralChunk("<p>", newSpan);

            // Assert
            var chunk = Assert.Single(builder.Root.Children);

            var literalChunk = Assert.IsType<ParentLiteralChunk>(chunk);
            Assert.Equal(2, literalChunk.Children.Count);
            
            var span = Assert.IsType<Span>(literalChunk.Children[0].Association);
            Assert.Same(span, previousSpan);

            span = Assert.IsType<Span>(literalChunk.Children[1].Association);
            Assert.Same(span, newSpan);
        }
Beispiel #13
0
        public void AddLiteralChunk_AddsChunkToChunkTree_IfPreviousChunkWasNotLiteral()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var codeSpan = spanFactory.Code("int a = 10;")
                                      .AsStatement()
                                      .Builder.Build();
            var literalSpan = spanFactory.Markup("<p>").Builder.Build();
            var builder = new ChunkTreeBuilder();

            // Act
            builder.AddStatementChunk("int a = 10;", codeSpan);
            builder.AddLiteralChunk("<p>", literalSpan);

            // Assert
            var chunks = builder.Root.Children;
            Assert.Equal(2, chunks.Count);
            var statementChunk = Assert.IsType<StatementChunk>(chunks[0]);
            Assert.Equal("int a = 10;", statementChunk.Code);
            Assert.Same(codeSpan, statementChunk.Association);
            var literalChunk = Assert.IsType<LiteralChunk>(chunks[1]);
            Assert.Equal("<p>", literalChunk.Text);
            Assert.Same(literalSpan, literalChunk.Association);
        }
Beispiel #14
0
        public void AddLiteralChunk_CreatesNewChunk_IfChunkIsNotLiteral()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var span1 = spanFactory.Markup("<a>").Builder.Build();
            var span2 = spanFactory.Markup("<p>").Builder.Build();
            var span3 = spanFactory.Code("Hi!").AsExpression().Builder.Build();
            var builder = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("<a>", span1);
            builder.AddLiteralChunk("<p>", span2);
            builder.AddExpressionChunk("Hi!", span3);

            // Assert
            Assert.Equal(2, builder.Root.Children.Count);

            var literalChunk = Assert.IsType<ParentLiteralChunk>(builder.Root.Children[0]);
            Assert.Equal(2, literalChunk.Children.Count);

            var span = Assert.IsType<Span>(literalChunk.Children[0].Association);
            Assert.Same(span, span1);

            span = Assert.IsType<Span>(literalChunk.Children[1].Association);
            Assert.Same(span, span2);

            Assert.IsType<ExpressionChunk>(builder.Root.Children[1]);
        }
        public void AddLiteralChunk_AppendsToPreviousChunk_IfChunkWasLiteral()
        {
            // Arrange
            var spanFactory = SpanFactory.CreateCsHtml();
            var previousSpan = spanFactory.Markup("<a>").Builder.Build();
            var newSpan = spanFactory.Markup("<p>").Builder.Build();
            var builder = new ChunkTreeBuilder();

            // Act
            builder.AddLiteralChunk("<a>", previousSpan);
            builder.AddLiteralChunk("<p>", newSpan);

            // Assert
            var chunk = Assert.Single(builder.ChunkTree.Chunks);
            var literalChunk = Assert.IsType<LiteralChunk>(chunk);
            Assert.Equal("<a><p>", literalChunk.Text);
            var span = Assert.IsType<Span>(literalChunk.Association);
            Assert.Equal(previousSpan.Symbols.Concat(newSpan.Symbols), span.Symbols);
        }