public void LayoutMultipleDescriptions1()
        {
            // 7 descriptions.
            StringWriter writer = new StringWriter();
            SizeF paperSize = new SizeF(400, 500);
            float boxSize = 10;
            float spacing = 15;
            MockDescription desc1 = new MockDescription("desc1", writer, 8, 17);
            MockDescription desc2 = new MockDescription("desc2", writer, 8, 15);
            MockDescription desc3 = new MockDescription("desc3", writer, 12, 22);
            MockDescription desc4 = new MockDescription("desc4", writer, 12, 24);
            MockDescription desc5 = new MockDescription("desc5", writer, 8, 11);
            MockDescription desc6 = new MockDescription("desc6", writer, 8, 16);
            MockDescription desc7 = new MockDescription("desc7", writer, 8, 8);
            RectanglePositioner positioner = new RectanglePositioner(paperSize, boxSize, spacing);

            positioner.LayoutMultipleDescriptions(new MockDescription[] { desc1, desc2, desc3, desc4, desc5, desc6, desc7 });
            //Assert.AreEqual(1, positioner.PageCount);
            positioner.DrawPage(null, 0);
            Assert.AreEqual(
            @"@ (0,0) description 'desc4'
            @ (0,255) description 'desc3'
            @ (135,0) description 'desc1'
            @ (135,185) description 'desc6'
            @ (135,360) description 'desc5'
            @ (230,0) description 'desc2'
            @ (230,165) description 'desc7'
            ", writer.ToString());
        }
        public void LayoutMultipleDescriptions1()
        {
            // 7 descriptions.
            StringWriter writer = new StringWriter();
            SizeF paperSize = new SizeF(400, 500);
            float boxSize = 10;
            float spacing = 15;
            MockDescription desc1 = new MockDescription("desc1", writer, 8, 17);
            MockDescription desc2 = new MockDescription("desc2", writer, 8, 15);
            MockDescription desc3 = new MockDescription("desc3", writer, 12, 22);
            MockDescription desc4 = new MockDescription("desc4", writer, 12, 24);
            MockDescription desc5 = new MockDescription("desc5", writer, 8, 11);
            MockDescription desc6 = new MockDescription("desc6", writer, 8, 16);
            MockDescription desc7 = new MockDescription("desc7", writer, 8, 8);
            RectanglePositioner positioner = new RectanglePositioner(paperSize, boxSize, spacing);

            positioner.LayoutMultipleDescriptions(new MockDescription[] { desc1, desc2, desc3, desc4, desc5, desc6, desc7 });
            //Assert.AreEqual(1, positioner.PageCount);
            positioner.DrawPage((IGraphicsTarget)null, 0);
            Assert.AreEqual(
@"@ (0,0) description 'desc4'
@ (0,255) description 'desc3'
@ (135,0) description 'desc1'
@ (135,185) description 'desc6'
@ (135,360) description 'desc5'
@ (230,0) description 'desc2'
@ (230,165) description 'desc7'
", writer.ToString());
        }
        public void LayoutMultipleDescriptions2()
        {
            // test descriptions breaking across columns.
            StringWriter writer = new StringWriter();
            SizeF paperSize = new SizeF(400, 250);
            float boxSize = 10;
            float spacing = 15;
            MockDescription desc1 = new MockDescription("desc1", writer, 12, 22);
            MockDescription desc2 = new MockDescription("desc2", writer, 8, 36);
            MockDescription desc3 = new MockDescription("desc3", writer, 8, 6);
            RectanglePositioner positioner = new RectanglePositioner(paperSize, boxSize, spacing);

            positioner.LayoutMultipleDescriptions(new MockDescription[] { desc1, desc2, desc3 });
            //Assert.AreEqual(1, positioner.PageCount);
            positioner.DrawPage((IGraphicsTarget)null, 0);
            Assert.AreEqual(
@"@ (0,0) description 'desc1'
@ (135,0) partial description 'desc2' [start:0 count:25]
@ (230,0) partial description 'desc2' [start:25 count:11]
@ (230,125) description 'desc3'
", writer.ToString());
        }
        public void LayoutMultipleDescriptions2()
        {
            // test descriptions breaking across columns.
            StringWriter writer = new StringWriter();
            SizeF paperSize = new SizeF(400, 250);
            float boxSize = 10;
            float spacing = 15;
            MockDescription desc1 = new MockDescription("desc1", writer, 12, 22);
            MockDescription desc2 = new MockDescription("desc2", writer, 8, 36);
            MockDescription desc3 = new MockDescription("desc3", writer, 8, 6);
            RectanglePositioner positioner = new RectanglePositioner(paperSize, boxSize, spacing);

            positioner.LayoutMultipleDescriptions(new MockDescription[] { desc1, desc2, desc3 });
            //Assert.AreEqual(1, positioner.PageCount);
            positioner.DrawPage(null, 0);
            Assert.AreEqual(
            @"@ (0,0) description 'desc1'
            @ (135,0) partial description 'desc2' [start:0 count:25]
            @ (230,0) partial description 'desc2' [start:25 count:11]
            @ (230,125) description 'desc3'
            ", writer.ToString());
        }