Browse Source

Test#s for ArrangeStrategy.cs

reports
Peter Forstmeier 12 years ago
parent
commit
eb7f797122
  1. 25
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  2. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs
  3. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs
  4. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
  5. 92
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerArrangeStrategyFixture.cs
  6. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/ReportWithTwoItems.srd

25
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs

@ -35,26 +35,21 @@ namespace ICSharpCode.Reporting.Arrange @@ -35,26 +35,21 @@ namespace ICSharpCode.Reporting.Arrange
{
if (exportColumn == null)
throw new ArgumentNullException("exportColumn");
var e = exportColumn as IExportContainer;
if ((e != null) && (e.ExportedItems.Count > 0)) {
Console.WriteLine("Arrange Container {0} ",e.Name);
Console.WriteLine("Container-Size {0}",e.Size);
var container = exportColumn as IExportContainer;
if ((container != null) && (container.ExportedItems.Count > 0)) {
BiggestRectangle = Rectangle.Empty;
foreach (var element in e.ExportedItems) {
if (element.Size.Height > BiggestRectangle.Size.Height) {
BiggestRectangle = new Rectangle(element.Location,element.Size);
foreach (var item in container.ExportedItems) {
if (item.DesiredSize.Height > BiggestRectangle.Size.Height) {
BiggestRectangle = new Rectangle(new Point(container.Location.X + item.Location.X,
container.Location.Y + item.Location.Y)
,item.DesiredSize);
}
}
if (!BiggestRectangle.IsEmpty) {
Console.WriteLine("BiggestRectangle {0}",BiggestRectangle.ToString());
var r = Rectangle.Union(new Rectangle(e.Location,e.Size),BiggestRectangle);
Console.WriteLine("Sorrounding {0}",r.ToString());
e.DesiredSize = new Size(e.Size.Width,BiggestRectangle.Bottom + 2);
Console.WriteLine("Container-Desired_siz {0}",e.DesiredSize);
Console.WriteLine("new rect {0}",new Rectangle(e.Location,e.DesiredSize));
var containerRectangle = new Rectangle(container.Location,container.Size);
var desiredRectangle = Rectangle.Union(containerRectangle,BiggestRectangle);
container.DesiredSize = new Size(container.Size.Width,desiredRectangle.Size.Height + 5);
}
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.Reporting.BaseClasses @@ -20,7 +20,7 @@ namespace ICSharpCode.Reporting.BaseClasses
/// </summary>
///
public class Page:IPage
public class Page:IExportContainer,IPage
{
public Page(IPageInfo pageInfo,Size pageSize)
{

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs

@ -24,7 +24,6 @@ public class BaseSection:ReportContainer,IReportContainer @@ -24,7 +24,6 @@ public class BaseSection:ReportContainer,IReportContainer
public BaseSection()
{
// Items = new List<IPrintableObject>();
}
public BaseSection (string name) {

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs

@ -54,7 +54,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -54,7 +54,7 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildPageHeader()
{
var containerConverter = new ContainerConverter(graphics,ReportModel.PageHeader,CurrentLocation);
var header =containerConverter.Convert();
var header = containerConverter.Convert();
header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header);
}

92
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerArrangeStrategyFixture.cs

@ -30,14 +30,14 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -30,14 +30,14 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test]
public void ItemAtTopOfContainer() {
var c = CreateContainer();
c.ExportedItems[0].Location = c.Location;
strategy.Arrange(c);
var container = CreateContainer();
container.ExportedItems[0].Location = container.Location;
strategy.Arrange(container);
var containerRect = new Rectangle(c.Location,c.DesiredSize);
var itemRect = new Rectangle(c.ExportedItems[0].Location,c.ExportedItems[0].Size);
var containerRect = new Rectangle(container.Location,container.DesiredSize);
var itemRect = new Rectangle(container.ExportedItems[0].Location,container.ExportedItems[0].Size);
Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,itemRect,itemRect.Bottom);
// Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,itemRect,itemRect.Bottom);
Assert.That(containerRect.Contains(itemRect));
}
@ -45,49 +45,72 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -45,49 +45,72 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test]
public void ItemAtTopBottomOfContainer() {
var c = CreateContainer();
c.ExportedItems[0].Location = new Point (c.Location.X,
c.Location.Y + c.DesiredSize.Height - c.ExportedItems[0].Size.Height);
strategy.Arrange(c);
var container = CreateContainer();
container.ExportedItems[0].Location = new Point (container.Location.X,
container.Location.Y + container.DesiredSize.Height - container.ExportedItems[0].Size.Height);
strategy.Arrange(container);
var containerRect = new Rectangle(c.Location,c.DesiredSize);
var itemRect = new Rectangle(c.ExportedItems[0].Location,c.ExportedItems[0].Size);
var containerRect = new Rectangle(container.Location,container.DesiredSize);
var itemRect = new Rectangle(container.ExportedItems[0].Location,container.ExportedItems[0].Size);
Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,itemRect,itemRect.Bottom);
// Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,itemRect,itemRect.Bottom);
Assert.That(containerRect.Contains(itemRect));
}
[Test]
public void FindBiggestRectangle () {
var c = CreateContainer();
var secondItem = new ExportText(){
Name = "Item1",
Location = new Point(10,10),
Size = new Size (60,70)
};
c.ExportedItems.Add(secondItem);
var container = CreateContainer();
var secondItem = CreateCanGrowText(container);
container.ExportedItems.Add(secondItem);
strategy.Arrange(c);
var expected = new Rectangle(secondItem.Location,secondItem.Size);
strategy.Arrange(container);
var expected = new Rectangle(new Point(container.Location.X + secondItem.Location.X,
container.Location.Y + secondItem.Location.Y),
secondItem.Size);
Assert.That(strategy.BiggestRectangle,Is.EqualTo(expected));
}
[Test]
public void ContainerCanGrow () {
var c = CreateContainer();
public void ContainerResizeIfItemCanGrow () {
var container = CreateContainer();
container.ExportedItems.Add(CreateCanGrowText(container));
strategy.Arrange(container);
var containerRect = new Rectangle(container.Location,container.DesiredSize);
var arrangeRect = new Rectangle(new Point(container.Location.X + strategy.BiggestRectangle.Left,
strategy.BiggestRectangle.Top),
strategy.BiggestRectangle.Size);
// Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,strategy.BiggestRectangle,strategy.BiggestRectangle.Bottom);
Assert.That(containerRect.Contains(arrangeRect));
Assert.That(containerRect.Bottom,Is.EqualTo(arrangeRect.Bottom + 5));
}
[Test]
public void ResizedContainerExeed5Points() {
var container = CreateContainer();
container.ExportedItems.Add(CreateCanGrowText(container));
strategy.Arrange(container);
var containerRect = new Rectangle(container.Location,container.DesiredSize);
var arrangeRect = new Rectangle(new Point(container.Location.X + strategy.BiggestRectangle.Left,
strategy.BiggestRectangle.Top),
strategy.BiggestRectangle.Size);
Assert.That(containerRect.Bottom,Is.EqualTo(arrangeRect.Bottom + 5));
}
private IExportText CreateCanGrowText(IExportContainer container) {
var secondItem = new ExportText(){
Name = "Item1",
Location = new Point(10,10),
Size = new Size (20,70)
Location = new Point(80,10),
Size = new Size (20,70),
DesiredSize = new Size (20,70),
Parent = container
};
c.ExportedItems.Add(secondItem);
strategy.Arrange(c);
var containerRect = new Rectangle(c.Location,c.DesiredSize);
Console.WriteLine("{0} - {1} - {2} - {3}",containerRect,containerRect.Bottom,strategy.BiggestRectangle,strategy.BiggestRectangle.Bottom);
Assert.That(containerRect.Contains(strategy.BiggestRectangle));
return secondItem;
}
@ -101,8 +124,9 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -101,8 +124,9 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
var item1 = new ExportText(){
Name = "Item1",
Location = new Point(55,55),
Size = new Size (60,20)
Location = new Point(10,10),
Size = new Size (60,20),
Parent = container
};
container.ExportedItems.Add(item1);

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestReports/ReportWithTwoItems.srd

@ -73,7 +73,7 @@ @@ -73,7 +73,7 @@
<Font>Microsoft Sans Serif, 10pt</Font>
<StringTrimming>None</StringTrimming>
<ContentAlignment>TopLeft</ContentAlignment>
<CanGrow>False</CanGrow>
<CanGrow>True</CanGrow>
<CanShrink>False</CanShrink>
<RTL>No</RTL>
<Text>TestText for Item in PageHeader</Text>

Loading…
Cancel
Save