Browse Source

Add UnitTest's for Grouping with IList

pull/1/head
peterforstmeier 15 years ago
parent
commit
38837e3935
  1. 23
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs
  2. 57
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs
  3. 25
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  4. 67
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupListFixture.cs
  5. 39
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupTableFixture.cs
  6. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj

23
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs

@ -42,9 +42,7 @@ namespace ICSharpCode.Reports.Core { @@ -42,9 +42,7 @@ namespace ICSharpCode.Reports.Core {
internal abstract class BaseListStrategy :IDataViewStrategy,IEnumerator {
//Index to plain Datat
private IndexList indexList;
private AvailableFieldsCollection availableFields;
@ -76,6 +74,7 @@ namespace ICSharpCode.Reports.Core { @@ -76,6 +74,7 @@ namespace ICSharpCode.Reports.Core {
protected ReportSettings ReportSettings {get;private set;}
#region Sorting delegates
protected static List<BaseComparer> GenericSorter (List<BaseComparer> list)
@ -93,9 +92,27 @@ namespace ICSharpCode.Reports.Core { @@ -93,9 +92,27 @@ namespace ICSharpCode.Reports.Core {
return lbc;
}
#endregion
#region Grouping
protected GroupComparer CreateGroupHeader (BaseComparer sc)
{
GroupComparer gc = new GroupComparer(sc.ColumnCollection,sc.ListIndex,sc.ObjectArray);
IndexList.Add(gc);
return gc;
}
protected void CreateGroupeChildren(IndexList list,BaseComparer sc)
{
string v = sc.ObjectArray[0].ToString();
list.Add(sc);
}
#endregion
#region Debug Code
protected static void ShowIndexList (IndexList list)
{
foreach (BaseComparer element in list) {
@ -116,12 +133,14 @@ namespace ICSharpCode.Reports.Core { @@ -116,12 +133,14 @@ namespace ICSharpCode.Reports.Core {
}
}
#endregion
public virtual void Reset()
{
this.indexList.CurrentPosition = -1;
}
public virtual object Current
{
get {

57
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs

@ -46,10 +46,6 @@ namespace ICSharpCode.Reports.Core { @@ -46,10 +46,6 @@ namespace ICSharpCode.Reports.Core {
#endregion
#region build grouping
#endregion
#region build sorting
@ -168,7 +164,54 @@ namespace ICSharpCode.Reports.Core { @@ -168,7 +164,54 @@ 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;
}
private void GChild(IndexList list,BaseComparer sc)
{
string v = sc.ObjectArray[0].ToString();
list.Add(sc);
}
*/
public override void Sort()
{
base.Sort();
@ -185,6 +228,8 @@ namespace ICSharpCode.Reports.Core { @@ -185,6 +228,8 @@ namespace ICSharpCode.Reports.Core {
}
public override void Reset()
{
this.CurrentPosition = 0;
@ -195,7 +240,9 @@ namespace ICSharpCode.Reports.Core { @@ -195,7 +240,9 @@ namespace ICSharpCode.Reports.Core {
public override void Bind()
{
base.Bind();
if (base.ReportSettings.SortColumnsCollection != null) {
if (base.ReportSettings.GroupColumnsCollection.Count > 0) {
this.Group();
} else {
this.Sort ();
}
Reset();

25
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs

@ -161,32 +161,33 @@ namespace ICSharpCode.Reports.Core @@ -161,32 +161,33 @@ namespace ICSharpCode.Reports.Core
string v = element.ObjectArray[0].ToString();
if (compVal != v) {
childList = new IndexList();
GroupComparer gc = BuildGroupHeader(element);
GroupComparer gc = base.CreateGroupHeader(element);
gc.IndexList = childList;
GChild(childList,element);
CreateGroupeChildren(childList,element);
} else {
GChild(childList,element);
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;
}
// private GroupComparer CreateGroupHeader (BaseComparer sc)
// {
// GroupComparer gc = new GroupComparer(sc.ColumnCollection,sc.ListIndex,sc.ObjectArray);
// base.IndexList.Add(gc);
// return gc;
// }
private void GChild(IndexList list,BaseComparer sc)
/*
private void CreateGroupeChildren(IndexList list,BaseComparer sc)
{
string v = sc.ObjectArray[0].ToString();
list.Add(sc);
}
*/
private IndexList IndexBuilder(SortColumnCollection col)
{

67
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupListFixture.cs

@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 09.09.2010
* Time: 19:50
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using ICSharpCode.Reports.Core.Test.TestHelpers;
using NUnit.Framework;
namespace ICSharpCode.Reports.Core.Test.DataManager
{
[TestFixture]
public class GroupListFixture
{
ContributorCollection contributorCollection;
[Test]
public void GroupingCollection_Empty_IsGrouped_False()
{
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.contributorCollection,new ReportSettings());
DataNavigator dataNav = dm.GetNavigator;
Assert.That(dataNav.IsGrouped == false);
}
[Test]
public void GroupingCollection_Contains_IsGrouped_True()
{
var dataNav = PrepareStringGrouping();
Assert.That(dataNav.IsGrouped,Is.True);
}
private IDataNavigator PrepareStringGrouping ()
{
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
ReportSettings rs = new ReportSettings();
rs.GroupColumnsCollection.Add(gc);
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.contributorCollection,rs);
return dm.GetNavigator;
}
[TestFixtureSetUp]
public void Init()
{
ContributorsList contributorsList = new ContributorsList();
this.contributorCollection = contributorsList.ContributorCollection;
}
[TestFixtureTearDown]
public void Dispose()
{
// TODO: Add tear down code.
}
}
}

39
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupTableFixture.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager @@ -35,7 +35,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager
#region Group by String
[Test]
public void GroupingCollection_Contains_IsGrouped_False()
public void GroupingCollection_Contains_IsGrouped_True()
{
var dataNav = PrepareStringGrouping();
Assert.That(dataNav.IsGrouped == true);
@ -70,13 +70,15 @@ namespace ICSharpCode.Reports.Core.Test.DataManager @@ -70,13 +70,15 @@ namespace ICSharpCode.Reports.Core.Test.DataManager
public void DateTimeCan_FillChild()
{
var dataNav = PrepareDateTimeGrouping();
Console.WriteLine("start datetime");
while (dataNav.MoveNext()) {
if (dataNav.HasChildren) {
Assert.That(dataNav.HasChildren,Is.True);
DataRow r = dataNav.Current as DataRow;
string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString();
string v2 = r["last"].ToString() + " GroupVal :" + r[5].ToString();
Console.WriteLine(v2);
FillChildList(dataNav);
DateTimeChildList(dataNav);
}
}
@ -101,6 +103,8 @@ namespace ICSharpCode.Reports.Core.Test.DataManager @@ -101,6 +103,8 @@ namespace ICSharpCode.Reports.Core.Test.DataManager
}
#endregion
#region Read-Fill Child List
[Test]
@ -120,20 +124,43 @@ namespace ICSharpCode.Reports.Core.Test.DataManager @@ -120,20 +124,43 @@ namespace ICSharpCode.Reports.Core.Test.DataManager
}
void FillChildList (IDataNavigator nav)
private void DateTimeChildList (IDataNavigator nav)
{
BaseDataItem first= new BaseDataItem("First");
BaseDataItem last = new BaseDataItem("Last");
BaseDataItem datetime = new BaseDataItem("RandomDate");
ReportItemCollection ric = new ReportItemCollection();
ric.Add(first);
ric.Add(last);
ric.Add(datetime);
nav.SwitchGroup();
do {
nav.FillChild(ric);
foreach (BaseDataItem element in ric) {
Console.WriteLine("\t{0} - {1}",element.ColumnName,element.DBValue);
Console.WriteLine("\t{0} - {1} ",element.ColumnName,element.DBValue);
}
}
while ( nav.ChildMoveNext());
}
private void FillChildList (IDataNavigator nav)
{
BaseDataItem first= new BaseDataItem("First");
BaseDataItem last = new BaseDataItem("Last");
ReportItemCollection ric = new ReportItemCollection();
ric.Add(first);
ric.Add(last);
nav.SwitchGroup();
do {
nav.FillChild(ric);
foreach (BaseDataItem element in ric) {
Console.WriteLine("\t{0} - {1} ",element.ColumnName,element.DBValue);
}
}
while ( nav.ChildMoveNext());
@ -225,6 +252,8 @@ namespace ICSharpCode.Reports.Core.Test.DataManager @@ -225,6 +252,8 @@ namespace ICSharpCode.Reports.Core.Test.DataManager
private IDataNavigator PrepareDateTimeGrouping ()
{
Console.WriteLine("PrepareDateTimeGrouping ()");
GroupColumn gc = new GroupColumn("RandomDate",1,ListSortDirection.Ascending);
ReportSettings rs = new ReportSettings();
rs.GroupColumnsCollection.Add(gc);

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj

@ -70,6 +70,7 @@ @@ -70,6 +70,7 @@
<Compile Include="Collections\ColumnCollectionFixture.cs" />
<Compile Include="Collections\ParametersCollectionFixture.cs" />
<Compile Include="Collections\ReportItemCollectionFixture.cs" />
<Compile Include="DataManager\GroupListFixture.cs" />
<Compile Include="DataManager\GroupTableFixture.cs" />
<Compile Include="DataManager\IConnectionDataManagerFixture.cs" />
<Compile Include="DataManager\IListDataManagerFixture.cs" />

Loading…
Cancel
Save