From: <fab...@us...> - 2011-06-19 21:07:45
|
Revision: 5961 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5961&view=rev Author: fabiomaulo Date: 2011-06-19 21:07:39 +0000 (Sun, 19 Jun 2011) Log Message: ----------- Passing test for NH-2700 (the refactoring of param. management was for something) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/CustomDialect.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/ModelClass.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/CustomDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/CustomDialect.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/CustomDialect.cs 2011-06-19 21:07:39 UTC (rev 5961) @@ -0,0 +1,20 @@ +using NHibernate.Dialect; +using NHibernate.Dialect.Function; + +namespace NHibernate.Test.NHSpecificTest.NH2700 +{ + public class CustomDialect : MsSql2005Dialect + { + public CustomDialect() + { + RegisterFunction( + "AddDays", + new SQLFunctionTemplate( + NHibernateUtil.DateTime, + "dateadd(day,?2,?1)" + + ) + ); + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Fixture.cs 2011-06-19 21:07:39 UTC (rev 5961) @@ -0,0 +1,66 @@ +using System; +using NHibernate.Criterion; +using NHibernate.Impl; +using NHibernate.Loader.Criteria; +using NUnit.Framework; +using Environment = NHibernate.Cfg.Environment; + +namespace NHibernate.Test.NHSpecificTest.NH2700 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void Configure(Cfg.Configuration configuration) + { + cfg.SetProperty(Environment.Dialect, typeof(CustomDialect).AssemblyQualifiedName); + } + + public static string GetSql(ICriteria criteria) + { + var criteriaImpl = (CriteriaImpl)criteria; + var session = criteriaImpl.Session; + var factory = session.Factory; + + var translator = + new CriteriaQueryTranslator( + factory, + criteriaImpl, + criteriaImpl.EntityOrClassName, + CriteriaQueryTranslator.RootSqlAlias); + + var implementors = factory.GetImplementors(criteriaImpl.EntityOrClassName); + + var walker = new CriteriaJoinWalker( + (Persister.Entity.IOuterJoinLoadable)factory.GetEntityPersister(implementors[0]), + translator, + factory, + criteriaImpl, + criteriaImpl.EntityOrClassName, + session.EnabledFilters); + + return walker.SqlString.ToString(); + } + + [Test] + public void TestProjection() + { + + using (var s = OpenSession()) + { + var proj = new SqlFunctionProjection("AddDays", NHibernateUtil.DateTime, + new IProjection[] + { + Projections.Property<ModelClass>(p=>p.Date1), + Projections.Property<ModelClass>(p=>p.Value1) + }); + var criteria = s.CreateCriteria<ModelClass>(); + criteria.SetProjection(proj); + + var sql = GetSql(criteria); + + Assert.That(sql, Is.StringMatching("dateadd\\(day,(.*?)Value1,(.*?)Date1\\)")); + Console.WriteLine(sql.ToString()); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/Mappings.hbm.xml 2011-06-19 21:07:39 UTC (rev 5961) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH2700" + assembly="NHibernate.Test"> + + <class name="ModelClass"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Date1"/> + <property name="Value1"/> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/ModelClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/ModelClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2700/ModelClass.cs 2011-06-19 21:07:39 UTC (rev 5961) @@ -0,0 +1,12 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH2700 +{ + public class ModelClass + { + public virtual int Id { get; set; } + public virtual DateTime Date1 { get; set; } + public virtual DateTime Value1 { get; set; } + } + +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-06-19 20:57:39 UTC (rev 5960) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-06-19 21:07:39 UTC (rev 5961) @@ -858,6 +858,9 @@ <Compile Include="NHSpecificTest\NH2697\ArticleGroupItem.cs" /> <Compile Include="NHSpecificTest\NH2697\ArticleItem.cs" /> <Compile Include="NHSpecificTest\NH2697\SampleTest.cs" /> + <Compile Include="NHSpecificTest\NH2700\CustomDialect.cs" /> + <Compile Include="NHSpecificTest\NH2700\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2700\ModelClass.cs" /> <Compile Include="NHSpecificTest\NH2703\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2703\Model.cs" /> <Compile Include="NHSpecificTest\NH2705\ItemBase.cs" /> @@ -2719,6 +2722,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH2700\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2296\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2760\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2662\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |