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); }
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); }
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 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 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); }
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); }
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); }
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); }
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"); }
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"); }
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); }
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); }
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); }