Browse Source

Sorting inside Groups

4.1
peterforstmeier 15 years ago
parent
commit
380f5ab752
  1. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs
  2. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs
  3. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs
  4. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  5. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs
  6. 139
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/ListStrategy/GroupListFixture.cs
  7. 113
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/TableStragy/GroupTableFixture.cs
  8. 23
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/GlobalFunctions.cs

22
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs

@ -99,7 +99,6 @@ namespace ICSharpCode.Reports.Addin
#endregion #endregion
#region setup designer #region setup designer
private void LoadDesigner(Stream stream) private void LoadDesigner(Stream stream)
@ -243,7 +242,6 @@ namespace ICSharpCode.Reports.Addin
} }
#endregion #endregion
private void MergeFormChanges() private void MergeFormChanges()
{ {
System.Diagnostics.Trace.WriteLine("View:MergeFormChanges()"); System.Diagnostics.Trace.WriteLine("View:MergeFormChanges()");
@ -254,8 +252,6 @@ namespace ICSharpCode.Reports.Addin
} }
public string ReportFileContent { public string ReportFileContent {
get { get {
if (this.IsDirty) { if (this.IsDirty) {
@ -265,7 +261,6 @@ namespace ICSharpCode.Reports.Addin
set { this.reportFileContent = value; } set { this.reportFileContent = value; }
} }
#region ReportExplorer #region ReportExplorer
private void StartReportExplorer () private void StartReportExplorer ()
@ -297,7 +292,6 @@ namespace ICSharpCode.Reports.Addin
#endregion #endregion
#region SelectionService #region SelectionService
private void SelectionChangedHandler(object sender, EventArgs args) private void SelectionChangedHandler(object sender, EventArgs args)
@ -314,7 +308,6 @@ namespace ICSharpCode.Reports.Addin
#endregion #endregion
#region Transaction #region Transaction
bool shouldUpdateSelectableObjects; bool shouldUpdateSelectableObjects;
@ -332,11 +325,8 @@ namespace ICSharpCode.Reports.Addin
#endregion #endregion
#region ComponentChangeService #region ComponentChangeService
private void OnComponentChanged (object sender, ComponentChangedEventArgs e) private void OnComponentChanged (object sender, ComponentChangedEventArgs e)
{ {
BaseImageItem item = e.Component as BaseImageItem; BaseImageItem item = e.Component as BaseImageItem;
@ -370,11 +360,8 @@ namespace ICSharpCode.Reports.Addin
this.PrimaryFile.MakeDirty(); this.PrimaryFile.MakeDirty();
} }
#endregion #endregion
#region HasPropertyContainer implementation #region HasPropertyContainer implementation
private void UpdatePropertyPad() private void UpdatePropertyPad()
@ -413,11 +400,8 @@ namespace ICSharpCode.Reports.Addin
#endregion #endregion
#region IUnDohandler #region IUnDohandler
#endregion
public bool EnableUndo { public bool EnableUndo {
get { get {
if (undoEngine != null) { if (undoEngine != null) {
@ -453,6 +437,8 @@ namespace ICSharpCode.Reports.Addin
} }
} }
#endregion
#region IClipboardHandler implementation #region IClipboardHandler implementation
private bool IsMenuCommandEnabled(CommandID commandID) private bool IsMenuCommandEnabled(CommandID commandID)
@ -551,7 +537,6 @@ namespace ICSharpCode.Reports.Addin
#endregion #endregion
#region IPrintable #region IPrintable
@ -597,7 +582,6 @@ namespace ICSharpCode.Reports.Addin
#endregion #endregion
#region IDesignerHost implementation #region IDesignerHost implementation
public IDesignerHost Host { public IDesignerHost Host {

13
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs

@ -379,18 +379,19 @@ namespace ICSharpCode.Reports.Addin
nodeAvailableFields.ContextMenuAddinTreePath = String.Empty; nodeAvailableFields.ContextMenuAddinTreePath = String.Empty;
this.nodeModel.Nodes.Add(this.nodeAvailableFields); this.nodeModel.Nodes.Add(this.nodeAvailableFields);
nodeGrouping = new SectionNode (ResourceService.GetString("SharpReport.FieldsExplorer.Grouping"));
nodeGrouping.ImageIndex = folderClosed;
nodeGrouping.SelectedImageIndex = folderOpen;
nodeGrouping.ContextMenuAddinTreePath = ExplorerTree.sectionContextMenu;
this.nodeModel.Nodes.Add(this.nodeGrouping);
nodeSorting = new SectionNode (ResourceService.GetString("SharpReport.FieldsExplorer.Sorting")); nodeSorting = new SectionNode (ResourceService.GetString("SharpReport.FieldsExplorer.Sorting"));
nodeSorting.ImageIndex = folderClosed; nodeSorting.ImageIndex = folderClosed;
nodeSorting.SelectedImageIndex = folderOpen; nodeSorting.SelectedImageIndex = folderOpen;
nodeSorting.ContextMenuAddinTreePath = ExplorerTree.sectionContextMenu; nodeSorting.ContextMenuAddinTreePath = ExplorerTree.sectionContextMenu;
this.nodeModel.Nodes.Add(this.nodeSorting); this.nodeModel.Nodes.Add(this.nodeSorting);
nodeGrouping = new SectionNode (ResourceService.GetString("SharpReport.FieldsExplorer.Grouping"));
nodeGrouping.ImageIndex = folderClosed;
nodeGrouping.SelectedImageIndex = folderOpen;
nodeGrouping.ContextMenuAddinTreePath = ExplorerTree.sectionContextMenu;
this.nodeModel.Nodes.Add(this.nodeGrouping);
nodeFunction = new TreeNode(ResourceService.GetString("SharpReport.FieldsExplorer.Functions")); nodeFunction = new TreeNode(ResourceService.GetString("SharpReport.FieldsExplorer.Functions"));
nodeFunction.ImageIndex = folderClosed; nodeFunction.ImageIndex = folderClosed;

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

@ -96,7 +96,8 @@ namespace ICSharpCode.Reports.Core {
} }
CreateGroupedChildren(childList,element); CreateGroupedChildren(childList,element);
compVal = groupValue; compVal = groupValue;
} ShowIndexList(IndexList); }
// ShowIndexList(IndexList);
} }
@ -234,6 +235,9 @@ namespace ICSharpCode.Reports.Core {
public virtual void Group() public virtual void Group()
{ {
this.IndexList.Clear(); this.IndexList.Clear();
if (ReportSettings.SortColumnsCollection.Count > 0) {
ReportSettings.GroupColumnsCollection.AddRange(ReportSettings.SortColumnsCollection);
}
} }
public virtual void Bind() public virtual void Bind()

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

@ -154,13 +154,13 @@ namespace ICSharpCode.Reports.Core
base.IndexList = this.BuildSortIndex (ReportSettings.SortColumnsCollection); base.IndexList = this.BuildSortIndex (ReportSettings.SortColumnsCollection);
} else { } else {
// if we have no sorting, we build the indexlist as well // if we have no sorting, we build the indexlist as well
base.IndexList = this.IndexBuilder(ReportSettings.SortColumnsCollection); base.IndexList = this.UnsortedIndex(ReportSettings.SortColumnsCollection);
} }
} }
} }
private IndexList IndexBuilder(SortColumnCollection col) private IndexList UnsortedIndex(SortColumnCollection col)
{ {
IndexList arrayList = new IndexList(); IndexList arrayList = new IndexList();
for (int rowIndex = 0; rowIndex < this.table.Rows.Count; rowIndex++){ for (int rowIndex = 0; rowIndex < this.table.Rows.Count; rowIndex++){
@ -174,6 +174,9 @@ namespace ICSharpCode.Reports.Core
public override void Group () public override void Group ()
{ {
base.Group(); base.Group();
// if (ReportSettings.SortColumnsCollection.Count > 0) {
// ReportSettings.GroupColumnsCollection.AddRange(ReportSettings.SortColumnsCollection);
// }
IndexList groupedIndexList = new IndexList("group"); IndexList groupedIndexList = new IndexList("group");
groupedIndexList = this.BuildSortIndex (ReportSettings.GroupColumnsCollection); groupedIndexList = this.BuildSortIndex (ReportSettings.GroupColumnsCollection);
// ShowIndexList(sortedIndexList); // ShowIndexList(sortedIndexList);

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs

@ -94,7 +94,7 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
static void WriteLogMessage(Exception e) static void WriteLogMessage(Exception e)
{ {
Console.WriteLine(""); Console.WriteLine("-----LogMessage---------");
Console.WriteLine("ExpressionEvaluatorFacade.Evaluate"); Console.WriteLine("ExpressionEvaluatorFacade.Evaluate");
Console.WriteLine(e.Message); Console.WriteLine(e.Message);
Console.WriteLine(e.TargetSite); Console.WriteLine(e.TargetSite);

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

@ -19,7 +19,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
#region standard test's #region standard test's
[Test] [Test]
public void AvaiableFields_Should_Be_Set() public void AvaiableFieldsShouldSet()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
dataNavigator.MoveNext(); dataNavigator.MoveNext();
@ -34,7 +34,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
#region Group by StringValue #region Group by StringValue
[Test] [Test]
public void Has_Children() public void HasChildren()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
while (dataNavigator.MoveNext()) { while (dataNavigator.MoveNext()) {
@ -44,7 +44,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
[Test] [Test]
public void Can_Read_Child_Count () public void ReadChildCount ()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
while (dataNavigator.MoveNext()) while (dataNavigator.MoveNext())
@ -59,7 +59,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
[Test] [Test]
public void Can_FillChild() public void FillCollection()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
ReportItemCollection searchCol = new ReportItemCollection(); ReportItemCollection searchCol = new ReportItemCollection();
@ -85,15 +85,13 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
{ {
dataNavigator.Fill(searchCol); dataNavigator.Fill(searchCol);
var b = (BaseDataItem)searchCol[1]; var b = (BaseDataItem)searchCol[1];
Console.WriteLine("-- <{0}>-",b.DBValue); // Console.WriteLine("-- <{0}>-",b.DBValue);
var childNavigator = dataNavigator.GetChildNavigator; var childNavigator = dataNavigator.GetChildNavigator;
do do
{ {
Assert.That(dataNavigator.HasChildren,Is.True);
childNavigator.Fill(searchCol); childNavigator.Fill(searchCol);
var a = (BaseDataItem)searchCol[0]; var filledItem = (BaseDataItem)searchCol[0];
Console.WriteLine ("\t{0}",a.DBValue); Assert.That(filledItem.DBValue,Is.Not.Empty);
} }
while (childNavigator.MoveNext()); while (childNavigator.MoveNext());
} }
@ -103,12 +101,13 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
[Test] [Test]
public void Collection_Contains_Subclass () public void CollectionContainsSubclass ()
{ {
var modifyedCollection = this.ModifyCollection(); var modifyedCollection = this.ModifyCollection();
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
ReportSettings rs = new ReportSettings(); ReportSettings rs = new ReportSettings();
rs.GroupColumnsCollection.Add(gc); rs.GroupColumnsCollection.Add(gc);
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(modifyedCollection,rs); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(modifyedCollection,rs);
IDataNavigator dataNavigator = dm.GetNavigator; IDataNavigator dataNavigator = dm.GetNavigator;
@ -132,107 +131,91 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
} }
); );
dataNavigator.Reset(); string compare = string.Empty;
dataNavigator.MoveNext();
do while (dataNavigator.MoveNext())
{ {
dataNavigator.Fill(searchCol); dataNavigator.Fill(searchCol);
var a1 = (BaseDataItem)searchCol[0]; var b1 = (BaseDataItem)searchCol[2];
var b1 = (BaseDataItem)searchCol[2]; var result = b1.DBValue;
Console.WriteLine ("-----{0} - {1}------",a1.DBValue,b1.DBValue); Assert.That (compare,Is.LessThan(result));
if (dataNavigator.HasChildren) if (dataNavigator.HasChildren)
{ {
var childNavigator = dataNavigator.GetChildNavigator; var childNavigator = dataNavigator.GetChildNavigator;
do do
{ {
childNavigator.Fill(searchCol); childNavigator.Fill(searchCol);
var a = (BaseDataItem)searchCol[0]; var itemDummy = (BaseDataItem)searchCol[0];
var b = (BaseDataItem)searchCol[1]; var itemLast = (BaseDataItem)searchCol[1];
var c = (BaseDataItem)searchCol[2]; var itemGroup = (BaseDataItem)searchCol[2];
Console.WriteLine ("\t{0} - {1} - {2}",a.DBValue,b.DBValue,c.DBValue); // Console.WriteLine ("\t{0} - {1} - {2}",itemDummy.DBValue,itemLast.DBValue,itemGroup.DBValue);
Assert.That(itemDummy.DBValue,Is.Not.Empty);
Assert.That(itemLast.DBValue,Is.Not.Empty);
Assert.That(itemGroup.DBValue,Is.Not.Empty);
} }
while (childNavigator.MoveNext()); while (childNavigator.MoveNext());
} }
compare = result;
} }
while (dataNavigator.MoveNext());
} }
#endregion #endregion
#region FieldReference
[Test] [Test]
public void Check_Field_Reference() public void SortChildrenDescending()
{ {
var modifyedCollection = this.ModifyCollection();
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
ReportSettings rs = new ReportSettings(); ReportSettings rs = new ReportSettings();
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
rs.GroupColumnsCollection.Add(gc); rs.GroupColumnsCollection.Add(gc);
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(modifyedCollection,rs);
IDataNavigator dataNavigator = dm.GetNavigator;
ReportItemCollection searchCol = new ReportItemCollection(); SortColumn sc = new SortColumn("Last",ListSortDirection.Descending);
rs.SortColumnsCollection.Add(sc);
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.contributorCollection,rs);
var dataNavigator = dm.GetNavigator;
ReportItemCollection searchCol = new ReportItemCollection();
searchCol.Add(new BaseDataItem () searchCol.Add(new BaseDataItem ()
{ {
ColumnName ="DummyClass.DummyString" Name ="Last",
} ColumnName ="Last"
);
searchCol.Add(new BaseDataItem ()
{
Name ="Last",
ColumnName ="Last"
} }
); );
searchCol.Add(new BaseDataItem () searchCol.Add(new BaseDataItem ()
{ {
ColumnName ="GroupItem" ColumnName ="GroupItem"
} }
); );
// searchCol.Add(new BaseTextItem()
// { string compare = String.Empty;
// Name ="FieldRef",
// Text ="=Fields!Last"
// }
// );
dataNavigator.Reset();
dataNavigator.MoveNext();
do while (dataNavigator.MoveNext())
{ {
dataNavigator.Fill(searchCol); dataNavigator.Fill(searchCol);
var a1 = (BaseDataItem)searchCol[0]; var column = (BaseDataItem)searchCol[1];
var b1 = (BaseDataItem)searchCol[2]; var result = column.DBValue.ToString();
Console.WriteLine ("-----{0} - {1}------",a1.DBValue,b1.DBValue);
Assert.That (compare,Is.LessThan(result));
if (dataNavigator.HasChildren) if (dataNavigator.HasChildren) {
{ string compareChild = String.Empty;
var childNavigator = dataNavigator.GetChildNavigator; var childNavigator = dataNavigator.GetChildNavigator;
do do
{ {
var dataRow = childNavigator.GetDataRow; childNavigator.Fill(searchCol);
var item = dataRow.Find("Last"); var childColumn = (BaseDataItem)searchCol[0];
// childNavigator.Fill(searchCol); var childResult = childColumn.DBValue.ToString();
// var a = (BaseDataItem)searchCol[0]; // Console.WriteLine("\t{0}",childResult);
// var b = (BaseDataItem)searchCol[1]; if (!String.IsNullOrEmpty(compareChild)) {
// var c = (BaseDataItem)searchCol[3]; Assert.LessOrEqual(childResult,compareChild);
// Console.WriteLine ("\t{0} - {1} - {2}",a.DBValue,b.DBValue,c.DBValue); }
Console.WriteLine(item.Value); compareChild = childResult;
} }
while (childNavigator.MoveNext()); while (childNavigator.MoveNext());
} }
} }
while (dataNavigator.MoveNext());
} }
#endregion
#region Group by DataTime #region Group by DataTime
@ -241,9 +224,20 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
public void DateTimeCan_FillChild() public void DateTimeCan_FillChild()
{ {
var dataNavigator = PrepareDateTimeGrouping(); var dataNavigator = PrepareDateTimeGrouping();
ReportItemCollection searchCol = new ReportItemCollection();
searchCol.Add(new BaseDataItem ()
{
Name ="RandomDate",
ColumnName ="Last"
}
);
Console.WriteLine("start datetime"); var compare = System.DateTime.MinValue;
while (dataNavigator.MoveNext()) {
while (dataNavigator.MoveNext())
{
Contributor groupResult = dataNavigator.Current as Contributor;
Assert.LessOrEqual(compare,groupResult.RandomDate);
if (dataNavigator.HasChildren) { if (dataNavigator.HasChildren) {
var childNavigator = dataNavigator.GetChildNavigator; var childNavigator = dataNavigator.GetChildNavigator;
do do
@ -251,8 +245,9 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
Assert.That(dataNavigator.HasChildren,Is.True); Assert.That(dataNavigator.HasChildren,Is.True);
// we know that current is a 'contributor' // we know that current is a 'contributor'
Contributor c = dataNavigator.Current as Contributor; Contributor c = dataNavigator.Current as Contributor;
string v2 = c.Last + " GroupVal :" + c.RandomDate; Assert.IsNotNull(c);
Console.WriteLine(v2); // string v2 = c.Last + " GroupVal :" + c.RandomDate;
// Console.WriteLine(v2);
} }
while (childNavigator.MoveNext()); while (childNavigator.MoveNext());
} }

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

@ -17,9 +17,8 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
DataTable table; DataTable table;
[Test] [Test]
public void Can_add_GroupColumn () public void AddGroupColumn ()
{ {
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending); GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
ReportSettings rs = new ReportSettings(); ReportSettings rs = new ReportSettings();
@ -30,7 +29,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
[Test] [Test]
public void AvaiableFields_Should_Be_Set() public void AvaiableFieldsShouldSet()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
dataNavigator.MoveNext(); dataNavigator.MoveNext();
@ -44,7 +43,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
#region Group by String #region Group by String
[Test] [Test]
public void Has_Children() public void HasChildren()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
while (dataNavigator.MoveNext()) { while (dataNavigator.MoveNext()) {
@ -53,7 +52,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
} }
[Test] [Test]
public void Can_Read_Child_Count () public void ReadChildCount ()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
while (dataNavigator.MoveNext()) while (dataNavigator.MoveNext())
@ -65,55 +64,129 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
} }
} }
} }
[Test]
public void CeckGrouping()
{
var dataNavigator = PrepareStringGrouping();
string compare = string.Empty;
while (dataNavigator.MoveNext())
{
DataRow dr = dataNavigator.Current as DataRow;
var result = dr[3].ToString();
Assert.That (compare,Is.LessThan(result));
compare = result;
}
}
[Test] [Test]
public void Can_FillChild() public void FillChild()
{ {
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
while (dataNavigator.MoveNext()) { string compare = string.Empty;
while (dataNavigator.MoveNext())
{
DataRow dr = dataNavigator.Current as DataRow;
Assert.That (compare,Is.LessThan(dr[3].ToString()));
if (dataNavigator.HasChildren) if (dataNavigator.HasChildren)
{ {
var childNavigator = dataNavigator.GetChildNavigator; var childNavigator = dataNavigator.GetChildNavigator;
do do
{ {
Assert.That(dataNavigator.HasChildren,Is.True); Assert.That(dataNavigator.HasChildren,Is.True);
DataRow r = dataNavigator.Current as DataRow; DataRow r = childNavigator.Current as DataRow;
string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString(); Assert.That( r[3].ToString(),Is.Not.Empty);
Console.WriteLine(v2); // string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString();
// Console.WriteLine(v2);
}
while (childNavigator.MoveNext());
}
compare = dr[3].ToString();
}
}
[Test]
public void SortChildrenDescending()
{
ReportSettings rs = new ReportSettings();
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
rs.GroupColumnsCollection.Add(gc);
SortColumn sc = new SortColumn("Last",ListSortDirection.Descending);
rs.SortColumnsCollection.Add(sc);
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs);
var dataNavigator = dm.GetNavigator;
string compare = String.Empty;
while (dataNavigator.MoveNext())
{
DataRow dr = dataNavigator.Current as DataRow;
var result = dr[3].ToString();
Assert.That(compare,Is.LessThan(result));
if (dataNavigator.HasChildren)
{
string compareChild = String.Empty;
var childNavigator = dataNavigator.GetChildNavigator;
do
{
DataRow childRow = childNavigator.Current as DataRow;
var childResult = childRow[1].ToString();
if (!String.IsNullOrEmpty(compareChild)) {
Assert.LessOrEqual(childResult,compareChild);
}
// Console.WriteLine("\t{0}",childResult);
compareChild = childResult;
} }
while (childNavigator.MoveNext()); while (childNavigator.MoveNext());
} }
compare = result;
} }
} }
#endregion #endregion
#region GroupbyDataTime #region GroupbyDataTime
[Test] [Test]
public void DateTimeCan_FillChild() public void DateTimeCanFillChild()
{ {
var dataNavigator = PrepareDateTimeGrouping(); var dataNavigator = PrepareDateTimeGrouping();
while (dataNavigator.MoveNext()) { var compare = System.DateTime.MinValue;
while (dataNavigator.MoveNext())
{
DataRow dr = dataNavigator.Current as DataRow;
var result = Convert.ToDateTime(dr[5]);
Assert.That (compare,Is.LessThan(result));
if (dataNavigator.HasChildren) if (dataNavigator.HasChildren)
{ {
var childNavigator = dataNavigator.GetChildNavigator; var childNavigator = dataNavigator.GetChildNavigator;
do do
{ {
Assert.That(dataNavigator.HasChildren,Is.True); Assert.That(dataNavigator.HasChildren,Is.True);
DataRow r = dataNavigator.Current as DataRow; DataRow r = childNavigator.Current as DataRow;
string v2 = r["last"].ToString() + " GroupVal :" + r[5].ToString(); Assert.That( r[3].ToString(),Is.Not.Empty);
Console.WriteLine(v2); // string v2 = r["last"].ToString() + " GroupVal :" + r[5].ToString();
// Console.WriteLine(v2);
} }
while (childNavigator.MoveNext()); while (childNavigator.MoveNext());
} }
compare = Convert.ToDateTime(dr[5]);
} }
} }
[Test] [Test]
public void DataTime_Has_Children() public void DataTimeHasChildren()
{ {
var dataNav = PrepareDateTimeGrouping(); var dataNav = PrepareDateTimeGrouping();
while (dataNav.MoveNext()) { while (dataNav.MoveNext()) {
@ -126,9 +199,9 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
#region Try make recursive with ChildNavigator #region Try make recursive with ChildNavigator
[Test] [Test]
public void Can_Get_ChildNavigator () public void GetChildNavigator ()
{ {
Console.WriteLine("Start Recusive Version"); // Console.WriteLine("Start Recusive Version");
var dataNavigator = PrepareStringGrouping(); var dataNavigator = PrepareStringGrouping();
while (dataNavigator.MoveNext()) { while (dataNavigator.MoveNext()) {
@ -138,7 +211,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString() ; string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString() ;
IDataNavigator child = dataNavigator.GetChildNavigator; IDataNavigator child = dataNavigator.GetChildNavigator;
Console.WriteLine(v2); // Console.WriteLine(v2);
Assert.That (child,Is.Not.Null); Assert.That (child,Is.Not.Null);
RecursiveCall(child); RecursiveCall(child);
} }
@ -178,8 +251,8 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
private IDataNavigator PrepareDateTimeGrouping () private IDataNavigator PrepareDateTimeGrouping ()
{ {
GroupColumn gc = new GroupColumn("RandomDate",1,ListSortDirection.Ascending);
ReportSettings rs = new ReportSettings(); ReportSettings rs = new ReportSettings();
GroupColumn gc = new GroupColumn("RandomDate",1,ListSortDirection.Ascending);
rs.GroupColumnsCollection.Add(gc); rs.GroupColumnsCollection.Add(gc);
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs); IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs);
return dm.GetNavigator; return dm.GetNavigator;

23
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/GlobalFunctions.cs

@ -58,28 +58,6 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
[Test] [Test]
#region Template for Resolution
/*
// const string expression = "PageNumber()";
// var compiler = new ReportingLanguageCompiler();
// IExpression compiled = compiler.CompileExpression<string>(expression);
// var context = new ExpressionContext(null);
// context.ResolveUnknownVariable += VariableStore;
// context.ResolveUnknownVariable += (sender, args) =>
// {
// Assert.That(args.VariableName, Is.EqualTo("pagenumber"));
// //args.VariableValue = 123.456;
// };
//Assert.That(compiled.Evaluate(context), Is.EqualTo("15"));
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("15"));
//this.evaluator.Evaluate(expression)
*/
#endregion
public void Can_Compile_PageNumber_AsFunction() public void Can_Compile_PageNumber_AsFunction()
{ {
const string expression = "=PageNumber()"; const string expression = "=PageNumber()";
@ -98,7 +76,6 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
[Test] [Test]
public void UnknownFunction_ErrorMessage() public void UnknownFunction_ErrorMessage()
{ {
const string expression = "=TotalWrongFunction()"; const string expression = "=TotalWrongFunction()";
string s = this.evaluator.Evaluate(expression); string s = this.evaluator.Evaluate(expression);
Assert.That(s.Contains("TotalWrongFunction")); Assert.That(s.Contains("TotalWrongFunction"));

Loading…
Cancel
Save