|
From: <ric...@us...> - 2009-07-13 08:45:16
|
Revision: 4604
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4604&view=rev
Author: ricbrown
Date: 2009-07-13 08:45:12 +0000 (Mon, 13 Jul 2009)
Log Message:
-----------
Migrated ExpressionProcessor tests from lambda extensions.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/ExpressionProcessorFixture.cs
Added: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/ExpressionProcessorFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/ExpressionProcessorFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/ExpressionProcessorFixture.cs 2009-07-13 08:45:12 UTC (rev 4604)
@@ -0,0 +1,104 @@
+
+using System;
+using System.Linq.Expressions;
+
+using NHibernate.Criterion;
+using NHibernate.Impl;
+
+using NUnit.Framework;
+
+namespace NHibernate.Test.Criteria.Lambda
+{
+
+ [TestFixture]
+ public class TestExpressionProcessor
+ {
+
+ [Test]
+ public void TestFindMemberExpressionReference()
+ {
+ Expression<Func<Person, string>> e = (Person p) => p.Name;
+ string property = ExpressionProcessor.FindMemberExpression(e.Body);
+ Assert.AreEqual("Name", property);
+ }
+
+ [Test]
+ public void TestFindMemberExpressionValue()
+ {
+ Expression<Func<Person, object>> e = (Person p) => p.Age;
+ string property = ExpressionProcessor.FindMemberExpression(e.Body);
+ Assert.AreEqual("Age", property);
+ }
+
+ [Test]
+ public void TestEvaluatePropertyExpression()
+ {
+ string testName = "testName";
+ ICriterion criterion = ExpressionProcessor.ProcessExpression<Person>(p => p.Name == testName);
+ SimpleExpression simpleExpression = (SimpleExpression)criterion;
+ Assert.AreEqual("testName", simpleExpression.Value);
+ }
+
+ [Test]
+ public void TestEvaluateNullPropertyExpression()
+ {
+ Person person = new Person() { Name = null };
+ ICriterion criterion = ExpressionProcessor.ProcessExpression<Person>(p => p.Name == person.Name);
+ SimpleExpression simpleExpression = (SimpleExpression)criterion;
+ Assert.AreEqual(null, simpleExpression.Value);
+ }
+
+ [Test]
+ public void TestEvaluateStaticPropertyExpression()
+ {
+ Person.StaticName = "test name";
+ ICriterion criterion = ExpressionProcessor.ProcessExpression<Person>(p => p.Name == Person.StaticName);
+ SimpleExpression simpleExpression = (SimpleExpression)criterion;
+ Assert.AreEqual("test name", simpleExpression.Value);
+ }
+
+ [Test]
+ public void TestEvaluateEnumeration()
+ {
+ ICriterion before = Restrictions.Eq("Gender", PersonGender.Female);
+ ICriterion after = ExpressionProcessor.ProcessExpression<Person>(p => p.Gender == PersonGender.Female);
+ Assert.AreEqual(before.ToString(), after.ToString());
+ }
+
+ [Test]
+ public void TestEvaluateSubclass()
+ {
+ Person person = new CustomPerson();
+ ICriterion before = Restrictions.Eq("Father", person);
+ ICriterion after = ExpressionProcessor.ProcessExpression<Person>(p => p.Father == person);
+ Assert.AreEqual(before.ToString(), after.ToString());
+ }
+
+ [Test]
+ public void TestEvaluateMemberExpression()
+ {
+ Person testPerson = new Person();
+ testPerson.Name = "testName";
+ ICriterion criterion = ExpressionProcessor.ProcessExpression<Person>(p => p.Name == testPerson.Name);
+ SimpleExpression simpleExpression = (SimpleExpression)criterion;
+ Assert.AreEqual("testName", simpleExpression.Value);
+ }
+
+ [Test]
+ public void TestEvaluateBooleanMemberExpression()
+ {
+ {
+ ICriterion before = Restrictions.Eq("IsParent", true);
+ ICriterion after = ExpressionProcessor.ProcessExpression<Person>(p => p.IsParent);
+ Assert.AreEqual(before.ToString(), after.ToString());
+ }
+ {
+ ICriterion before = Restrictions.Eq("IsParent", false);
+ ICriterion after = ExpressionProcessor.ProcessExpression<Person>(p => !p.IsParent);
+ Assert.AreEqual(before.ToString(), after.ToString());
+ }
+ }
+
+ }
+
+}
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs 2009-07-09 22:41:46 UTC (rev 4603)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs 2009-07-13 08:45:12 UTC (rev 4604)
@@ -5,18 +5,30 @@
namespace NHibernate.Test.Criteria.Lambda
{
+ public enum PersonGender
+ {
+ Male = 1,
+ Female = 2,
+ }
+
public class Person
{
+ public static string StaticName;
+
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual int Age { get; set; }
+ public virtual PersonGender Gender { get; set; }
public virtual int Height { get; set; }
public virtual bool HasCar { get; set; }
public virtual Person Father { get; set; }
+ public virtual bool IsParent { get; set; }
public virtual IEnumerable<Child> Children { get; set; }
}
+ public class CustomPerson : Person { }
+
public class Child
{
public virtual int Id { get; set; }
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-09 22:41:46 UTC (rev 4603)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-13 08:45:12 UTC (rev 4604)
@@ -147,6 +147,7 @@
<Compile Include="Criteria\DetachedCriteriaSerializable.cs" />
<Compile Include="Criteria\Enrolment.cs" />
<Compile Include="Criteria\Lambda\CriteriaAssertFixture.cs" />
+ <Compile Include="Criteria\Lambda\ExpressionProcessorFixture.cs" />
<Compile Include="Criteria\Lambda\QueryOverFixture.cs" />
<Compile Include="Criteria\Lambda\IntegrationFixture.cs" />
<Compile Include="Criteria\Lambda\LambdaFixtureBase.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|