public void ShouldBuildInlines() { // Given dynamic inline1 = new DynamicWrapper(); inline1.Run = new DynamicWrapper(); inline1.Run.Text = "Inline1"; dynamic inline2 = new DynamicWrapper(); inline2.Run = new DynamicWrapper(); inline2.Run.Text = "Inline2"; dynamic elementMetadata = new DynamicWrapper(); elementMetadata.Inlines = new[] { inline1, inline2 }; // When PrintElementParagraph element = BuildTestHelper.BuildParagraph(elementMetadata); // Then Assert.IsNotNull(element); Assert.IsNotNull(element.Inlines); Assert.AreEqual(2, element.Inlines.Count); Assert.IsInstanceOf <PrintElementRun>(element.Inlines.First()); Assert.IsInstanceOf <PrintElementRun>(element.Inlines.Last()); Assert.AreEqual("Inline1", ((PrintElementRun)element.Inlines.First()).Text); Assert.AreEqual("Inline2", ((PrintElementRun)element.Inlines.Last()).Text); }
public void ShouldBuildParagraphWithSettings() { // Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementParagraph(); var result = new TextWriterWrapper(); var run = new PrintElementRun(); run.Text = "Проверка текста. "; run.Font = new PrintElementFont { Family = "Courier New", Size = 30 }; run.TextDecoration = PrintElementTextDecoration.Underline; run.Foreground = "Blue"; element.Inlines.Add(run); element.Inlines.Add(run); element.Inlines.Add(run); element.Inlines.Add(run); element.Inlines.Add(run); element.Inlines.Add(run); element.Inlines.Add(run); element.Inlines.Add(run); element.IndentSize = 15; // When context.Build(element, result.Writer); // Then Assert.AreEqual(Resources.ResultTestShouldBuildParagraphWithSettings, result.GetText()); }
public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata) { var element = new PrintElementParagraph { Margin = BuildHelper.DefaultMargin, Padding = BuildHelper.DefaultPadding }; BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.ApplyTextProperties(element, elementMetadata); BuildHelper.ApplyBlockProperties(element, buildContext.ElementStyle); BuildHelper.ApplyBlockProperties(element, elementMetadata); ApplyIndent(element, elementMetadata); // Генерация содержимого элемента var contentContext = CreateContentContext(element, buildContext); var inlines = buildContext.ElementBuilder.BuildElements(contentContext, elementMetadata.Inlines); if (inlines != null) { foreach (var inline in inlines) { element.Inlines.Add(inline); } } BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.PostApplyTextProperties(element, elementMetadata); return(element); }
public void ShouldBuildLineBreak() { //Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementParagraph { IndentSize = 30 }; var result = new TextWriterWrapper(); var run1 = new PrintElementRun { Text = "Before Line Break." }; var run2 = new PrintElementRun { Text = "After Line Break." }; element.Inlines.Add(run1); element.Inlines.Add(new PrintElementLineBreak()); element.Inlines.Add(run2); //When context.Build(element, result.Writer); //Then Assert.AreEqual(Resources.ResultTestShouldBuildLineBreak, result.GetText()); }
private static PrintElementBuildContext CreateContentContext(PrintElementParagraph element, PrintElementBuildContext buildContext) { var contentWidth = (element.Border != null) ? BuildHelper.CalcContentWidth(buildContext.ElementWidth, element.Margin, element.Padding, element.Border.Thickness) : BuildHelper.CalcContentWidth(buildContext.ElementWidth, element.Margin, element.Padding); return(buildContext.Create(contentWidth)); }
private static void ApplyIndent(PrintElementParagraph element, dynamic elementMetadata) { double indentSize; if (BuildHelper.TryToSizeInPixels(elementMetadata.IndentSize, elementMetadata.IndentSizeUnit, out indentSize)) { element.IndentSize = indentSize; } }
public static void ApplyParagraphStyles(this TextWriter result, PrintElementParagraph element) { if (element.IndentSize != null) { result.Write("text-indent:"); result.WriteInvariant(element.IndentSize); result.Write("px;"); } }
public void ShouldBuildParagraphWithDefaultSettings() { // Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementParagraph(); var result = new TextWriterWrapper(); // When context.Build(element, result.Writer); // Then Assert.AreEqual(Resources.ResultTestShouldBuildParagraphWithDefaultSettings, result.GetText()); }
public void ShouldApplyIndentSize() { // Given dynamic elementMetadata = new DynamicWrapper(); elementMetadata.IndentSize = 10; elementMetadata.IndentSizeUnit = "Px"; // When PrintElementParagraph element = BuildTestHelper.BuildParagraph(elementMetadata); // Then Assert.IsNotNull(element); Assert.AreEqual(10, element.IndentSize); }
public void ShouldBuildList() { // Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementList(); var result = new TextWriterWrapper(); var item1 = new PrintElementRun { Text = "Item1" }; var item2 = new PrintElementRun { Text = "Item2" }; var item3 = new PrintElementRun { Text = "Item3" }; var par1 = new PrintElementParagraph(); var par2 = new PrintElementParagraph(); var par3 = new PrintElementParagraph(); par1.Inlines.Add(item1); par2.Inlines.Add(item2); par3.Inlines.Add(item3); var section1 = new PrintElementSection(); var section2 = new PrintElementSection(); var section3 = new PrintElementSection(); section1.Blocks.Add(par1); section2.Blocks.Add(par2); section3.Blocks.Add(par3); element.Items.Add(section1); element.Items.Add(section2); element.Items.Add(section3); element.MarkerStyle = PrintElementListMarkerStyle.LowerLatin; element.StartIndex = 24; // When context.Build(element, result.Writer); // Then Assert.AreEqual(Resources.ResultTestShouldBuildList, result.GetText()); }
public void ShouldBuildSectioWithProperties() { //Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementSection(); var result = new TextWriterWrapper(); var run = new PrintElementRun(); run.Text = "Section & Margin & Padding & Border & Background"; var par = new PrintElementParagraph(); par.Inlines.Add(run); par.TextAlignment = PrintElementTextAlignment.Center; var section = new PrintElementSection(); section.Blocks.Add(par); section.Border = new PrintElementBorder { Color = "blue", Thickness = new PrintElementThickness(5) }; section.Margin = new PrintElementThickness(20); section.Padding = new PrintElementThickness(20); section.Background = "yellow"; element.Blocks.Add(section); element.Border = new PrintElementBorder { Color = PrintElementColors.Red, Thickness = new PrintElementThickness(5) }; element.Margin = new PrintElementThickness(20); element.Padding = new PrintElementThickness(20); element.Background = PrintElementColors.Green; //When context.Build(element, result.Writer); //Then Assert.AreEqual(Resources.ResultTestShouldBuildSectioWithProperties, result.GetText()); }
public void ShouldBuildDocumentWithContents() { //Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintViewDocument(); var result = new TextWriterWrapper(); var image0 = new PrintElementImage(_getStream(Resources.ImageRotate0)); var image90 = new PrintElementImage(_getStream(Resources.ImageRotate90)); var image180 = new PrintElementImage(_getStream(Resources.ImageRotate180)); var image270 = new PrintElementImage(_getStream(Resources.ImageRotate270)); image0.Size = new PrintElementSize { Height = 50, Width = 150 }; image90.Size = new PrintElementSize { Height = 150, Width = 50 }; image180.Size = new PrintElementSize { Height = 50, Width = 150 }; image270.Size = new PrintElementSize { Height = 150, Width = 50 }; var par1 = new PrintElementParagraph(); par1.Inlines.Add(image0); par1.Inlines.Add(image90); par1.Inlines.Add(image180); par1.Inlines.Add(image270); var runNormal = new PrintElementRun { Text = "Normal" }; var runSubscript = new PrintElementRun { Text = "Subscript", Font = new PrintElementFont { Variant = PrintElementFontVariant.Subscript } }; var runSuperscript = new PrintElementRun { Text = "Superscript", Font = new PrintElementFont { Variant = PrintElementFontVariant.Superscript } }; var par2 = new PrintElementParagraph(); par2.Inlines.Add(runNormal); par2.Inlines.Add(runSubscript); par2.Inlines.Add(runSuperscript); var run = new PrintElementRun { Text = "White Foreground & Black Background" }; var par3 = new PrintElementParagraph(); par3.Foreground = "white"; par3.Background = "black"; par3.Inlines.Add(run); element.Blocks.Add(par1); element.Blocks.Add(par2); element.Blocks.Add(new PrintElementPageBreak()); element.Blocks.Add(par3); element.PagePadding = new PrintElementThickness(100); //When context.Build(element, result.Writer); //Then Assert.AreEqual(Resources.ResultTestShouldBuildDocumentWithContents, result.GetText()); }
public void ShouldBuildTable() { //Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementTable(); var result = new TextWriterWrapper(); var text1 = new PrintElementRun { Text = "Text11, colspan = 2" }; var cell1 = new PrintElementTableCell { ColumnSpan = 2, Border = new PrintElementBorder { Thickness = new PrintElementThickness(1), Color = "black" } }; var par1 = new PrintElementParagraph(); par1.Inlines.Add(text1); cell1.Block = par1; var row1 = new PrintElementTableRow(); row1.Cells.Add(cell1); var text21 = new PrintElementRun { Text = "Text21" }; var cell21 = new PrintElementTableCell { Border = new PrintElementBorder { Thickness = new PrintElementThickness(1), Color = "black" } }; var par21 = new PrintElementParagraph(); par21.Inlines.Add(text21); cell21.Block = par21; var row2 = new PrintElementTableRow(); row2.Cells.Add(cell21); var text22 = new PrintElementRun { Text = "Text22" }; var cell22 = new PrintElementTableCell { Border = new PrintElementBorder { Thickness = new PrintElementThickness(1), Color = "black" } }; var par22 = new PrintElementParagraph(); par22.Inlines.Add(text22); cell22.Block = par22; row2.Cells.Add(cell22); var column1 = new PrintElementTableColumn { Size = 100 }; var column2 = new PrintElementTableColumn { Size = 200 }; element.Columns.Add(column1); element.Columns.Add(column2); element.Rows.Add(row1); element.Rows.Add(row2); //When context.Build(element, result.Writer); //Then Assert.AreEqual(Resources.ResultTestShouldBuildTable, result.GetText()); }