6 changed files with 133 additions and 3 deletions
@ -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"); |
||||
} |
||||
} |
||||
} |
@ -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…
Reference in new issue