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
{ {
if (exportColumn == null) if (exportColumn == null)
throw new ArgumentNullException("exportColumn"); throw new ArgumentNullException("exportColumn");
var e = exportColumn as IExportContainer; var container = exportColumn as IExportContainer;
if ((e != null) && (e.ExportedItems.Count > 0)) { if ((container != null) && (container.ExportedItems.Count > 0)) {
Console.WriteLine("Arrange Container {0} ",e.Name);
Console.WriteLine("Container-Size {0}",e.Size);
BiggestRectangle = Rectangle.Empty; BiggestRectangle = Rectangle.Empty;
foreach (var element in e.ExportedItems) { foreach (var item in container.ExportedItems) {
if (element.Size.Height > BiggestRectangle.Size.Height) { if (item.DesiredSize.Height > BiggestRectangle.Size.Height) {
BiggestRectangle = new Rectangle(element.Location,element.Size); BiggestRectangle = new Rectangle(new Point(container.Location.X + item.Location.X,
container.Location.Y + item.Location.Y)
,item.DesiredSize);
} }
} }
if (!BiggestRectangle.IsEmpty) { if (!BiggestRectangle.IsEmpty) {
Console.WriteLine("BiggestRectangle {0}",BiggestRectangle.ToString()); var containerRectangle = new Rectangle(container.Location,container.Size);
var r = Rectangle.Union(new Rectangle(e.Location,e.Size),BiggestRectangle); var desiredRectangle = Rectangle.Union(containerRectangle,BiggestRectangle);
Console.WriteLine("Sorrounding {0}",r.ToString()); container.DesiredSize = new Size(container.Size.Width,desiredRectangle.Size.Height + 5);
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));
} }
} }
} }

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

@ -20,7 +20,7 @@ namespace ICSharpCode.Reporting.BaseClasses
/// </summary> /// </summary>
/// ///
public class Page:IPage public class Page:IExportContainer,IPage
{ {
public Page(IPageInfo pageInfo,Size pageSize) 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
public BaseSection() public BaseSection()
{ {
// Items = new List<IPrintableObject>();
} }
public BaseSection (string name) { public BaseSection (string name) {

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

@ -54,7 +54,7 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuildPageHeader() void BuildPageHeader()
{ {
var containerConverter = new ContainerConverter(graphics,ReportModel.PageHeader,CurrentLocation); var containerConverter = new ContainerConverter(graphics,ReportModel.PageHeader,CurrentLocation);
var header =containerConverter.Convert(); var header = containerConverter.Convert();
header.Parent = CurrentPage; header.Parent = CurrentPage;
CurrentPage.ExportedItems.Add(header); 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
[Test] [Test]
public void ItemAtTopOfContainer() { public void ItemAtTopOfContainer() {
var c = CreateContainer(); var container = CreateContainer();
c.ExportedItems[0].Location = c.Location; container.ExportedItems[0].Location = container.Location;
strategy.Arrange(c); strategy.Arrange(container);
var containerRect = new Rectangle(c.Location,c.DesiredSize); var containerRect = new Rectangle(container.Location,container.DesiredSize);
var itemRect = new Rectangle(c.ExportedItems[0].Location,c.ExportedItems[0].Size); 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)); Assert.That(containerRect.Contains(itemRect));
} }
@ -45,49 +45,72 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test] [Test]
public void ItemAtTopBottomOfContainer() { public void ItemAtTopBottomOfContainer() {
var c = CreateContainer(); var container = CreateContainer();
c.ExportedItems[0].Location = new Point (c.Location.X, container.ExportedItems[0].Location = new Point (container.Location.X,
c.Location.Y + c.DesiredSize.Height - c.ExportedItems[0].Size.Height); container.Location.Y + container.DesiredSize.Height - container.ExportedItems[0].Size.Height);
strategy.Arrange(c); strategy.Arrange(container);
var containerRect = new Rectangle(c.Location,c.DesiredSize); var containerRect = new Rectangle(container.Location,container.DesiredSize);
var itemRect = new Rectangle(c.ExportedItems[0].Location,c.ExportedItems[0].Size); 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)); Assert.That(containerRect.Contains(itemRect));
} }
[Test] [Test]
public void FindBiggestRectangle () { public void FindBiggestRectangle () {
var c = CreateContainer(); var container = CreateContainer();
var secondItem = new ExportText(){ var secondItem = CreateCanGrowText(container);
Name = "Item1", container.ExportedItems.Add(secondItem);
Location = new Point(10,10),
Size = new Size (60,70)
};
c.ExportedItems.Add(secondItem);
strategy.Arrange(c); strategy.Arrange(container);
var expected = new Rectangle(secondItem.Location,secondItem.Size); 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)); Assert.That(strategy.BiggestRectangle,Is.EqualTo(expected));
} }
[Test] [Test]
public void ContainerCanGrow () { public void ContainerResizeIfItemCanGrow () {
var c = CreateContainer(); 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(){ var secondItem = new ExportText(){
Name = "Item1", Name = "Item1",
Location = new Point(10,10), Location = new Point(80,10),
Size = new Size (20,70) Size = new Size (20,70),
DesiredSize = new Size (20,70),
Parent = container
}; };
c.ExportedItems.Add(secondItem); return 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));
} }
@ -101,8 +124,9 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
var item1 = new ExportText(){ var item1 = new ExportText(){
Name = "Item1", Name = "Item1",
Location = new Point(55,55), Location = new Point(10,10),
Size = new Size (60,20) Size = new Size (60,20),
Parent = container
}; };
container.ExportedItems.Add(item1); container.ExportedItems.Add(item1);

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

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

Loading…
Cancel
Save