Browse Source

UnitTest's for recursive call of DataNavigator

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6288 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 15 years ago
parent
commit
17801d1cf6
  1. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  2. 145
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ChildNavigator.cs
  3. 14
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs
  4. 11
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  5. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataNavigator.cs
  6. 70
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupTableFixture.cs

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

@ -94,6 +94,7 @@ @@ -94,6 +94,7 @@
<Compile Include="Project\BaseItems\ErrorItem.cs" />
<Compile Include="Project\BaseItems\Graphics\BaseLineItem.cs" />
<Compile Include="Project\BaseItems\IExpression.cs" />
<Compile Include="Project\DataManager\ChildNavigator.cs" />
<Compile Include="Project\DataManager\Comparer\BaseComparer.cs" />
<Compile Include="Project\DataManager\Comparer\GroupSeparator.cs" />
<Compile Include="Project\DataManager\Comparer\SortComparer.cs" />

145
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ChildNavigator.cs

@ -0,0 +1,145 @@ @@ -0,0 +1,145 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 27.07.2010
* Time: 16:02
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reports.Core
{
/// <summary>
/// Description of ChildNavigator.
/// </summary>
public class ChildNavigator:IDataNavigator
{
IndexList indexList;
IDataViewStrategy dataStore;
private System.Collections.Generic.List<BaseComparer>.Enumerator ce;
public ChildNavigator(IDataViewStrategy dataStore,IndexList indexList)
{
if (dataStore == null) {
throw new ArgumentNullException("dataStore");
}
this.dataStore = dataStore;
this.indexList = indexList;
ce = this.indexList.GetEnumerator();
ce.MoveNext();
}
public bool HasMoreData {
get {
throw new NotImplementedException();
}
}
public bool HasChildren {
get {
IndexList ind = BuildChildList();
return ((ind != null) && (ind.Count > 0));
// return false;
}
}
public int ChildListCount {
get {
throw new NotImplementedException();
}
}
public bool IsSorted {
get {
throw new NotImplementedException();
}
}
public bool IsGrouped {
get {
throw new NotImplementedException();
}
}
public int CurrentRow {
get {
throw new NotImplementedException();
}
}
public int Count {
get {
return this.indexList.Count;
}
}
public object Current {
get {
TableStrategy t = this.dataStore as TableStrategy;
return t.myCurrent(ce.Current.ListIndex);
// return ci;
}
}
public AvailableFieldsCollection AvailableFields {
get {
throw new NotImplementedException();
}
}
public void Fill(ReportItemCollection collection)
{
throw new NotImplementedException();
}
public bool MoveNext()
{
return this.ce.MoveNext();
}
public void Reset()
{
throw new NotImplementedException();
}
public CurrentItemsCollection GetDataRow()
{
throw new NotImplementedException();
}
public IDataNavigator GetChildNavigator()
{
var i = BuildChildList();
if ((i == null) || (i.Count == 0)) {
return null;
}
return new ChildNavigator(this.dataStore,i);
}
public void SwitchGroup()
{
throw new NotImplementedException();
}
public bool ChildMoveNext()
{
throw new NotImplementedException();
}
public void FillChild(ReportItemCollection collection)
{
throw new NotImplementedException();
}
private IndexList BuildChildList()
{
GroupComparer gc = this.indexList[this.indexList.CurrentPosition] as GroupComparer;
if (gc == null) {
return null;
}
return gc.IndexList;
}
}
}

14
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs

@ -174,7 +174,7 @@ namespace ICSharpCode.Reports.Core @@ -174,7 +174,7 @@ namespace ICSharpCode.Reports.Core
private IndexList BuildChildList()
{
TableStrategy t = store as TableStrategy;
var t = store as TableStrategy;
IndexList i = t.IndexList;
GroupComparer gc = i[t.CurrentPosition] as GroupComparer;
if (gc == null) {
@ -185,5 +185,17 @@ namespace ICSharpCode.Reports.Core @@ -185,5 +185,17 @@ namespace ICSharpCode.Reports.Core
#endregion
#region Try make recursive with ChildNavigavtor
public IDataNavigator GetChildNavigator()
{
var i = BuildChildList();
if ((i == null) || (i.Count == 0)) {
return null;
}
return new ChildNavigator(this.store,i);
}
#endregion
}
}

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

@ -165,7 +165,7 @@ namespace ICSharpCode.Reports.Core @@ -165,7 +165,7 @@ namespace ICSharpCode.Reports.Core
string v = element.ObjectArray[0].ToString();
if (compVal != v) {
childList = new IndexList();
GroupComparer gc = GHeader(element);
GroupComparer gc = BuildGroupHeader(element);
gc.IndexList = childList;
GChild(childList,element);
@ -177,7 +177,7 @@ namespace ICSharpCode.Reports.Core @@ -177,7 +177,7 @@ namespace ICSharpCode.Reports.Core
ShowIndexList(base.IndexList);
}
private GroupComparer GHeader (BaseComparer sc)
private GroupComparer BuildGroupHeader (BaseComparer sc)
{
GroupComparer gc = new GroupComparer(sc.ColumnCollection,sc.ListIndex,sc.ObjectArray);
base.IndexList.Add(gc);
@ -235,6 +235,13 @@ namespace ICSharpCode.Reports.Core @@ -235,6 +235,13 @@ namespace ICSharpCode.Reports.Core
return ci;
}
public object myCurrent (int pos)
{
return this.table.Rows[pos];
}
public CurrentItemsCollection FillDataRow(int pos)
{
CurrentItemsCollection ci = new CurrentItemsCollection();

4
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataNavigator.cs

@ -22,7 +22,9 @@ using System.ComponentModel; @@ -22,7 +22,9 @@ using System.ComponentModel;
get;
}
#region Try make recursive
#region Try make recursive with ChildNavigator
IDataNavigator GetChildNavigator();
#endregion

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

@ -97,6 +97,76 @@ namespace ICSharpCode.Reports.Core.Test.DataManager @@ -97,6 +97,76 @@ namespace ICSharpCode.Reports.Core.Test.DataManager
while ( nav.ChildMoveNext());
}
#endregion
#region Try make recursive with ChildNavigator
[Test]
public void Can_Get_ChildNavigator ()
{
var dataNav = PrepareStandardGrouping();
while (dataNav.MoveNext()) {
if (dataNav.HasChildren) {
IDataNavigator child = dataNav.GetChildNavigator();
Assert.That (child,Is.Not.Null);
}
}
}
[Test]
public void RecursiveCall_Childs ()
{
var dataNav = PrepareStandardGrouping();
dataNav.MoveNext();
Console.WriteLine("--------------start rec ------------");
reccall (dataNav);
Console.WriteLine("--------------end rec ------------");
}
private void reccall (IDataNavigator startNavigator)
{
do
{
DataRow r = startNavigator.Current as DataRow;
string v1 = r["last"].ToString() + " :" + r[3].ToString();
Console.WriteLine("\t {0}",v1);
if (startNavigator.HasChildren) {
IDataNavigator child = startNavigator.GetChildNavigator();
Console.WriteLine("header {0} - Child_Count:{1}",v1,child.Count);
reccall (child);
}
} while (startNavigator.MoveNext());
}
private void reccall_1 (IDataNavigator startNavigator)
{
Console.WriteLine("start rec ");
do
{
DataRow r = startNavigator.Current as DataRow;
string v1 = r["last"].ToString() + " :" + r[3].ToString();
Console.WriteLine(v1);
if (startNavigator.HasChildren) {
IDataNavigator child = startNavigator.GetChildNavigator();
if (child.HasChildren) {
do {
Console.WriteLine ("children");
//reccall (child);
}
while (child.MoveNext()) ;
}
}
} while (startNavigator.MoveNext());
}
#endregion
private IDataNavigator PrepareStandardGrouping ()

Loading…
Cancel
Save