From 13f7db49ba873db7fac722355da9663642450d38 Mon Sep 17 00:00:00 2001 From: peterforstmeier Date: Fri, 10 Sep 2010 20:09:57 +0200 Subject: [PATCH] More test's for IList Grouping --- .../BaseClasses/Printing/StandardPrinter.cs | 6 +- .../Project/DataManager/DataNavigator.cs | 6 +- .../ListStrategy/BaseListStrategy.cs | 26 +++++++- .../ListStrategy/CollectionStrategy.cs | 61 ++----------------- .../DataManager/ListStrategy/TableStrategy.cs | 39 ------------ .../Project/Interfaces/IDataViewStrategy.cs | 2 + .../DataManager/GroupListFixture.cs | 26 ++++++++ 7 files changed, 66 insertions(+), 100 deletions(-) diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs index 3409e482f5..9979e6b50d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs @@ -239,7 +239,11 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing ExportText textItem = element as ExportText; if (textItem != null) { - textItem.Text = evaluator.Evaluate(textItem.Text); + + string s = evaluator.Evaluate(textItem.Text); + Console.WriteLine("\teval {0} - {1} ",textItem.Text,s); +// textItem.Text = evaluator.Evaluate(textItem.Text); + textItem.Text = s; } } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs index 96b26c7206..3878f04d32 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs @@ -162,9 +162,9 @@ namespace ICSharpCode.Reports.Core private IndexList BuildChildList() { - var t = store as TableStrategy; - IndexList i = t.IndexList; - GroupComparer gc = i[t.CurrentPosition] as GroupComparer; + + IndexList i = store.IndexList; + GroupComparer gc = i[store.CurrentPosition] as GroupComparer; if (gc == null) { return null; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs index 8481d13412..8846a4282a 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs @@ -74,7 +74,6 @@ namespace ICSharpCode.Reports.Core { protected ReportSettings ReportSettings {get;private set;} - #region Sorting delegates protected static List GenericSorter (List list) @@ -94,8 +93,32 @@ namespace ICSharpCode.Reports.Core { #endregion + #region Grouping + protected void BuildGroup (IndexList list) + { + string compVal = String.Empty; + IndexList.Clear(); + IndexList childList = null; + BaseComparer checkElem = list[0]; + foreach (BaseComparer element in list) + { + string v = element.ObjectArray[0].ToString(); + if (compVal != v) { + childList = new IndexList(); + GroupComparer gc = CreateGroupHeader(element); + gc.IndexList = childList; + CreateGroupeChildren(childList,element); + } else { + CreateGroupeChildren(childList,element); + } + compVal = v; + } + ShowIndexList(IndexList); + } + + protected GroupComparer CreateGroupHeader (BaseComparer sc) { GroupComparer gc = new GroupComparer(sc.ColumnCollection,sc.ListIndex,sc.ObjectArray); @@ -109,6 +132,7 @@ namespace ICSharpCode.Reports.Core { string v = sc.ObjectArray[0].ToString(); list.Add(sc); } + #endregion #region Debug Code diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs index bcaeb743df..05b93ca974 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs @@ -164,54 +164,17 @@ namespace ICSharpCode.Reports.Core { } } + public override void Group () { base.Group(); IndexList gl = new IndexList("group"); gl = this.BuildSortIndex (ReportSettings.GroupColumnsCollection); ShowIndexList(gl); - BuildGroup(gl); - } - - - private void BuildGroup (IndexList list) - { - string compVal = String.Empty; - base.IndexList.Clear(); - IndexList childList = null; - BaseComparer checkElem = list[0]; - foreach (BaseComparer element in list) - { - string v = element.ObjectArray[0].ToString(); - if (compVal != v) { - childList = new IndexList(); - GroupComparer gc = base.CreateGroupHeader(element); - gc.IndexList = childList; - - CreateGroupeChildren(childList,element); - } else { - CreateGroupeChildren(childList,element); - } - compVal = v; - } - ShowIndexList(base.IndexList); - } - - /* - private GroupComparer BuildGroupHeader (BaseComparer sc) - { - GroupComparer gc = new GroupComparer(sc.ColumnCollection,sc.ListIndex,sc.ObjectArray); - base.IndexList.Add(gc); - return gc; + base.BuildGroup(gl); } - private void GChild(IndexList list,BaseComparer sc) - { - string v = sc.ObjectArray[0].ToString(); - list.Add(sc); - } - */ public override void Sort() { base.Sort(); @@ -228,8 +191,6 @@ namespace ICSharpCode.Reports.Core { } - - public override void Reset() { this.CurrentPosition = 0; @@ -248,6 +209,8 @@ namespace ICSharpCode.Reports.Core { Reset(); } + #endregion + public override void Fill(IDataItem item) { if (current != null) { @@ -315,21 +278,7 @@ namespace ICSharpCode.Reports.Core { } #endregion - - /* - protected override void Group() - { - if (base.ReportSettings.GroupColumnsCollection.Count == 0) { - return; - } - this.BuildGroup(); - base.Group(); - } - - */ - - #endregion - + #region IDisposable public override void Dispose(){ diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs index 51ce24cb87..21b634a372 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs @@ -149,45 +149,6 @@ namespace ICSharpCode.Reports.Core return arrayList; } - - private void BuildGroup (IndexList list) - { - string compVal = String.Empty; - base.IndexList.Clear(); - IndexList childList = null; - BaseComparer checkElem = list[0]; - foreach (BaseComparer element in list) - { - string v = element.ObjectArray[0].ToString(); - if (compVal != v) { - childList = new IndexList(); - GroupComparer gc = base.CreateGroupHeader(element); - gc.IndexList = childList; - CreateGroupeChildren(childList,element); - } else { - CreateGroupeChildren(childList,element); - } - compVal = v; - } - ShowIndexList(base.IndexList); - } - - -// private GroupComparer CreateGroupHeader (BaseComparer sc) -// { -// GroupComparer gc = new GroupComparer(sc.ColumnCollection,sc.ListIndex,sc.ObjectArray); -// base.IndexList.Add(gc); -// return gc; -// } - - /* - - private void CreateGroupeChildren(IndexList list,BaseComparer sc) - { - string v = sc.ObjectArray[0].ToString(); - list.Add(sc); - } - */ private IndexList IndexBuilder(SortColumnCollection col) { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataViewStrategy.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataViewStrategy.cs index 83255c19c8..737e57154f 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataViewStrategy.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataViewStrategy.cs @@ -19,6 +19,8 @@ namespace ICSharpCode.Reports.Core{ void Bind(); void Fill (IDataItem item); + + IndexList IndexList {get;} //test CurrentItemsCollection FillDataRow(); // diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupListFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupListFixture.cs index 6b7826fe73..fa8a3add23 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupListFixture.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupListFixture.cs @@ -39,6 +39,32 @@ namespace ICSharpCode.Reports.Core.Test.DataManager } + #region group by StringValue + + [Test] + public void Has_Children() + { + var dataNav = PrepareStringGrouping(); + while (dataNav.MoveNext()) { + Assert.That(dataNav.HasChildren,Is.True); + } + } + + + [Test] + public void Can_Read_Child_Count () + { + var dataNav = PrepareStringGrouping(); + while (dataNav.MoveNext()) + { + Assert.That(dataNav.ChildListCount,Is.GreaterThan(0)); + } + } + + + #endregion + + private IDataNavigator PrepareStringGrouping () { GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);