Browse Source

Extend grammer for Parameters,

add UnitTest#s for ParametersHandling
reports
Peter Forstmeier 12 years ago
parent
commit
9a974b5dc1
  1. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 26
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/BasicParameter.cs
  3. 31
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Collections.cs
  4. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/ParametersCallNode.cs
  5. 15
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/ReportingLanguageGrammer.cs
  6. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj
  7. 105
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Expressions/ParametersHandlingFixture.cs

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj

@ -82,6 +82,7 @@ @@ -82,6 +82,7 @@
<Compile Include="Src\Arrange\ArrangeStrategy.cs" />
<Compile Include="Src\Arrange\MeasurementStrategy.cs" />
<Compile Include="Src\BaseClasses\AbstractColumn.cs" />
<Compile Include="Src\BaseClasses\BasicParameter.cs" />
<Compile Include="Src\BaseClasses\ExtensionMethods.cs" />
<Compile Include="Src\BaseClasses\GroupColumn.cs" />
<Compile Include="Src\BaseClasses\PageInfo.cs" />

26
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/BasicParameter.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.Reporting.BaseClasses
{
/// <summary>
/// Description of BasicParameter.
/// </summary>
public class BasicParameter
{
public BasicParameter (){
}
public BasicParameter(string parameterName,string parameterValue){
this.ParameterName = parameterName;
this.ParameterValue = parameterValue;
}
public string ParameterName {get;set;}
public string Type {get;set;}
public string ParameterValue {get;set;}
}
}

31
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Collections.cs

@ -57,4 +57,35 @@ namespace ICSharpCode.Reporting @@ -57,4 +57,35 @@ namespace ICSharpCode.Reporting
return this.FirstOrDefault(x => 0 == String.Compare(x.ColumnName,columnName,true,CultureInfo.InvariantCulture));
}
}
public class ParameterCollection: Collection<BasicParameter>{
public ParameterCollection()
{
}
public BasicParameter Find (string parameterName)
{
if (String.IsNullOrEmpty(parameterName)) {
throw new ArgumentNullException("parameterName");
}
return this.FirstOrDefault(x => 0 == String.Compare(x.ParameterName,parameterName,true,CultureInfo.InvariantCulture));
}
public static CultureInfo Culture
{
get { return System.Globalization.CultureInfo.CurrentCulture; }
}
public void AddRange (IEnumerable<BasicParameter> items)
{
foreach (BasicParameter item in items){
this.Add(item);
}
}
}
}

11
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/Ast/ParametersCallNode.cs

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Reporting.BaseClasses;
using Irony;
using Irony.Ast;
using Irony.Interpreter;
@ -26,12 +27,16 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Ast @@ -26,12 +27,16 @@ namespace ICSharpCode.Reporting.Expressions.Irony.Ast
parameterNode = AddChild("Args", nodes[2]);
}
protected override object DoEvaluate(ScriptThread thread)
{
BasicParameter result = null;
thread.CurrentNode = this; //standard prolog
var s = thread.App.Globals["param1"];
return base.DoEvaluate(thread);
var dictionary = (ParameterCollection)thread.App.Globals["parameters"];
if (dictionary != null) {
result = dictionary.Find(parameterNode.AsString);
}
return result.ParameterValue;
}
}
}

15
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/Irony/ReportingLanguageGrammer.cs

@ -53,9 +53,10 @@ bool operations &,&&, |, ||; ternary '?:' operator." ; @@ -53,9 +53,10 @@ bool operations &,&&, |, ||; ternary '?:' operator." ;
var ArgList = new NonTerminal("ArgList", typeof(ExpressionListNode));
var FunctionCall = new NonTerminal("FunctionCall", typeof(FunctionCallNode));
// SharpReporting
var ParametersSection = new NonTerminal("ParametersCall",typeof(ParametersCallNode));
// end of SharpReporting
var MemberAccess = new NonTerminal("MemberAccess", typeof(MemberAccessNode));
@ -73,7 +74,8 @@ bool operations &,&&, |, ||; ternary '?:' operator." ; @@ -73,7 +74,8 @@ bool operations &,&&, |, ||; ternary '?:' operator." ;
var Program = new NonTerminal("Program", typeof(StatementListNode));
// 3. BNF rules
Expr.Rule = Term | UnExpr | BinExpr | PrefixIncDec | PostfixIncDec | TernaryIfExpr | ParametersSection;
Expr.Rule = Term | UnExpr | BinExpr | PrefixIncDec | PostfixIncDec | TernaryIfExpr |
ParametersSection;
Term.Rule = number | ParExpr | stringLit | FunctionCall | identifier | MemberAccess | IndexedAccess;
@ -93,11 +95,12 @@ bool operations &,&&, |, ||; ternary '?:' operator." ; @@ -93,11 +95,12 @@ bool operations &,&&, |, ||; ternary '?:' operator." ;
ArgList.Rule = MakeStarRule(ArgList, comma, Expr);
FunctionCall.Rule = Expr + PreferShiftHere() + "(" + ArgList + ")";
var s =
// ParametersSection.Rule = "Parameters" + "!" + identifier;
ParametersSection.Rule = ToTerm("Parameters") + "!" + identifier;
FunctionCall.NodeCaptionTemplate = "call #{0}(...)";
// SharpReporting
ParametersSection.Rule = ToTerm("Parameters") + "!" + identifier;
// end of SharpReporting
FunctionCall.NodeCaptionTemplate = "call #{0}(...)";
ObjectRef.Rule = identifier | MemberAccess | IndexedAccess;
IndexedAccess.Rule = Expr + PreferShiftHere() + "[" + Expr + "]";

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj

@ -68,6 +68,7 @@ @@ -68,6 +68,7 @@
<Compile Include="src\DataSource\CollectionHandlingFixture.cs" />
<Compile Include="src\Expressions\IntegrationTests.cs" />
<Compile Include="src\Expressions\IronyGeneral.cs" />
<Compile Include="src\Expressions\ParametersHandlingFixture.cs" />
<Compile Include="src\MeasureArrange\ContainerArrangeStrategyFixture.cs" />
<Compile Include="src\Model\ReportModelFixture.cs" />
<Compile Include="src\Model\ReportSettingsFixture.cs" />

105
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Expressions/ParametersHandlingFixture.cs

@ -0,0 +1,105 @@ @@ -0,0 +1,105 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Expressions.Irony;
using NUnit.Framework;
namespace ICSharpCode.Reporting.Test.Expressions
{
[TestFixture]
public class ParametersHandlingFixture
{
ReportingLanguageGrammer grammar;
ReportingExpressionEvaluator evaluator;
[Test]
public void CanEvaluateOneParameter()
{
var resultValue = "Hi from param1";
var parameters = new ParameterCollection();
parameters.Add(new BasicParameter() {
ParameterName = "param1",
ParameterValue = resultValue
}
);
evaluator.App.Globals.Add("parameters",parameters);
var script = "Parameters!param1";
var result = evaluator.Evaluate(script);
Assert.That (result,Is.EqualTo(resultValue));
}
[Test]
public void CanFindParameter () {
var resultValue = "Hi from param2";
var parameters = new ParameterCollection();
parameters.Add(new BasicParameter() {
ParameterName = "param1",
ParameterValue = "Value for parameter1"
}
);
parameters.Add(new BasicParameter() {
ParameterName = "param2",
ParameterValue = resultValue
}
);
parameters.Add(new BasicParameter() {
ParameterName = "param3",
ParameterValue = "Value for parameter2"
}
);
evaluator.App.Globals.Add("parameters",parameters);
var script = "Parameters!param2";
var result = evaluator.Evaluate(script);
Assert.That (result,Is.EqualTo(resultValue));
}
[Test]
public void CanConcatParameter () {
var parameters = new ParameterCollection();
parameters.Add(new BasicParameter() {
ParameterName = "param1",
ParameterValue = "SharpDevelop"
}
);
parameters.Add(new BasicParameter() {
ParameterName = "param2",
ParameterValue = " is "
}
);
parameters.Add(new BasicParameter() {
ParameterName = "param3",
ParameterValue = "great"
}
);
evaluator.App.Globals.Add("parameters",parameters);
var script = "Parameters!param1 + Parameters!param2 + Parameters!param3";
var result = evaluator.Evaluate(script);
Assert.That (result,Is.EqualTo("SharpDevelop is great"));
}
[SetUp]
public void Initialize() {
grammar = new ReportingLanguageGrammer();
evaluator = new ReportingExpressionEvaluator(grammar);
}
[TestFixtureSetUp]
public void Init()
{
// TODO: Add Init code.
}
[TestFixtureTearDown]
public void Dispose()
{
// TODO: Add tear down code.
}
}
}
Loading…
Cancel
Save