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. |