diff --git a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2005.csproj b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2005.csproj
index 2bb99b17..9773630d 100644
--- a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2005.csproj
+++ b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2005.csproj
@@ -301,6 +301,6 @@
echo "Copying .xml files for tests"
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2005\Spring.Aop.Tests\$(ConfigurationName)\ /y /s /q /d
-xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Aop.Tests\$(ConfigurationName)\ /y /s /q
+xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Aop.Tests\$(ConfigurationName)\ /y /s /q
\ No newline at end of file
diff --git a/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs b/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs
index 014dd3ca..2d4d8d65 100644
--- a/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs
+++ b/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs
@@ -41,6 +41,7 @@ using Spring.Context.Support;
using Spring.Core;
using Spring.Core.TypeResolution;
using Spring.Expressions;
+using Spring.Expressions.Processors;
using Spring.Objects;
using Spring.Objects.Factory;
using Spring.Threading;
@@ -1565,6 +1566,37 @@ namespace Spring.Expressions
Assert.AreEqual(TransactionOption.Required, webMethod.TransactionOption);
}
+ [Test]
+ public void TestDelegateFunctionExpressions()
+ {
+ //for purposes of an example in documentation
+ Hashtable vars = new Hashtable();
+ vars["sqrt"] = new DoubleFunction(Sqrt);
+ double result = (double)ExpressionEvaluator.GetValue(null, "#sqrt(64)", vars);
+ Assert.AreEqual(8, result);
+
+ vars = new Hashtable();
+ vars["max"] = new DoubleFunctionTwoArgs(Max);
+ result = (double) ExpressionEvaluator.GetValue(null, "#max(5,25)", vars);
+ Assert.AreEqual(25, result);
+
+
+ }
+
+ private delegate double DoubleFunction(double arg);
+
+ private double Sqrt(double arg)
+ {
+ return Math.Sqrt(arg);
+ }
+
+ private delegate double DoubleFunctionTwoArgs(double arg1, double arg2);
+
+ private double Max(double arg1, double arg2)
+ {
+ return Math.Max(arg1, arg2);
+ }
+
///
/// Type lambda expressions.
///
@@ -1626,6 +1658,43 @@ namespace Spring.Expressions
Assert.AreEqual(0, ExpressionEvaluator.GetValue(null, "count()"));
}
+ [Test]
+ public void TestCustomCollectionProcessor()
+ {
+ // Test for the purposes of creating documentation example.
+ Hashtable vars = new Hashtable();
+ vars["EvenSum"] = new IntEvenSumCollectionProcessor();
+ Assert.AreEqual(6, ExpressionEvaluator.GetValue(null, "{1, 2, 3, 4}.EvenSum()", vars));
+
+ }
+
+ private class IntEvenSumCollectionProcessor : ICollectionProcessor
+ {
+ public object Process(ICollection source, object[] args)
+ {
+ object total = 0d;
+ foreach (object item in source)
+ {
+ if (item != null)
+ {
+ if (NumberUtils.IsInteger(item))
+ {
+ if ((int)item % 2 == 0)
+ {
+ total = NumberUtils.Add(total, item);
+ }
+ }
+ else
+ {
+ throw new ArgumentException("Sum can only be calculated for a collection of numeric values.");
+ }
+ }
+ }
+
+ return total;
+ }
+ }
+
[Test]
public void TestSumAggregator()
{
diff --git a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2005.csproj b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2005.csproj
index d792700d..3359a5d8 100644
--- a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2005.csproj
+++ b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2005.csproj
@@ -868,6 +868,6 @@
echo "Copying .xml files for tests"
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2005\Spring.Core.Tests\$(ConfigurationName)\ /y /s /q /d
-xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Core.Tests\$(ConfigurationName)\ /y /s /q
+xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Core.Tests\$(ConfigurationName)\ /y /s /q
\ No newline at end of file
diff --git a/test/Spring/Spring.Data.NHibernate.Integration.Tests/Spring.Data.NHibernate.Integration.Tests.2005.csproj b/test/Spring/Spring.Data.NHibernate.Integration.Tests/Spring.Data.NHibernate.Integration.Tests.2005.csproj
index c1d9cdd8..e7af015f 100644
--- a/test/Spring/Spring.Data.NHibernate.Integration.Tests/Spring.Data.NHibernate.Integration.Tests.2005.csproj
+++ b/test/Spring/Spring.Data.NHibernate.Integration.Tests/Spring.Data.NHibernate.Integration.Tests.2005.csproj
@@ -124,6 +124,6 @@
echo "Copying .xml files for tests"
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Integration.Tests\$(ConfigurationName)\ /y /s /q /d
-xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Integration.Tests\$(ConfigurationName)\ /y /s /q
+xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Integration.Tests\$(ConfigurationName)\ /y /s /q
\ No newline at end of file
diff --git a/test/Spring/Spring.Data.NHibernate.Tests/Spring.Data.NHibernate.Tests.2005.csproj b/test/Spring/Spring.Data.NHibernate.Tests/Spring.Data.NHibernate.Tests.2005.csproj
index eca1d86a..804238c9 100644
--- a/test/Spring/Spring.Data.NHibernate.Tests/Spring.Data.NHibernate.Tests.2005.csproj
+++ b/test/Spring/Spring.Data.NHibernate.Tests/Spring.Data.NHibernate.Tests.2005.csproj
@@ -118,6 +118,6 @@
echo "Copying .xml files for tests"
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Tests\$(ConfigurationName)\ /y /s /q /d
-xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Tests\$(ConfigurationName)\ /y /s /q
+xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Data.NHibernate.Tests\$(ConfigurationName)\ /y /s /q
\ No newline at end of file
diff --git a/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2005.csproj b/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2005.csproj
index 5d4617d1..13c80e7d 100644
--- a/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2005.csproj
+++ b/test/Spring/Spring.Data.Tests/Spring.Data.Tests.2005.csproj
@@ -188,6 +188,6 @@
echo "Copying .xml files for tests"
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2005\Spring.Data.Tests\$(ConfigurationName)\ /y /s /q /d
-xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Data.Tests\$(ConfigurationName)\ /y /s /q
+xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Data.Tests\$(ConfigurationName)\ /y /s /q
\ No newline at end of file
diff --git a/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2005.csproj b/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2005.csproj
index dd74a801..fa6b3c8c 100644
--- a/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2005.csproj
+++ b/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2005.csproj
@@ -183,6 +183,6 @@
echo "Copying .xml files for Spring.Services tests"
xcopy "$(ProjectDir)Data" ..\..\..\..\build\VS.Net.2005\Spring.Services.Tests\$(ConfigurationName)\ /y /s /q /d
-xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Services.Tests\$(ConfigurationName)\ /y /s /q
+xcopy "$(ProjectDir)$(TargetFileName).config" ..\..\..\..\build\VS.Net.2005\Spring.Services.Tests\$(ConfigurationName)\ /y /s /q
\ No newline at end of file