Browse Source

Modify some unitTest#s, start working on FieldConcat like ="Fields!Field1 + Fields!Field2"

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@5900 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 16 years ago
parent
commit
3aa74f27d0
  1. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  2. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/AbstractExportListBuilder.cs
  3. 36
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataExportListBuilder.cs
  4. 33
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs
  5. 32
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ReportingLanguage/ReportingLanguageCompiler.cs
  6. 34
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs
  7. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportSettings.cs
  8. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/AbstractExportListBuilder.cs
  9. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/Converter/ItemsConverterFixture.cs
  10. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataListBuilderFixture.cs
  11. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj
  12. 34
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/ExpressionEvaluatorFixture.cs
  13. 88
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/ConcatFieldsFixture.cs
  14. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/FieldReferenceFixture.cs
  15. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/TestHelper.cs

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

@ -134,6 +134,7 @@ @@ -134,6 +134,7 @@
<Compile Include="Project\Exporter\DataReportCreator.cs" />
<Compile Include="Project\Exporter\PageCreatedEventArgs.cs" />
<Compile Include="Project\Exporter\PageDescription.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\ReportingService\FieldReference.cs" />
<Compile Include="Project\old_Exporter\BasePager.cs" />
<Compile Include="Project\old_Exporter\Converters\BaseConverter.cs" />
<Compile Include="Project\old_Exporter\Converters\ConverterFactory.cs" />

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/AbstractExportListBuilder.cs

@ -46,10 +46,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -46,10 +46,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected virtual Point BuildReportHeader (Point reportHeaderStart)
{
System.Console.WriteLine("BuildReportHeader at {0} with {1} items ",reportHeaderStart,ReportModel.ReportHeader.Items.Count);
@ -108,6 +104,12 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -108,6 +104,12 @@ namespace ICSharpCode.Reports.Core.Exporter
}
protected virtual void FinishRendering ()
{
}
protected virtual void CreateNewPage ()
{
this.SinglePage = this.InitNewPage();

36
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataExportListBuilder.cs

@ -43,16 +43,15 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -43,16 +43,15 @@ namespace ICSharpCode.Reports.Core.Exporter
base.PositionAfterRenderSection = this.BuildReportHeader(SinglePage.SectionBounds.ReportHeaderRectangle.Location);
// this.BuildPageHeader();
this.BuildPageHeader();
// BaseSection section = base.ReportModel.DetailSection;
//
// section.SectionOffset = base.SinglePage.SectionBounds.DetailStart.Y;
// this.BuildDetail (section,dataNavigator);
this.BuildDetailInternal (base.ReportModel.DetailSection);
//
// this.BuildReportFooter(SectionBounds.ReportFooterRectangle);
// this.BuildPageFooter();
// //this is the last Page
this.BuildReportFooter();
this.BuildPageFooter();
base.AddPage(base.SinglePage);
//base.FinishRendering(this.dataNavigator);
}
@ -67,12 +66,33 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -67,12 +66,33 @@ namespace ICSharpCode.Reports.Core.Exporter
}
protected override void BuildPageHeader()
{
base.FireSectionRenderEvent(ReportModel.PageHeader,0);
base.BuildPageHeader();
}
protected override void BuildDetailInternal(BaseSection section)
{
base.FireSectionRenderEvent(ReportModel.DetailSection,0);
base.BuildDetailInternal(section);
}
protected override void BuildPageFooter()
{
base.FireSectionRenderEvent(ReportModel.ReportFooter,0);
base.BuildPageFooter();
}
protected override void BuildReportFooter()
{
base.FireSectionRenderEvent(ReportModel.ReportFooter,0);
base.BuildReportFooter();
}
public IDataManager DataManager {get; private set;}

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

@ -26,6 +26,7 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -26,6 +26,7 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
private ExpressionContext context;
private ISinglePage singlePage;
public ExpressionEvaluatorFacade()
{
compiler = new ReportingLanguageCompiler();
@ -34,32 +35,28 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -34,32 +35,28 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
context.ResolveMissingFunction += FunctionStore;
}
// public string Evaluate (string expression)
// {
// IExpression compiled = compiler.CompileExpression<string>(expression);
// this.context.ContextObject = this.SinglePage;
// if (compiled != null) {
// return (compiled.Evaluate(context)).ToString();
// }
// return expression;
// }
public string Evaluate (string expression)
{
if (!String.IsNullOrEmpty(expression)) {
if (expression.StartsWith("=")) {
IExpression compiled = compiler.CompileExpression<string>(expression);
this.context.ContextObject = this.SinglePage;
if (compiled != null) {
return (compiled.Evaluate(context)).ToString();
}
if (CanEvaluate(expression)) {
IExpression compiled = compiler.CompileExpression<string>(expression);
this.context.ContextObject = this.SinglePage;
if (compiled != null) {
return (compiled.Evaluate(context)).ToString();
}
}
return expression;
}
private bool CanEvaluate (string expressionn)
{
if ((!String.IsNullOrEmpty(expressionn)) && (expressionn.StartsWith("="))) {
return true;
}
return false;
}
private void FunctionStore (object sender,SimpleExpressionEvaluator.Evaluation.UnknownFunctionEventArgs e)
{

32
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ReportingLanguage/ReportingLanguageCompiler.cs

@ -10,6 +10,7 @@ using ICSharpCode.Reports.Core.Interfaces; @@ -10,6 +10,7 @@ using ICSharpCode.Reports.Core.Interfaces;
using System;
using System.Collections.Generic;
using Irony.CompilerServices;
using Org.BouncyCastle.Crypto.Engines;
using SimpleExpressionEvaluator;
using SimpleExpressionEvaluator.Compilation;
using SimpleExpressionEvaluator.Compilation.Functions;
@ -26,6 +27,7 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -26,6 +27,7 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
private ReportingLanguage reportingLanguage;
private Compiler compiler;
public ReportingLanguageCompiler():base()
{
this.reportingLanguage = new ReportingLanguage();
@ -40,13 +42,7 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -40,13 +42,7 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
return null;
}
string delim = "=";
string str = expression.Trim();
if (String.IsNullOrEmpty(str)) {
return null;
}
string cleaned = str.TrimStart (delim.ToCharArray());
string cleaned = CleanupExpressionString(expression);
if (!String.IsNullOrEmpty(cleaned)) {
ParseTree node = this.compiler.Parse(cleaned);
if (node.Root == null) {
@ -58,7 +54,18 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -58,7 +54,18 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
}
// Don't call base
private string CleanupExpressionString(string expression)
{
string delim = "=";
string str = expression.Trim();
if (String.IsNullOrEmpty(str)) {
return null;
}
return str.TrimStart (delim.ToCharArray());
}
// Dron't call base
protected override IExpression<T> CompileExpression<T>(ParseTreeNode root)
{
ParseTreeNode expr = root.ChildNodes[0];
@ -95,7 +102,14 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage @@ -95,7 +102,14 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
case "ParameterSectionStmt" :
return CompileExpressionNode(factory, astNode.ChildNodes[2]);
case "FieldsSectionStmt" :
return CompileExpressionNode (factory,astNode.ChildNodes[2]);
//return CompileExpressionNode (factory,astNode.ChildNodes[2]);
object o0 =astNode.ChildNodes[0].Token.Text;
object o1 =astNode.ChildNodes[1].Token.Text;
object o2 =astNode.ChildNodes[2].Token.Text;
IExpression l = CompileExpressionNode(factory, astNode.ChildNodes[2]);
return factory.CreateFunction(astNode.ChildNodes[0].Token.Text,
l);
case "ParExpr" :
return CompileExpressionNode(factory, astNode.ChildNodes[0]);
case "BinExpr":

34
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 03.06.2010
* Time: 11:13
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace SimpleExpressionEvaluator.Compilation.Functions.ReportingService
{
[Tokens("Fields","fields")]
public class FieldReference:Function<string>
{
public FieldReference ()
{
}
protected override int ExpectedArgumentCount {
get { return 1; }
}
public override Type ReturnType {
get { return base.ReturnType; }
}
protected override string EvaluateFunction(params object[] args)
{
return Environment.UserName;
}
}
}

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportSettings.cs

@ -91,12 +91,18 @@ namespace ICSharpCode.Reports.Core{ @@ -91,12 +91,18 @@ namespace ICSharpCode.Reports.Core{
this.Padding = new Padding(5);
this.DefaultFont = GlobalValues.DefaultFont;
this.ReportType = GlobalEnums.ReportType.FormSheet;
this.DataModel = GlobalEnums.PushPullModel.FormSheet;
this.CommandType = System.Data.CommandType.Text;
this.ConnectionString = String.Empty;
this.CommandText = String.Empty;
this.TopMargin = GlobalValues.DefaultPageMargin.Left;
this.BottomMargin = GlobalValues.DefaultPageMargin.Bottom;
this.LeftMargin = GlobalValues.DefaultPageMargin.Left;
this.RightMargin = GlobalValues.DefaultPageMargin.Right;
this.availableFields = new AvailableFieldsCollection();
this.groupingsCollection = new ColumnCollection();
this.sortingCollection = new SortColumnCollection();

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/AbstractExportListBuilder.cs

@ -13,10 +13,12 @@ namespace ICSharpCode.Reports.Core.Test.Exporter @@ -13,10 +13,12 @@ namespace ICSharpCode.Reports.Core.Test.Exporter
/// <summary>
/// Description of AbstractExportListBuilder.
/// </summary>
/*
public class AbstractExportListBuilder
{
public AbstractExportListBuilder()
{
}
}
*/
}

4
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/Converter/ItemsConverterFixture.cs

@ -33,7 +33,7 @@ namespace ICSharpCode.Reports.Core.Test.Exporter.Converter @@ -33,7 +33,7 @@ namespace ICSharpCode.Reports.Core.Test.Exporter.Converter
}
[Test]
public void Check_Location_Of_ItemInSection ()
public void Check_Location_Of_Item_In_Section ()
{
BaseSection section = new BaseSection();
section.Location = new Point (10,10);
@ -51,7 +51,7 @@ namespace ICSharpCode.Reports.Core.Test.Exporter.Converter @@ -51,7 +51,7 @@ namespace ICSharpCode.Reports.Core.Test.Exporter.Converter
[Test]
public void Check_LocationAfterConvert ()
public void Check_Location_After_Convert ()
{
BaseSection section = new BaseSection();
section.Location = new Point (10,10);

13
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Exporter/DataListBuilderFixture.cs

@ -77,7 +77,7 @@ namespace ICSharpCode.Reports.Core.Test.Exporter @@ -77,7 +77,7 @@ namespace ICSharpCode.Reports.Core.Test.Exporter
}
[Test]
public void PageCreatedEvent_Should_Fired ()
public void PageCreatedEvent_Should_Fire ()
{
bool eventFired = false;
Sut.PageCreated += delegate { { eventFired = true;}};
@ -87,7 +87,16 @@ namespace ICSharpCode.Reports.Core.Test.Exporter @@ -87,7 +87,16 @@ namespace ICSharpCode.Reports.Core.Test.Exporter
}
[Test]
public void Every_Section_Should_Fire_Event()
{
int noOfEvents = 0;
int noOfsections = 5;
Sut.SectionRendering += delegate { { noOfEvents ++;}};
Sut.WritePages();
Assert.AreEqual(noOfsections,noOfEvents);
}
#endregion

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

@ -91,6 +91,7 @@ @@ -91,6 +91,7 @@
<Compile Include="ReportingLanguage\FunctionsFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\AggregateFunctionsFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\AggregateFunctionsFromIListFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\ConcatFieldsFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\FieldReferenceFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\GlobalFunctions.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\SimpleCompilerFixture.cs" />

34
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/ExpressionEvaluatorFixture.cs

@ -8,46 +8,48 @@ @@ -8,46 +8,48 @@
*/
using System;
using NUnit.Framework;
using ICSharpCode.Reports.Core.Test.TestHelpers;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
using NUnit.Framework;
namespace ICSharpCode.Reports.Core.Test.ReportingLanguage
{
[TestFixture]
public class ExpressionEvaluatorFixture
public class ExpressionEvaluatorFixture:ConcernOf<ExpressionEvaluatorFacade>
{
IExpressionEvaluatorFacade facade;
[Test]
public void CanInitExpressionEvaluatorFassade()
public void Can_Init_ExpressionEvaluatorFassade()
{
IExpressionEvaluatorFacade f = new ExpressionEvaluatorFacade();
Assert.IsNotNull (f);
}
[Test]
public void NoEvaluationOfPlainText ()
public void Plain_Text_Returns_Unmodified ()
{
string jpt = "just plain text";
string retVal = facade.Evaluate(jpt);
Assert.AreEqual(jpt,retVal);
string expression = "just plain text";
string retVal = Sut.Evaluate(expression);
Assert.AreEqual(expression,retVal);
}
[Test]
public void NoEvaluationOfFormulaLikeText ()
public void SimpleEvaluation ()
{
string fakeFormula = "A - B";
string retVal = facade.Evaluate(fakeFormula);
Assert.AreEqual(retVal,fakeFormula);
string expression = "=5 + 2";
string result = "7";
string retVal = Sut.Evaluate(expression);
Assert.AreEqual(result,retVal);
}
[TestFixtureSetUp]
public void Init()
public override void Setup()
{
facade = new ExpressionEvaluatorFacade();
Sut = new ExpressionEvaluatorFacade();
}
[TestFixtureTearDown]
public void Dispose()
{

88
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/ConcatFieldsFixture.cs

@ -0,0 +1,88 @@ @@ -0,0 +1,88 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 02.06.2010
* Time: 19:08
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Data;
using ICSharpCode.Reports.Core.Test.TestHelpers;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
using NUnit.Framework;
namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
{
[TestFixture]
public class ConcatFieldsFixture
{
private IExpressionEvaluatorFacade evaluator;
private DataTable testTable;
private SinglePage singlePage;
private IDataManager dataManager;
[Test]
public void CheckTable ()
{
Assert.AreEqual(4,this.testTable.Rows.Count);
}
[Test]
[IgnoreAttribute]
public void Can_Compile_Simple_FieldReference()
{
const string expression = "=Fields!Field1";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Field1"));
}
[Test]
[IgnoreAttribute]
public void Can_Compile_Missspelled_Simple_FieldReference()
{
const string expression = "=fields!Field1";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Field1"));
}
[Test]
[IgnoreAttribute]
public void ExtractFieldbyName ()
{
const string expression = "=Fields!Name";
// Console.WriteLine("{0} - {1}",expression,evaluator.Evaluate(expression));
Assert.That(this.evaluator.Evaluate(expression),
Is.EqualTo(this.testTable.Rows.Count.ToString()));
}
[TestFixtureSetUp]
public void Init()
{
this.evaluator = new ExpressionEvaluatorFacade();
this.singlePage = TestHelper.CreateSinglePage();
this.evaluator.SinglePage = this.singlePage;
AggregateFuctionHelper ah = new AggregateFuctionHelper();
this.testTable = ah.AggregateTable;
// foreach (DataRow r in this.testTable.Rows)
// {
//// this.intResult = this.intResult + Convert.ToInt16(r["IntValue"]);
//// this.doubleResult = this.doubleResult + Convert.ToDouble(r["Amount"]);
// }
this.dataManager = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.testTable, new ReportSettings());
this.singlePage.IDataNavigator = this.dataManager.GetNavigator;
}
[TestFixtureTearDown]
public void Dispose()
{
// TODO: Add tear down code.
}
}
}

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/FieldReferenceFixture.cs

@ -24,6 +24,7 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests @@ -24,6 +24,7 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
private IExpressionEvaluatorFacade evaluator;
[Test]
[IgnoreAttribute]
public void Can_Compile_Simple_FieldReference()
{
const string expression = "=Fields!Field1";
@ -32,6 +33,7 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests @@ -32,6 +33,7 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
[Test]
[IgnoreAttribute]
public void Can_Concat_Simple_FieldReference()
{
const string expression = "=Fields!Field1 + 'SharpDevelopReporting'";

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/TestHelper.cs

@ -29,5 +29,7 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage @@ -29,5 +29,7 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage
return p;
}
}
}

Loading…
Cancel
Save