diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
index 16b5c6a6e0..fa8b1697c4 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
@@ -128,7 +128,10 @@
+
+
+
@@ -356,6 +359,7 @@
+
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/AbstractReportCreator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/AbstractReportCreator.cs
index 93e91289cf..b9b5f01901 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/AbstractReportCreator.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/AbstractReportCreator.cs
@@ -7,26 +7,70 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
+using System.Drawing;
using ICSharpCode.Reports.Core.Interfaces;
-namespace ICSharpCode.Reports.Core.Project.Exporter
+namespace ICSharpCode.Reports.Core.Exporter
{
///
/// Description of BaseReportCreator.
///
- public class AbstractReportCreator:IReportCreator
+ public class AbstractReportCreator:IReportCreator_2
{
+
+
public AbstractReportCreator(IReportModel reportModel)
{
if (reportModel == null) {
throw new ArgumentNullException("ReportModel");
}
- ReportModel = reportModel;
+ this.ReportModel = reportModel;
}
- protected IReportModel ReportModel {get; private set;}
+ #region Convertion
+
+ /*
+ protected virtual void BuildReportHeader ()
+ {
+ }
+
+ protected virtual void BuildPageHeader ()
+ {
+ }
+
+ protected virtual void BuildDetailInternal (BaseSection section)
+ {
+ }
+
+ protected virtual void BuildPageFooter ()
+ {
+ }
+
+ protected virtual void BuildReportFooter ()
+ {
+ }
+
+ */
+
+ public virtual void BuildExportList ()
+ {
+ this.Pages.Clear();
+ AbstractExportListBuilder.WritePages();
+ }
+
+ protected virtual void AddPage ()
+ {
+ }
+
+ #endregion
+
+
+
+ protected IReportModel ReportModel {get; set;}
+
+ protected AbstractExportListBuilder AbstractExportListBuilder {get;set;}
#region IReportCreator
@@ -34,16 +78,14 @@ namespace ICSharpCode.Reports.Core.Project.Exporter
public event EventHandler SectionRendering;
- public PagesCollection Pages {
+
+ public virtual PageDescriptions Pages {
get {
- throw new NotImplementedException();
+ return AbstractExportListBuilder.Pages;
+
}
}
-
- public void BuildExportList()
- {
- throw new NotImplementedException();
- }
+
#endregion
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converter/ItemsConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converter/ItemsConverter.cs
new file mode 100644
index 0000000000..b5017a52e2
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converter/ItemsConverter.cs
@@ -0,0 +1,57 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 21.05.2010
+ * Time: 19:35
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Drawing;
+
+namespace ICSharpCode.Reports.Core.Exporter.Converter
+{
+
+ public interface IItemsConverter
+ {
+ ReportItemCollection Convert (BaseReportItem parent,IEnumerable itemsSource);
+ Point LocationAfterConvert {get;}
+ }
+
+
+ ///
+ /// Description of ItemsConverterr.
+ ///
+
+
+ public class ItemsConverter:IItemsConverter
+ {
+ Point locationAfterConvert;
+
+
+
+ public ItemsConverter()
+ {
+ }
+
+
+ public ReportItemCollection Convert (BaseReportItem parent,IEnumerable itemsSource)
+ {
+ var col = new ReportItemCollection();
+ foreach (BaseReportItem element in itemsSource) {
+
+ col.Add(element);
+ }
+ this.locationAfterConvert = new Point(parent.Size.Width,parent.Size.Height);
+ return col;
+ }
+
+
+ public Point LocationAfterConvert {
+ get { return locationAfterConvert; }
+ }
+ }
+
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataExportListBuilder.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataExportListBuilder.cs
new file mode 100644
index 0000000000..85c4c0a6a6
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataExportListBuilder.cs
@@ -0,0 +1,225 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 15.05.2010
+ * Time: 18:21
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Drawing;
+using System.Linq;
+
+using ICSharpCode.Reports.Core.Interfaces;
+
+namespace ICSharpCode.Reports.Core.Exporter
+{
+ ///
+ /// Description of BuildExportList.
+ ///
+ public class DataExportListBuilder:AbstractExportListBuilder
+ {
+
+
+ public DataExportListBuilder(IReportModel reportModel,IDataManager dataManager):base(reportModel)
+ {
+ this.DataManager = dataManager;
+ this.DataManager.GetNavigator.MoveNext();
+ }
+
+
+ public override void WritePages ()
+ {
+ base.CreateNewPage();
+
+ base.PositionAfterRenderSection = this.BuildReportHeader(SinglePage.SectionBounds.ReportHeaderRectangle.Location);
+
+ this.BuildPageHeader();
+
+// BaseSection section = base.ReportModel.DetailSection;
+//
+// section.SectionOffset = base.SinglePage.SectionBounds.DetailStart.Y;
+// this.BuildDetail (section,dataNavigator);
+//
+// this.BuildReportFooter(SectionBounds.ReportFooterRectangle);
+// this.BuildPageFooter();
+// //this is the last Page
+ this.AddPage(base.SinglePage);
+ //base.FinishRendering(this.dataNavigator);
+ }
+
+
+
+
+ public IDataManager DataManager {get; private set;}
+
+ }
+
+ public class PageDescriptions :Collection
+ {
+
+ }
+
+
+ public class AbstractExportListBuilder
+ {
+
+ private PageDescriptions pages;
+ private readonly object pageLock = new object();
+
+
+ public AbstractExportListBuilder (IReportModel reportModel)
+ {
+ this.ReportModel = reportModel;
+ }
+
+
+ public virtual void WritePages ()
+ {
+
+ }
+
+
+ private ReportItemCollection ConvertContainer (ISimpleContainer container)
+ {
+ var col = new ReportItemCollection();
+ foreach (BaseReportItem element in container.Items)
+ {
+ col.Add(element);
+ }
+ return col;
+ }
+
+
+
+ private void ConvertSimpleItems (IEnumerable items)
+ {
+ foreach (BaseReportItem element in items) {
+ var container = element as ISimpleContainer;
+
+ if (container != null) {
+ Console.WriteLine(" is recursive");
+ container.Items.AddRange(ConvertContainer (container));
+ }
+
+ this.SinglePage.Items.Add(element);
+ }
+ }
+
+
+ private bool CanGrow (IEnumerable collection)
+ {
+ IEnumerable canGrowShrinkCollection = from bt in collection where bt.CanGrow == true select bt;
+ return (canGrowShrinkCollection.Count() > 0);
+ }
+
+
+ private bool CanShrink (IEnumerable collection)
+ {
+ IEnumerable canGrowShrinkCollection = from bt in collection where bt.CanShrink == true select bt;
+ return (canGrowShrinkCollection.Count() > 0);
+ }
+
+
+
+ protected virtual Point BuildReportHeader (Point reportHeaderStart)
+ {
+ System.Console.WriteLine("BuildReportHeader at {0} with {1} items ",reportHeaderStart,ReportModel.ReportHeader.Items.Count);
+
+ BaseSection section = ReportModel.ReportHeader;
+ Size size = section.Size;
+ Point retval = Point.Empty;
+
+ if ((!CanGrow(section.Items)) | (!CanShrink(section.Items))) {
+ ConvertSimpleItems (section.Items);
+ retval = new Point (reportHeaderStart.X , reportHeaderStart.Y + size.Height);
+ } else {
+ retval = new Point (reportHeaderStart.X , 150);
+ }
+
+ return retval;
+ }
+
+
+
+ protected virtual void BuildPageHeader ()
+ {
+// System.Diagnostics.Trace.WriteLine(" BuildPageHeader");
+// PositionAfterRenderSection = new Point(PositionAfterRenderSection.X,PositionAfterRenderSection.Y + 20);
+ }
+
+
+ protected virtual void BuildDetailInternal (BaseSection section)
+ {
+ System.Diagnostics.Trace.WriteLine("BuildDetailInterna ");
+ }
+
+
+ protected virtual void BuildPageFooter ()
+ {
+ System.Diagnostics.Trace.WriteLine("BuildPageFooter ");
+ }
+
+ protected virtual void BuildReportFooter ()
+ {
+ System.Diagnostics.Trace.WriteLine("BuildReportFooter ");
+ }
+
+
+ public virtual void CreateNewPage ()
+ {
+ this.SinglePage = this.InitNewPage();
+ PrintHelper.InitPage(this.SinglePage,this.ReportModel.ReportSettings);
+ this.SinglePage.CalculatePageBounds(this.ReportModel);
+// this.pageFull = false;
+ }
+
+ public Point PositionAfterRenderSection {get;set;}
+
+
+ protected PageDescription InitNewPage ()
+ {
+ SectionBounds sectionBounds = new SectionBounds (ReportModel.ReportSettings,(this.Pages.Count == 0));
+ return new PageDescription(sectionBounds,Pages.Count + 1);
+ }
+
+
+
+ protected void AddPage (PageDescription page)
+ {
+ if (page == null) {
+ throw new ArgumentNullException("page");
+ }
+// lock (addLock) {
+ Pages.Add(page);
+
+// }
+ //FirePageCreated(page);
+ }
+
+
+
+
+
+ public PageDescription SinglePage {get;private set;}
+
+ public IReportModel ReportModel {get;private set;}
+
+
+ public PageDescriptions Pages
+ {
+ get {
+ lock(pageLock) {
+ if (this.pages == null) {
+ pages = new PageDescriptions();
+
+ }
+ return pages;
+ }
+ }
+ }
+
+ }
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataReportCreator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataReportCreator.cs
index 6d802a3295..9b35d15333 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataReportCreator.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataReportCreator.cs
@@ -8,12 +8,10 @@
*/
using System;
-using System.Drawing;
-using ICSharpCode.Reports.Core.Events;
using ICSharpCode.Reports.Core.Interfaces;
-using ICSharpCode.Reports.Core.Project.Exporter;
-namespace ICSharpCode.Reports.Core.old_Exporter
+
+namespace ICSharpCode.Reports.Core.Exporter
{
///
/// Description of DataReportCreator.
@@ -21,11 +19,11 @@ namespace ICSharpCode.Reports.Core.old_Exporter
public class DataReportCreator:AbstractReportCreator
{
+ IDataManager dataManager;
#region Constructor
-
- public static IReportCreator CreateInstance(IReportModel reportModel, IDataManager dataManager,ILayouter layouter)
+ public static AbstractReportCreator CreateInstance(IReportModel reportModel, IDataManager dataManager,ILayouter layouter)
{
if (reportModel == null) {
throw new ArgumentNullException("reportModel");
@@ -43,12 +41,17 @@ namespace ICSharpCode.Reports.Core.old_Exporter
private DataReportCreator (IReportModel reportModel,IDataManager dataManager,ILayouter layouter):base(reportModel)
{
-// this.dataManager = dataManager;
+ this.dataManager = dataManager;
+ base.AbstractExportListBuilder = new DataExportListBuilder(reportModel,dataManager);
}
#endregion
-
+ public override void BuildExportList()
+ {
+ base.AbstractExportListBuilder.WritePages();
+
+ }
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/PageDescription.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/PageDescription.cs
new file mode 100644
index 0000000000..26e9714bd9
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/PageDescription.cs
@@ -0,0 +1,52 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 16.05.2010
+ * Time: 19:06
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+
+namespace ICSharpCode.Reports.Core.Exporter
+{
+ ///
+ /// Description of PageDescription.
+ ///
+
+
+ public class PageDescription:SinglePage
+ {
+
+ private ReportItemCollection items;
+
+
+ public PageDescription (SectionBounds sectionBounds,int pageNumber):base(sectionBounds,pageNumber)
+ {
+ if (sectionBounds == null) {
+ throw new ArgumentNullException("sectionBounds");
+ }
+ this.SectionBounds = sectionBounds;
+ }
+
+ public ReportItemCollection Items
+ {
+ get {
+ if (this.items == null) {
+ this.items = new ReportItemCollection();
+ }
+ return this.items;
+ }
+ }
+
+// public ExporterCollection Items
+// {
+// get {
+// if (this.items == null) {
+// items = new ExporterCollection();
+// }
+// return items;
+// }
+// }
+ }
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Utilities/ReflectionExtensions.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Utilities/ReflectionExtensions.cs
index 810b5b7098..3dfb6d3d6e 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Utilities/ReflectionExtensions.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Utilities/ReflectionExtensions.cs
@@ -37,5 +37,6 @@ namespace SimpleExpressionEvaluator.Utilities
return null;
}
+
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs
index e810ed0983..2f8fa7184d 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs
@@ -6,6 +6,7 @@
*
* Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
*/
+using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.old_Exporter;
using System;
@@ -21,4 +22,13 @@ namespace ICSharpCode.Reports.Core
event EventHandler PageCreated;
event EventHandler SectionRendering;
}
+
+
+ public interface IReportCreator_2
+ {
+ void BuildExportList ();
+ PageDescriptions Pages{get;}
+ event EventHandler PageCreated;
+ event EventHandler SectionRendering;
+ }
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/Converter/ItemsConverterFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/Converter/ItemsConverterFixture.cs
new file mode 100644
index 0000000000..d5809b72b4
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/Converter/ItemsConverterFixture.cs
@@ -0,0 +1,62 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 21.05.2010
+ * Time: 19:44
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using ICSharpCode.Reports.Core.Exporter.Converter;
+using ICSharpCode.Reports.Core.Test.TestHelpers;
+using NUnit.Framework;
+
+namespace ICSharpCode.Reports.Core.Test.Exporter.Converter
+{
+ [TestFixture]
+ public class ItemsConverterFixture:ConcernOf
+ {
+ [Test]
+ public void ConvertSimpleItem()
+ {
+ BaseSection section = new BaseSection();
+ section.Items.Add(CreateSimpeTextItem());
+ Point point = new Point(1,1);
+ ReportItemCollection result = Sut.Convert (section,section.Items);
+ Assert.AreEqual(new Point(section.Size.Width,section.Size.Height),Sut.LocationAfterConvert);
+ Assert.AreEqual(1,result.Count);
+
+ }
+
+
+ private BaseReportItem CreateSimpeTextItem ()
+ {
+ BaseTextItem bt = new BaseTextItem();
+ bt.Text = "MyText";
+ return bt;
+ }
+
+
+ public override void Setup()
+ {
+ Sut = new ItemsConverter();
+ }
+
+
+
+ [TestFixtureSetUp]
+ public void Init()
+ {
+ // TODO: Add Init code.
+ }
+
+ [TestFixtureTearDown]
+ public void Dispose()
+ {
+ // TODO: Add tear down code.
+ }
+ }
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataListBuilderFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataListBuilderFixture.cs
new file mode 100644
index 0000000000..889cce848c
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataListBuilderFixture.cs
@@ -0,0 +1,122 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 15.05.2010
+ * Time: 18:29
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+
+using System;
+using System.Drawing;
+using ICSharpCode.Reports.Core.Exporter;
+using ICSharpCode.Reports.Core.Interfaces;
+using ICSharpCode.Reports.Core.Project.Interfaces;
+using ICSharpCode.Reports.Core.Test.TestHelpers;
+using NUnit.Framework;
+
+namespace ICSharpCode.Reports.Core.Test.Exporter
+{
+ [TestFixture]
+ public class DataListBuilderFixture:ConcernOf
+ {
+ ReportModel reportModel;
+
+ [Test]
+ public void Can_Create_ExportListBuilder()
+ {
+ ReportSettings rs = new ReportSettings();
+ rs.ConnectionString = "goodConnection";
+
+ IDataAccessStrategy da = new MockDataAccessStrategy (rs);
+ IDataManager dataManager = ICSharpCode.Reports.Core.DataManager.CreateInstance(rs,da);
+
+ var reportModel = ReportModel.Create();
+
+ DataExportListBuilder sut = new DataExportListBuilder(reportModel,dataManager);
+ Assert.IsNotNull(sut);
+ IDataNavigator n = sut.DataManager.GetNavigator;
+ Assert.AreEqual(0,sut.DataManager.GetNavigator.CurrentRow);
+ }
+
+
+ [Test]
+ public void PagesCollection_Should_Be_Not_Null()
+ {
+ Sut.WritePages();
+ Assert.IsNotNull(Sut.Pages);
+ Assert.AreEqual(1,Sut.Pages.Count);
+
+ }
+
+
+ [Test]
+ public void Pagenumber_Should_Be_One()
+ {
+ Sut.WritePages();
+ Assert.AreEqual(1,Sut.Pages.Count);
+ Assert.AreEqual(1,Sut.Pages[0].PageNumber);
+ }
+
+
+ [Test]
+ public void LocPos()
+ {
+ Sut.WritePages();
+ Point retVal = new Point (50,50 + reportModel.ReportHeader.Size.Height);
+ Assert.AreEqual(retVal.Y,Sut.PositionAfterRenderSection.Y);
+ }
+
+
+ [Test]
+ public void Add_One_Item_In_ReportHeader()
+ {
+ var item = CreateSimpeTextItem();
+ reportModel.ReportHeader.Items.Add(item);
+ Sut.WritePages();
+ BaseReportItem it = Sut.Pages[0].Items[0];
+ Assert.IsNotNull(it);
+ Assert.AreEqual(1,Sut.Pages[0].Items.Count);
+ }
+
+
+ [Test]
+ public void Add_Container_In_ReportHeader()
+ {
+ BaseRowItem row = new BaseRowItem() {
+ Location = new Point (5,5)
+ };
+ row.Items.Add(CreateSimpeTextItem());
+ reportModel.ReportHeader.Items.Add(row);
+ Sut.WritePages();
+ Assert.AreEqual(1,Sut.Pages[0].Items.Count);
+ var checkRow = Sut.Pages[0].Items[0];
+ Assert.IsAssignableFrom(typeof(BaseRowItem),checkRow);
+
+ BaseReportItem checkItem = ((BaseRowItem)checkRow).Items[0];
+ Assert.IsNotNull(checkItem);
+ }
+
+
+ private BaseReportItem CreateSimpeTextItem ()
+ {
+ BaseTextItem bt = new BaseTextItem();
+ bt.Text = "MyText";
+ return bt;
+ }
+
+ public override void Setup()
+ {
+ ReportSettings rs = new ReportSettings();
+ rs.ConnectionString = "goodConnection";
+
+ IDataAccessStrategy da = new MockDataAccessStrategy (rs);
+ IDataManager dataManager = ICSharpCode.Reports.Core.DataManager.CreateInstance(rs,da);
+
+ reportModel = ReportModel.Create();
+
+ Sut = new DataExportListBuilder(reportModel,dataManager);
+ }
+
+ }
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataPageBuilderFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataPageBuilderFixture.cs
index 5239e8cad1..c6cf14a53f 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataPageBuilderFixture.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataPageBuilderFixture.cs
@@ -8,17 +8,63 @@
*/
using System;
+using System.Data;
+using ICSharpCode.Reports.Core.Exporter;
+using ICSharpCode.Reports.Core.Interfaces;
+using ICSharpCode.Reports.Core.Project.Interfaces;
+using ICSharpCode.Reports.Core.Test.TestHelpers;
using NUnit.Framework;
namespace ICSharpCode.Reports.Core.Test.Exporter
{
[TestFixture]
- public class DataPageBuilderFixture
+ public class DataPageBuilderFixture:ConcernOf
{
+
+ IReportModel reportModel;
+
+
+ [Test]
+ public void Can_Create_DataReportCreator()
+ {
+
+ ReportSettings rs = new ReportSettings();
+ rs.ConnectionString = "goodConnection";
+
+ IDataAccessStrategy da = new MockDataAccessStrategy (rs);
+ IDataManager dataManager = ICSharpCode.Reports.Core.DataManager.CreateInstance(rs,da);
+
+ ILayouter layouter = new Layouter();
+ IReportCreator_2 sut = DataReportCreator.CreateInstance(reportModel,dataManager,layouter);
+ Assert.IsNotNull(sut);
+ }
+
+
[Test]
- public void TestMethod()
+ public void Empty_ReportModel_Should_Return_Empty_List()
+ {
+ Sut.BuildExportList();
+ Assert.AreEqual(1,Sut.Pages.Count);
+ }
+
+
+
+
+
+
+ public override void Setup()
{
- // TODO: Add your test.
+ reportModel = ReportModel.Create();
+ ILayouter layouter = new Layouter();
+
+ ReportSettings rs = new ReportSettings();
+ rs.ConnectionString = "goodConnection";
+
+ IDataAccessStrategy da = new MockDataAccessStrategy (rs);
+
+ IDataManager dataManager = ICSharpCode.Reports.Core.DataManager.CreateInstance(rs,da);
+
+ Sut = DataReportCreator.CreateInstance(reportModel,dataManager,layouter);
}
[TestFixtureSetUp]
@@ -33,4 +79,39 @@ namespace ICSharpCode.Reports.Core.Test.Exporter
// TODO: Add tear down code.
}
}
+
+
+ public class MockDataAccessStrategy:IDataAccessStrategy
+ {
+ ReportSettings reportSettings;
+
+ public MockDataAccessStrategy(ReportSettings reportSettings)
+ {
+ this.reportSettings = reportSettings;
+ }
+
+
+
+ public bool OpenConnection ()
+ {
+
+ if (String.IsNullOrEmpty(reportSettings.ConnectionString)) {
+ throw new ArgumentNullException("ConnectionString");
+ }
+
+ if (reportSettings.ConnectionString == "bad") {
+ throw new ArgumentException();
+ }
+ return true;
+ }
+
+ public System.Data.DataSet ReadData()
+ {
+ ContributorsList contributorsList = new ContributorsList();
+ DataSet ds = new DataSet();
+ ds.Tables.Add(contributorsList.ContributorTable);
+ return ds;
+ }
+
+ }
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj
index 53ce873a00..b296787e35 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj
@@ -75,7 +75,9 @@
+
+
@@ -116,6 +118,7 @@
ICSharpCode.Reports.Core
+