Browse Source

Substring in expressions "=Substring('Sharp',3)"; or =Substring('Sharp',0,3);

pull/15/head^2
peterforstmeier 14 years ago
parent
commit
c5990bb05c
  1. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  2. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  3. 16
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  4. 37
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/Substring.cs
  5. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj
  6. 79
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/SubstringFixture.cs

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

@ -213,6 +213,7 @@ @@ -213,6 +213,7 @@
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\Operators\UnaryOperator.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\ReportingService\UserId.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\ReportingService\UserLanguage.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\Substring.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\Today.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\ToString.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Compilation\Functions\UnknownFunction.cs" />

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs

@ -35,8 +35,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -35,8 +35,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
}
private static void AdjustParentInternal (ReportItemCollection items,ISimpleContainer parent)
//private static void AdjustParentInternal (ReportItemCollection items,BaseReportItem parent)
{
foreach(BaseReportItem item in items) {
item.Parent = parent as BaseReportItem;

16
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs

@ -84,7 +84,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -84,7 +84,7 @@ namespace ICSharpCode.Reports.Core.Exporter
PrintHelper.AdjustSectionLocation(section);
var convertedSection = new ExporterCollection();
Offset = new Point(section.Location.X,section.SectionOffset);
if (section.Items.Count > 0) {
section.Items.SortByLocation();
@ -111,6 +111,20 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -111,6 +111,20 @@ namespace ICSharpCode.Reports.Core.Exporter
Offset = BaseConverter.ConvertContainer(convertedSection,simpleContainer,Offset.X,Offset);
Offset = new Point(Offset.X,Offset.Y + gap);
//section.Size = CalculatenewSectionSize
Rectangle rsec = new Rectangle(section.Location,section.Size);
Rectangle ro = new Rectangle(section.Location,simpleContainer.Size);
if (!rsec.Contains(ro)) {
Rectangle rnew = new Rectangle(section.Location.X,section.Location.Y,
section.Size.Width , ro.Location.Y + ro.Size.Height +1);
Console.WriteLine ("{0}",rsec);
Console.WriteLine ("{0}",ro);
Console.WriteLine ("{0}",rnew);
Console.WriteLine(rnew.Contains(ro));
}
}
else
{

37
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/Substring.cs

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 14.04.2011
* Time: 19:46
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace SimpleExpressionEvaluator.Compilation.Functions
{
/// <summary>
/// Description of Substring.
/// </summary>
public class Substring:Function<string>
{
protected override string EvaluateFunction(object[] args)
{
if (args.Length == 1)
{
return args[0].ToString();
}
string str = args[0].ToString();
if (args.Length == 2) {
var start = Convert.ToInt32(args[1]);
return str.Substring(start);
}
else if (args.Length == 3) {
var start = Convert.ToInt32(args[1]);
var len = Convert.ToInt32(args[2]);
return str.Substring(start,len);
}
throw new ArgumentException("Wrong number of Arguments");
}
}
}

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

@ -96,6 +96,7 @@ @@ -96,6 +96,7 @@
<Compile Include="ReportingLanguage\IntegrationTests\FieldReferenceFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\GlobalFunctions.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\SimpleCompilerFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\SubstringFixture.cs" />
<Compile Include="ReportingLanguage\IntegrationTests\UserFunctionsFixture.cs" />
<Compile Include="ReportingLanguage\LanguageTests\AggregateFunctionsFixture.cs" />
<Compile Include="ReportingLanguage\LanguageTests\ConditionalFixture.cs" />

79
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/SubstringFixture.cs

@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 14.04.2011
* Time: 19:39
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
using NUnit.Framework;
namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
{
[TestFixture]
public class SubstringFixture
{
private IExpressionEvaluatorFacade evaluator;
[Test]
public void Misspelled_Function_Returns_Expression()
{
string expression = "=Subxstring('Sharp',5)";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Subxstring"));
}
[Test]
public void Wrong_Arg_Count_Return_First_Argument()
{
string expression = "=Substring('Sharp')";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Sharp"));
}
[Test]
public void Substring_From_Start_To_End_Of_String()
{
string expression = "=Substring('Sharp',3)";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("rp"));
}
[Test]
public void Substring_From_Start_To_Len()
{
string expression = "=Substring('Sharp',0,3)";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Sha"));
}
[Test]
public void Concat_Substring_With_SubString()
{
string expression = "=Substring('SharpDevelop',0,5) + '-' + Substring('SharpDevelop',5)";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Sharp-Develop"));
}
[Test]
public void Too_Much_Args_returns_Err_Message()
{
string expression = "=Substring('Sharp',0,3,5)";
Assert.That(this.evaluator.Evaluate(expression),Is.StringStarting("Wrong number"));
}
[TestFixtureSetUp]
public void Init()
{
this.evaluator = new ExpressionEvaluatorFacade(null);
}
[TestFixtureTearDown]
public void Dispose()
{
// TODO: Add tear down code.
}
}
}
Loading…
Cancel
Save