Esempio n. 1
0
        public virtual void MultipleLayoutCallsProduceSameLayoutResult()
        {
            PdfDocument            pdfDocument                  = new PdfDocument(new PdfWriter(new MemoryStream()));
            Document               document                     = new Document(pdfDocument);
            int                    minAllowedWidows             = 5;
            int                    overflowedToNextPageLinesNum = 2;
            ParagraphWidowsControl widowsControl                = new ParagraphWidowsControl(minAllowedWidows, minAllowedWidows - overflowedToNextPageLinesNum
                                                                                             , false);
            Paragraph widowsParagraph   = new Paragraph(OrphansWidowsTestUtil.PARA_TEXT).SetWidowsControl(widowsControl);
            IRenderer paragraphRenderer = widowsParagraph.CreateRendererSubTree().SetParent(document.GetRenderer());
            Rectangle effectiveArea     = document.GetPageEffectiveArea(pdfDocument.GetDefaultPageSize());
            float     linesHeight       = OrphansWidowsTestUtil.CalculateHeightForLinesNum(document, widowsParagraph, effectiveArea
                                                                                           .GetWidth(), overflowedToNextPageLinesNum, false);
            Rectangle layoutAreaRect = new Rectangle(effectiveArea).SetHeight(linesHeight + OrphansWidowsTestUtil.LINES_SPACE_EPS
                                                                              );
            LayoutContext layoutContext      = new LayoutContext(new LayoutArea(1, layoutAreaRect));
            LayoutResult  firstLayoutResult  = paragraphRenderer.Layout(layoutContext);
            LayoutResult  secondLayoutResult = paragraphRenderer.Layout(layoutContext);

            // toString() comparison is used since it contains report on status, areaBreak and occupiedArea
            NUnit.Framework.Assert.AreEqual(firstLayoutResult.ToString(), secondLayoutResult.ToString());
            ParagraphRenderer firstSplitRenderer  = (ParagraphRenderer)firstLayoutResult.GetSplitRenderer();
            ParagraphRenderer secondSplitRenderer = (ParagraphRenderer)secondLayoutResult.GetSplitRenderer();

            NUnit.Framework.Assert.IsNotNull(firstSplitRenderer);
            NUnit.Framework.Assert.IsNotNull(secondSplitRenderer);
            NUnit.Framework.Assert.AreEqual(firstSplitRenderer.ToString(), secondSplitRenderer.ToString());
            ParagraphRenderer firstOverflowRenderer  = (ParagraphRenderer)firstLayoutResult.GetOverflowRenderer();
            ParagraphRenderer secondOverflowRenderer = (ParagraphRenderer)secondLayoutResult.GetOverflowRenderer();

            NUnit.Framework.Assert.IsNotNull(firstOverflowRenderer);
            NUnit.Framework.Assert.IsNotNull(secondOverflowRenderer);
            IList <IRenderer> firstOverflowRendererChildren  = firstOverflowRenderer.GetChildRenderers();
            IList <IRenderer> secondOverflowRendererChildren = secondOverflowRenderer.GetChildRenderers();

            NUnit.Framework.Assert.IsNotNull(firstOverflowRendererChildren);
            NUnit.Framework.Assert.IsNotNull(secondOverflowRendererChildren);
            NUnit.Framework.Assert.AreEqual(firstOverflowRendererChildren.Count, secondOverflowRendererChildren.Count);
        }