1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using System.ComponentModel;
8
using ICSharpCode.Reports.Core.Test.TestHelpers;
11
namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
15
public class GroupTableFixture
21
public void AddGroupColumn ()
23
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
24
ReportSettings rs = new ReportSettings();
26
rs.GroupColumnsCollection.Add(gc);
27
Assert.AreEqual(1,rs.GroupColumnsCollection.Count);
32
public void AvaiableFieldsShouldSet()
34
var dataNavigator = PrepareStringGrouping();
35
dataNavigator.MoveNext();
36
IDataNavigator child = dataNavigator.GetChildNavigator;
37
AvailableFieldsCollection availableFieldsCollection = child.AvailableFields;
38
Assert.That(availableFieldsCollection,Is.Not.Null);
39
Assert.That(availableFieldsCollection.Count,Is.GreaterThan(0));
43
#region Group by String
46
public void HasChildren()
48
var dataNavigator = PrepareStringGrouping();
49
while (dataNavigator.MoveNext()) {
50
Assert.That(dataNavigator.HasChildren,Is.True);
55
public void ReadChildCount ()
57
var dataNavigator = PrepareStringGrouping();
58
while (dataNavigator.MoveNext())
60
if (dataNavigator.HasChildren)
62
var childNavigator = dataNavigator.GetChildNavigator;
63
Assert.That(childNavigator.Count,Is.GreaterThan(0));
70
public void CeckGrouping()
72
var dataNavigator = PrepareStringGrouping();
73
string compare = string.Empty;
75
while (dataNavigator.MoveNext())
77
DataRow dr = dataNavigator.Current as DataRow;
78
var result = dr[3].ToString();
79
Assert.That (compare,Is.LessThan(result));
86
public void FillChild()
88
var dataNavigator = PrepareStringGrouping();
89
string compare = string.Empty;
91
while (dataNavigator.MoveNext())
93
DataRow dr = dataNavigator.Current as DataRow;
94
Assert.That (compare,Is.LessThan(dr[3].ToString()));
95
if (dataNavigator.HasChildren)
97
var childNavigator = dataNavigator.GetChildNavigator;
100
Assert.That(dataNavigator.HasChildren,Is.True);
101
DataRow r = childNavigator.Current as DataRow;
102
Assert.That( r[3].ToString(),Is.Not.Empty);
103
// string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString();
104
// Console.WriteLine(v2);
106
while (childNavigator.MoveNext());
108
compare = dr[3].ToString();
114
public void SortChildrenDescending()
116
ReportSettings rs = new ReportSettings();
117
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
118
rs.GroupColumnsCollection.Add(gc);
120
SortColumn sc = new SortColumn("Last",ListSortDirection.Descending);
121
rs.SortColumnsCollection.Add(sc);
122
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs);
123
var dataNavigator = dm.GetNavigator;
125
string compare = String.Empty;
127
while (dataNavigator.MoveNext())
129
DataRow dr = dataNavigator.Current as DataRow;
130
var result = dr[3].ToString();
131
Assert.That(compare,Is.LessThan(result));
132
if (dataNavigator.HasChildren)
134
string compareChild = String.Empty;
135
var childNavigator = dataNavigator.GetChildNavigator;
138
DataRow childRow = childNavigator.Current as DataRow;
139
var childResult = childRow[1].ToString();
140
if (!String.IsNullOrEmpty(compareChild)) {
141
Assert.LessOrEqual(childResult,compareChild);
143
// Console.WriteLine("\t{0}",childResult);
144
compareChild = childResult;
146
while (childNavigator.MoveNext());
155
#region GroupbyDataTime
158
public void DateTimeCanFillChild()
160
var dataNavigator = PrepareDateTimeGrouping();
161
var compare = System.DateTime.MinValue;
163
while (dataNavigator.MoveNext())
166
DataRow dr = dataNavigator.Current as DataRow;
167
var result = Convert.ToDateTime(dr[5]);
168
Assert.That (compare,Is.LessThan(result));
170
if (dataNavigator.HasChildren)
172
var childNavigator = dataNavigator.GetChildNavigator;
175
Assert.That(dataNavigator.HasChildren,Is.True);
176
DataRow r = childNavigator.Current as DataRow;
177
Assert.That( r[3].ToString(),Is.Not.Empty);
178
// string v2 = r["last"].ToString() + " GroupVal :" + r[5].ToString();
179
// Console.WriteLine(v2);
181
while (childNavigator.MoveNext());
183
compare = Convert.ToDateTime(dr[5]);
189
public void DataTimeHasChildren()
191
var dataNav = PrepareDateTimeGrouping();
192
while (dataNav.MoveNext()) {
193
Assert.That(dataNav.HasChildren,Is.True);
199
#region Try make recursive with ChildNavigator
202
public void GetChildNavigator ()
204
// Console.WriteLine("Start Recusive Version");
205
var dataNavigator = PrepareStringGrouping();
207
while (dataNavigator.MoveNext()) {
208
if (dataNavigator.HasChildren) {
209
DataRow r = dataNavigator.Current as DataRow;
211
string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString() ;
212
IDataNavigator child = dataNavigator.GetChildNavigator;
214
// Console.WriteLine(v2);
215
Assert.That (child,Is.Not.Null);
216
RecursiveCall(child);
222
private void RecursiveCall (IDataNavigator startNavigator)
226
DataRow r = startNavigator.Current as DataRow;
227
string v1 = r["last"].ToString() + " :" + r[3].ToString();
228
Console.WriteLine("\t {0}",v1);
229
if (startNavigator.HasChildren) {
230
IDataNavigator child = startNavigator.GetChildNavigator;
231
Console.WriteLine("header {0} - Child_Count:{1}",v1,child.Count);
232
RecursiveCall (child);
235
} while (startNavigator.MoveNext());
242
private IDataNavigator PrepareStringGrouping ()
244
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
245
ReportSettings rs = new ReportSettings();
246
rs.GroupColumnsCollection.Add(gc);
247
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs);
248
return dm.GetNavigator;
252
private IDataNavigator PrepareDateTimeGrouping ()
254
ReportSettings rs = new ReportSettings();
255
GroupColumn gc = new GroupColumn("RandomDate",1,ListSortDirection.Ascending);
256
rs.GroupColumnsCollection.Add(gc);
257
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs);
258
return dm.GetNavigator;
265
ContributorsList contributorsList = new ContributorsList();
266
this.table = contributorsList.ContributorTable;
270
[TestFixtureTearDown]
271
public void Dispose()
273
// TODO: Add tear down code.