public void ColumnsAreShrunkInOrderToFitData()
        {
            var cwn = new ColumnWidthNegotiator(_formats, 1);
            var items = Enumerable.Range(0, 5)
                .Select(i => new TestType("AAAA" + i, "AAAAAAA AAAAAAAA AAAAAAAA"))
                .ToList();

            cwn.AddHeadings();
            foreach (var item in items)
            {
                cwn.AddRow(item);
            }
            cwn.CalculateWidths(40);

            var output = TabularReportRenderTool.Report(cwn, items);
            Approvals.Verify(output);
        }
        public void FixedWidthColumnsAreNeverShrunk()
        {
            var longStringColFormat = _formats.First(f => f.Property.Name == "LongString").Format;
            longStringColFormat.FixedWidth = 25;

            var cwn = new ColumnWidthNegotiator(_formats, 1);
            var items = Enumerable.Range(0, 5)
                .Select(i => new TestType("AAAA" + i, "AAAAAAA AAAAAAAA AAAA"))
                .ToList();

            cwn.AddHeadings();
            foreach (var item in items)
            {
                cwn.AddRow(item);
            }
            cwn.CalculateWidths(40);

            var output = TabularReportRenderTool.Report(cwn, items);
            Approvals.Verify(output);
        }
 private static void WidenColumn(List<ColumnWidthNegotiator.ColumnSizerInfo> columnPriorityList, ColumnWidthNegotiator.ColumnSizerInfo column)
 {
     var format = column.PropertyColumnFormat.Format;
     format.SetActualWidth(format.ActualWidth + 1);
     columnPriorityList.Remove(column);
     columnPriorityList.Add(column);
 }
 private static int GetMaxColumnWidth(ColumnWidthNegotiator.ColumnSizerInfo s, bool includeHeadingWidth)
 {
     var columnFormat = s.PropertyColumnFormat.Format;
     var headingLength = includeHeadingWidth ? columnFormat.Heading.Length : 0;
     return Math.Max(headingLength, DefaultWidthCalculator.Max(columnFormat));
 }
        public void SizingDataIncludesStackedProperties()
        {
            var cwn = new ColumnWidthNegotiator(_formats, 1);
            var items = Enumerable.Range(0, 5)
                .Select(i => new TestType("AAAA" + i, "AAAAAAA AAAAAAAA AAAAAAAA"))
                .ToList();

            cwn.AddHeadings();
            foreach (var item in items)
            {
                cwn.AddRow(item);
            }
            cwn.CalculateWidths(20);

            var output = TabularReportRenderTool.ReportSizingData(cwn);
            Console.WriteLine(output);
            Approvals.Verify(output);
        }
        public void SizingDataCanBeRetrievedFromSizedColumns()
        {
            var cwn = new ColumnWidthNegotiator(_formats, 1);
            var items = Enumerable.Range(0, 5)
                .Select(i => new TestType("AAAA" + i, "AAAAAAA AAAAAAAA AAAAAAAA"))
                .ToList();

            cwn.AddHeadings();
            foreach (var item in items)
            {
                cwn.AddRow(item);
            }
            cwn.CalculateWidths(80);

            var output = TabularReportRenderTool.ReportSizingData(cwn);
            Approvals.Verify(output);
        }
        public void RowDataCanBeLoadedFromCachedRow()
        {
            var cwn = new ColumnWidthNegotiator(_formats, 1);
            var items = Enumerable.Range(0, 5)
                .Select(i => new TestType("AAAA" + i, "AAAAAAA AAAAAAAA AAAAAAAA"))
                .ToList();
            var cachedData = new CachedRows<TestType>(items);

            cwn.AddHeadings();
            foreach (var row in cachedData.GetRows())
            {
                cwn.AddRow(row);
            }
            cwn.CalculateWidths(80);

            var output = TabularReportRenderTool.Report(cwn, items);
            Approvals.Verify(output);
        }
        public void ProportionalColumnsShareTheAvailableSpace()
        {
            var longStringColFormat = _formats.First(f => f.Property.Name == "LongString").Format;
            var shortStringColFormat = _formats.First(f => f.Property.Name == "ShortString").Format;
            longStringColFormat.ProportionalWidth = 1;
            shortStringColFormat.ProportionalWidth = 1;

            var cwn = new ColumnWidthNegotiator(_formats, 1);
            var items = Enumerable.Range(0, 5)
                .Select(i => new TestType("AAAA" + i, "AAAAAAA AAAAAAAA AAAA"))
                .ToList();

            cwn.AddHeadings();
            foreach (var item in items)
            {
                cwn.AddRow(item);
            }
            cwn.CalculateWidths(29);

            var output = TabularReportRenderTool.Report(cwn, items);
            Approvals.Verify(output);
        }
        public void FixedWidthColumnsCanBeStacked()
        {
            var longStringColFormat = _formats.Last().Format;
            longStringColFormat.FixedWidth = 35;

            var cwn = new ColumnWidthNegotiator(_formats, 1);
            var items = Enumerable.Range(0, 5)
                .Select(i => new TestType("AAAA" + i, "AAAAAAA AAAAAAAA AAAA"))
                .ToList();

            cwn.AddHeadings();
            foreach (var item in items)
            {
                cwn.AddRow(item);
            }
            cwn.CalculateWidths(40);

            var output = cwn.StackedColumns.Select(sc => sc.Property.Name).JoinWith(", ");
            Assert.That(output, Is.EqualTo("LongString"));
        }