From: <te...@us...> - 2009-02-12 14:53:45
|
Revision: 4084 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4084&view=rev Author: tehlike Date: 2009-02-12 14:53:40 +0000 (Thu, 12 Feb 2009) Log Message: ----------- Removing SessionFactoryTests since it is no longer necessary to serialize SessionFactory Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/SessionFactoryTest/ Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-12 07:05:27 UTC (rev 4083) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-12 14:53:40 UTC (rev 4084) @@ -931,8 +931,6 @@ <Compile Include="QueryTest\PositionalParametersFixture.cs" /> <Compile Include="QueryTest\QueryParametersFixture.cs" /> <Compile Include="ReflectionOptimizerTest\LcgFixture.cs" /> - <Compile Include="SessionFactoryTest\Item.cs" /> - <Compile Include="SessionFactoryTest\SessionFactorySerializationFixture.cs" /> <Compile Include="SqlTest\Custom\CustomSQLSupportTest.cs" /> <Compile Include="SqlTest\Custom\CustomStoredProcSupportTest.cs" /> <Compile Include="SqlTest\Custom\MySQL\MySQLTest.cs" /> @@ -1669,7 +1667,6 @@ <EmbeddedResource Include="NHSpecificTest\NH1665\Mappings.hbm.xml" /> <EmbeddedResource Include="Generatedkeys\ByTrigger\MyEntity.hbm.xml" /> <EmbeddedResource Include="Generatedkeys\Identity\MyEntityIdentity.hbm.xml" /> - <EmbeddedResource Include="SessionFactoryTest\Item.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1289\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\TimeSpanClass.hbm.xml" /> <EmbeddedResource Include="TypesTest\TimeSpanInt64Class.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dar...@us...> - 2009-02-13 21:28:29
|
Revision: 4085 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4085&view=rev Author: darioquintana Date: 2009-02-13 21:28:04 +0000 (Fri, 13 Feb 2009) Log Message: ----------- tests for NH1679, not fixed yet Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/DomainClass.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/DomainClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/DomainClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/DomainClass.cs 2009-02-13 21:28:04 UTC (rev 4085) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.NHSpecificTest.NH1679 +{ + public class DomainClass + { + public int Id { get; set; } + + public bool BooleanData { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Fixture.cs 2009-02-13 21:28:04 UTC (rev 4085) @@ -0,0 +1,59 @@ +using System.Collections; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1679 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void UsingExpression() + { + TestAction(criteria => { criteria.Add(Expression.Eq("alias.BooleanData", true)); }); + } + + [Test,Ignore] + public void UsingExpressionProjection() + { + TestAction(criteria => { criteria.Add(Expression.Eq(Projections.Property("alias.BooleanData"), true)); }); + } + + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + var entity = new DomainClass(); + entity.Id = 1; + entity.BooleanData = true; + session.Save(entity); + session.Flush(); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + using (ISession session = OpenSession()) + { + string hql = "from System.Object"; + session.Delete(hql); + session.Flush(); + } + } + + public void TestAction(System.Action<DetachedCriteria> action) + { + using (ISession session = OpenSession()) + { + DetachedCriteria criteria = DetachedCriteria.For<DomainClass>("alias"); + + action.Invoke(criteria); + + IList l = criteria.GetExecutableCriteria(session).List(); + Assert.AreNotEqual(l, null); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1679/Mappings.hbm.xml 2009-02-13 21:28:04 UTC (rev 4085) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1679" + default-lazy="false"> + <class name="DomainClass"> + <id name="Id"> + <generator class="assigned" /> + </id> + <property name="BooleanData" /> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-12 14:53:40 UTC (rev 4084) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-13 21:28:04 UTC (rev 4085) @@ -627,6 +627,8 @@ <Compile Include="NHSpecificTest\NH1643\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1654\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1654\Employee.cs" /> + <Compile Include="NHSpecificTest\NH1679\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1679\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1657,6 +1659,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1679\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\Evicting\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1490\MappingsFilterAsBoolean.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1293\MappingsFilterAsBoolean.hbm.xml" /> @@ -1795,4 +1798,4 @@ if exist "$(ProjectDir)hibernate.cfg.xml" (copy "$(ProjectDir)hibernate.cfg.xml" "hibernate.cfg.xml") copy /y "..\..\..\NHibernate.DomainModel\ABC.hbm.xml" "ABC.hbm.xml"</PostBuildEvent> </PropertyGroup> -</Project> \ No newline at end of file +</Project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2009-02-19 09:56:03
|
Revision: 4088 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4088&view=rev Author: tehlike Date: 2009-02-19 09:55:56 +0000 (Thu, 19 Feb 2009) Log Message: ----------- Adding Tests for NH-1677 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Fixture.cs 2009-02-19 09:55:56 UTC (rev 4088) @@ -0,0 +1,85 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Text; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1677 +{ + [TestFixture,Ignore] + public class EntityModeMapCriteria:BugTestCase + { + private const int NumberOfRecordPerEntity = 10; + private const string Entity1Name = "Entity1"; + private const string Entity1Property = "Entity1Property"; + private const string Entity2Name = "Entity2"; + private const string Entity2Property = "Entity2Property"; + private const string EntityPropertyPrefix = "Record"; + + protected override void Configure(NHibernate.Cfg.Configuration configuration) + { + base.Configure(configuration); + configuration.SetProperty("default_entity_mode", + EntityModeHelper.ToString(EntityMode.Map)); + } + + protected override void OnSetUp() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction(IsolationLevel.ReadCommitted)) + { + for (int i = 0; i < NumberOfRecordPerEntity; i++) + { + var entity1 = new Hashtable(); + entity1[Entity1Property] = EntityPropertyPrefix + i; + s.SaveOrUpdate(Entity1Name, entity1); + } + + for (int i = 0; i < NumberOfRecordPerEntity; i++) + { + var entity2 = new Hashtable(); + entity2[Entity2Property] = EntityPropertyPrefix + i; + s.SaveOrUpdate(Entity2Name, entity2); + } + tx.Commit(); + } + } + } + protected override void OnTearDown() + { + using(var s=OpenSession()) + { + using(var tx=s.BeginTransaction()) + { + s.Delete(string.Format("from {0}", Entity1Name)); + tx.Commit(); + } + + } + } + [Test] + public void EntityModeMapFailsWithCriteria() + { + using (var sf = cfg.BuildSessionFactory()) + { + + using (var s = sf.OpenSession()) + { + var query = s.CreateQuery(string.Format("from {0}", Entity1Name)); + var entity1List = query.List(); + Assert.AreEqual(NumberOfRecordPerEntity, entity1List.Count); // OK, Count == 10 + } + + using (var s = sf.OpenSession()) + { + var entity1Criteria = s.CreateCriteria(Entity1Name); + var entity1List = entity1Criteria.List(); + Assert.AreEqual(NumberOfRecordPerEntity, entity1List.Count); // KO !!! Count == 20 !!! + } + } + } + } + +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1677/Mappings.hbm.xml 2009-02-19 09:55:56 UTC (rev 4088) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<hibernate-mapping xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="urn:nhibernate-mapping-2.2"> + <class entity-name="Entity1" table="Table1"> + <id name="Id" column="Id" type="Int32"> + <generator class="native"/> + </id> + <property name="Entity1Property" column="Table1Column" type="String"/> + </class> + <class entity-name="Entity2" table="Table2"> + <id column="Id" type="Int32" name="Id"> + <generator class="native"/> + </id> + <property name="Entity2Property" column="Table2Column" type="String"/> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-16 22:14:57 UTC (rev 4087) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-19 09:55:56 UTC (rev 4088) @@ -627,6 +627,7 @@ <Compile Include="NHSpecificTest\NH1643\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1654\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1654\Employee.cs" /> + <Compile Include="NHSpecificTest\NH1677\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1679\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1679\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> @@ -1659,6 +1660,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1677\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1679\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\Evicting\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1490\MappingsFilterAsBoolean.hbm.xml" /> @@ -1798,4 +1800,4 @@ if exist "$(ProjectDir)hibernate.cfg.xml" (copy "$(ProjectDir)hibernate.cfg.xml" "hibernate.cfg.xml") copy /y "..\..\..\NHibernate.DomainModel\ABC.hbm.xml" "ABC.hbm.xml"</PostBuildEvent> </PropertyGroup> -</Project> +</Project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-02-21 04:12:51
|
Revision: 4095 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4095&view=rev Author: fabiomaulo Date: 2009-02-21 04:12:45 +0000 (Sat, 21 Feb 2009) Log Message: ----------- NH-1675 not an issue in trunk but probably a real bug with the old Dialect. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Person.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Fixture.cs 2009-02-21 04:12:45 UTC (rev 4095) @@ -0,0 +1,37 @@ +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.NHSpecificTest.NH1675 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void ShouldWorkUsingDistinctAndLimits() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + for (int i = 0; i < 5; i++) + { + s.Save(new Person {FirstName = "Name" + i}); + } + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + var q =s.CreateQuery("select distinct p from Person p").SetFirstResult(0).SetMaxResults(10); + Assert.That(q.List().Count, Is.EqualTo(5)); + } + + // clean up + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from Person"); + tx.Commit(); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Mappings.hbm.xml 2009-02-21 04:12:45 UTC (rev 4095) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1675" + assembly="NHibernate.Test"> + + <class name="Person"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="FirstName"/> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Person.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Person.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1675/Person.cs 2009-02-21 04:12:45 UTC (rev 4095) @@ -0,0 +1,8 @@ +namespace NHibernate.Test.NHSpecificTest.NH1675 +{ + public class Person + { + public virtual int Id { get; set; } + public virtual string FirstName { get; set; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-21 03:59:26 UTC (rev 4094) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-21 04:12:45 UTC (rev 4095) @@ -627,6 +627,8 @@ <Compile Include="NHSpecificTest\NH1643\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1654\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1654\Employee.cs" /> + <Compile Include="NHSpecificTest\NH1675\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1675\Person.cs" /> <Compile Include="NHSpecificTest\NH1677\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1679\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1679\Fixture.cs" /> @@ -1660,6 +1662,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1675\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1677\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1679\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\Evicting\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-02-21 17:08:33
|
Revision: 4096 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4096&view=rev Author: fabiomaulo Date: 2009-02-21 17:08:24 +0000 (Sat, 21 Feb 2009) Log Message: ----------- Test for version generated Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-21 04:12:45 UTC (rev 4095) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-21 17:08:24 UTC (rev 4096) @@ -1105,6 +1105,9 @@ <Compile Include="UtilityTest\ThreadSafeDictionaryFixture.cs" /> <Compile Include="UtilityTest\TypeNameParserFixture.cs" /> <Compile Include="UtilityTest\WeakHashtableFixture.cs" /> + <Compile Include="VersionTest\Db\MsSQL\BinaryTimestamp.cs" /> + <Compile Include="VersionTest\Db\MsSQL\GeneratedBinaryVersionFixture.cs" /> + <Compile Include="VersionTest\Db\MsSQL\SimpleVersioned.cs" /> <Compile Include="VersionTest\Person.cs" /> <Compile Include="VersionTest\Task.cs" /> <Compile Include="VersionTest\Thing.cs" /> @@ -1662,6 +1665,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="VersionTest\Db\MsSQL\SimpleVersioned.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1675\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1677\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1679\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,105 @@ +using System.Data; +using NHibernate.Engine; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + public class BinaryTimestamp : IUserVersionType + { + #region IUserVersionType Members + + public object Next(object current, ISessionImplementor session) + { + return current; + } + + public object Seed(ISessionImplementor session) + { + return new byte[8]; + } + + public object Assemble(object cached, object owner) + { + return DeepCopy(cached); + } + + public object DeepCopy(object value) + { + return value; + } + + public object Disassemble(object value) + { + return DeepCopy(value); + } + + public int GetHashCode(object x) + { + return x.GetHashCode(); + } + + public bool IsMutable + { + get { return false; } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + return rs.GetValue(rs.GetOrdinal(names[0])); + } + + public void NullSafeSet(IDbCommand cmd, object value, int index) + { + NHibernateUtil.Binary.NullSafeSet(cmd, value, index); + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public System.Type ReturnedType + { + get { return typeof (byte[]); } + } + + public SqlType[] SqlTypes + { + get { return new[] {new SqlType(DbType.Binary, 8)}; } + } + + public int Compare(object x, object y) + { + var xbytes = (byte[]) x; + var ybytes = (byte[]) y; + if (xbytes.Length < ybytes.Length) + { + return -1; + } + if (xbytes.Length > ybytes.Length) + { + return 1; + } + for (int i = 0; i < xbytes.Length; i++) + { + if (xbytes[i] < ybytes[i]) + { + return -1; + } + if (xbytes[i] > ybytes[i]) + { + return 1; + } + } + return 0; + } + + bool IUserType.Equals(object x, object y) + { + return (x == y); + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,46 @@ +using System.Collections; +using NHibernate.Dialect; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + // related issues NH-1687, NH-1685 + + [TestFixture, Ignore("Not fixed yet.")] + public class GeneratedBinaryVersionFixture : TestCase + { + protected override IList Mappings + { + get { return new[] { "VersionTest.Db.MsSQL.SimpleVersioned.hbm.xml" }; } + } + + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is MsSql2000Dialect; + } + + [Test] + public void ShouldRetrieveVersionAfterFlush() + { + var e = new SimpleVersioned {Something = "something"}; + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + Assert.That(e.LastModified, Is.Null); + s.Save(e); + s.Flush(); + Assert.That(e.LastModified, Is.Not.Null); + s.Delete(e); + tx.Commit(); + } + } + } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + public class SimpleVersioned + { + public virtual int Id { get; private set; } + public virtual byte[] LastModified { get; private set; } + public virtual string Something { get; set; } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.VersionTest.Db.MsSQL"> + + <typedef name="ByteTimestamp" + class="NHibernate.Test.VersionTest.Db.MsSQL.BinaryTimestamp, NHibernate.Test"/> + + <class name="SimpleVersioned" table="GenVersion" optimistic-lock="version" > + <id name="Id" access="backfield"> + <generator class="native" /> + </id> + <version name="LastModified" type="ByteTimestamp" generated="always" unsaved-value="null" access="backfield"> + <column name="LastModified" not-null="false" sql-type="timestamp"/> + </version> + <property name="Something"/> + </class> + +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-03-04 19:34:07
|
Revision: 4111 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4111&view=rev Author: fabiomaulo Date: 2009-03-04 19:34:04 +0000 (Wed, 04 Mar 2009) Log Message: ----------- User Example for NH-1685 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomain.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomainFixture.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexVersioned.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-04 18:47:03 UTC (rev 4110) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-04 19:34:04 UTC (rev 4111) @@ -1113,6 +1113,8 @@ <Compile Include="UtilityTest\TypeNameParserFixture.cs" /> <Compile Include="UtilityTest\WeakHashtableFixture.cs" /> <Compile Include="VersionTest\Db\MsSQL\BinaryTimestamp.cs" /> + <Compile Include="VersionTest\Db\MsSQL\ComplexDomain.cs" /> + <Compile Include="VersionTest\Db\MsSQL\ComplexDomainFixture.cs" /> <Compile Include="VersionTest\Db\MsSQL\GeneratedBinaryVersionFixture.cs" /> <Compile Include="VersionTest\Db\MsSQL\SimpleVersioned.cs" /> <Compile Include="VersionTest\Person.cs" /> @@ -1672,6 +1674,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="VersionTest\Db\MsSQL\ComplexVersioned.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTag.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1691\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1689\Mappings.hbm.xml" /> Modified: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs 2009-03-04 18:47:03 UTC (rev 4110) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs 2009-03-04 19:34:04 UTC (rev 4111) @@ -73,21 +73,33 @@ { var xbytes = (byte[]) x; var ybytes = (byte[]) y; - if (xbytes.Length < ybytes.Length) + return CompareValues(xbytes, ybytes); + } + + bool IUserType.Equals(object x, object y) + { + return (x == y); + } + + #endregion + + private static int CompareValues(byte[] x, byte[] y) + { + if (x.Length < y.Length) { return -1; } - if (xbytes.Length > ybytes.Length) + if (x.Length > y.Length) { return 1; } - for (int i = 0; i < xbytes.Length; i++) + for (int i = 0; i < x.Length; i++) { - if (xbytes[i] < ybytes[i]) + if (x[i] < y[i]) { return -1; } - if (xbytes[i] > ybytes[i]) + if (x[i] > y[i]) { return 1; } @@ -95,11 +107,9 @@ return 0; } - bool IUserType.Equals(object x, object y) + public static bool Equals(byte[] x, byte[] y) { - return (x == y); + return CompareValues(x, y) == 0; } - - #endregion } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomain.cs 2009-03-04 19:34:04 UTC (rev 4111) @@ -0,0 +1,30 @@ +using Iesi.Collections.Generic; + +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + public class Bar + { + public virtual int Id { get; set; } + public virtual byte[] Timestamp { get; private set; } + public virtual int AField { get; set; } + public virtual Foo Foo { get; set; } + } + + public class Foo + { + public Foo() + { + Bars = new HashedSet<Bar>(); + } + public virtual int Id { get; set; } + public virtual byte[] Timestamp { get; private set; } + public virtual int AField { get; set; } + public virtual ISet<Bar> Bars { get; set; } + + public virtual void AddBar(Bar bar) + { + bar.Foo = this; + Bars.Add(bar); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomainFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomainFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexDomainFixture.cs 2009-03-04 19:34:04 UTC (rev 4111) @@ -0,0 +1,63 @@ +using System.Collections; +using NHibernate.Dialect; +using NUnit.Framework; + +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + [TestFixture] + public class ComplexDomainFixture : TestCase + { + protected override IList Mappings + { + get { return new[] { "VersionTest.Db.MsSQL.ComplexVersioned.hbm.xml" }; } + } + + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is MsSql2000Dialect; + } + + [Test] + public void NH1685() + { + using (ISession session = OpenSession()) + { + var bar = new Bar {AField = 24}; + + var foo = new Foo {AField = 42}; + foo.AddBar(bar); + + session.Save(foo); + session.Flush(); + session.Evict(bar); + session.Evict(foo); + + var retrievedBar = session.Get<Bar>(bar.Id); + + // At this point the assumption is that bar and retrievedBar should have + // identical values, but represent two different POCOs. The asserts below + // are intended to verify this. Currently this test fails on the comparison + // of the SQL Server timestamp (i.e. binary(8)) fields because + // NHibernate does not retrieve the new timestamp after the last update. + + Assert.AreNotSame(bar, retrievedBar); + Assert.AreEqual(bar.Id, retrievedBar.Id); + Assert.AreEqual(bar.AField, retrievedBar.AField); + Assert.AreEqual(bar.Foo.Id, retrievedBar.Foo.Id); + Assert.IsTrue(BinaryTimestamp.Equals(bar.Timestamp, retrievedBar.Timestamp), "Timestamps are different!"); + } + + using (ISession session = OpenSession()) + { + session.BeginTransaction(); + session.Delete("from Bar"); + session.Transaction.Commit(); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexVersioned.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexVersioned.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ComplexVersioned.hbm.xml 2009-03-04 19:34:04 UTC (rev 4111) @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + default-cascade="save-update" + auto-import="true" + assembly="NHibernate.Test" + namespace="NHibernate.Test.VersionTest.Db.MsSQL"> + + <typedef name="ByteTimestamp" + class="NHibernate.Test.VersionTest.Db.MsSQL.BinaryTimestamp, NHibernate.Test"/> + + <class name="Bar" table="Bar" optimistic-lock="version"> + <id name="Id"> + <generator class="identity" /> + </id> + <version name="Timestamp" type="ByteTimestamp" generated="always" unsaved-value="null" access="backfield"> + <column name="LastModified" not-null="false" sql-type="timestamp"/> + </version> + <property name="AField"/> + <many-to-one name="Foo" column="FooID" cascade="all" class="Foo" not-null="true" /> + </class> + + <class name="Foo" table="Foo" optimistic-lock="version"> + <id name="Id"> + <generator class="identity" /> + </id> + <version name="Timestamp" type="ByteTimestamp" generated="always" unsaved-value="null" access="backfield"> + <column name="LastModified" not-null="false" sql-type="timestamp"/> + </version> + <property name="AField"/> + <set name="Bars" cascade="all" access="backfield" inverse="true"> + <key column="FooID" /> + <one-to-many class="Bar" /> + </set> + </class> +</hibernate-mapping> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dav...@us...> - 2009-03-14 15:19:01
|
Revision: 4131 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4131&view=rev Author: davybrion Date: 2009-03-14 15:18:55 +0000 (Sat, 14 Mar 2009) Log Message: ----------- removing failing test which is no longer necessary after reverting NH-1698 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-14 14:03:03 UTC (rev 4130) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-14 15:18:55 UTC (rev 4131) @@ -948,7 +948,6 @@ <Compile Include="SqlTest\Custom\CustomStoredProcSupportTest.cs" /> <Compile Include="SqlTest\Custom\MySQL\MySQLTest.cs" /> <Compile Include="SqlTest\Custom\Oracle\OracleCustomSQLFixture.cs" /> - <Compile Include="Tools\hbm2ddl\SchemaExportTests\NonClusteredPrimaryKeyFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTag.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTagFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaUpdate\MigrationFixture.cs" /> Deleted: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs 2009-03-14 14:03:03 UTC (rev 4130) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/NonClusteredPrimaryKeyFixture.cs 2009-03-14 15:18:55 UTC (rev 4131) @@ -1,38 +0,0 @@ -using System.IO; -using System.Reflection; -using System.Text; - -using NHibernate.Cfg; -using NHibernate.Dialect; -using NHibernate.Tool.hbm2ddl; - -using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; - -namespace NHibernate.Test.Tools.hbm2ddl.SchemaExportTests -{ - [TestFixture] - public class NonClusteredPrimaryKeyFixture - { - [Test] - public void ShouldCreateSchemaWithNonClusterdPrimaryKeyForMsSql2005Dialect() - { - var script = new StringBuilder(); - const string mapping = "NHibernate.Test.Tools.hbm2ddl.SchemaExportTests.WithColumnTag.hbm.xml"; - - Configuration cfg = TestConfigurationHelper.GetDefaultConfiguration(); - - if (cfg.Properties[Environment.Dialect] != typeof(MsSql2005Dialect).FullName) - { - Assert.Ignore("this test only applies for MsSql2005Dialect"); - } - - using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(mapping)) - cfg.AddInputStream(stream); - new SchemaExport(cfg).Execute(s => script.AppendLine(s), false, false, false); - - string wholeScript = script.ToString(); - Assert.That(wholeScript, Text.Contains("primary key nonclustered (id)")); - } - } -} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-03-18 14:22:41
|
Revision: 4144 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4144&view=rev Author: fabiomaulo Date: 2009-03-18 13:30:33 +0000 (Wed, 18 Mar 2009) Log Message: ----------- Test to study the StatelessSession behavior in "more complicated" scenario. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.cs trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.hbm.xml trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessWithRelationsFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-17 19:16:01 UTC (rev 4143) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-18 13:30:33 UTC (rev 4144) @@ -948,6 +948,8 @@ <Compile Include="SqlTest\Custom\CustomStoredProcSupportTest.cs" /> <Compile Include="SqlTest\Custom\MySQL\MySQLTest.cs" /> <Compile Include="SqlTest\Custom\Oracle\OracleCustomSQLFixture.cs" /> + <Compile Include="Stateless\Naturalness.cs" /> + <Compile Include="Stateless\StatelessWithRelationsFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTag.cs" /> <Compile Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTagFixture.cs" /> <Compile Include="Tools\hbm2ddl\SchemaUpdate\MigrationFixture.cs" /> @@ -1681,6 +1683,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="Stateless\Naturalness.hbm.xml" /> <EmbeddedResource Include="TransformTests\Simple.hbm.xml" /> <EmbeddedResource Include="VersionTest\Db\MsSQL\ComplexVersioned.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaExportTests\WithColumnTag.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.cs 2009-03-18 13:30:33 UTC (rev 4144) @@ -0,0 +1,37 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Stateless +{ + public abstract class Animal + { + public virtual int Id { get; private set; } + public virtual string Description { get; set; } + } + + public class Reptile: Animal + { + public virtual float BodyTemperature { get; set; } + } + + public class Human : Animal + { + public virtual string Name { get; set; } + public virtual string NickName { get; set; } + public virtual DateTime Birthdate { get; set; } + } + + public class Family<T> where T: Animal + { + private ISet<T> childs; + + public virtual int Id { get; private set; } + public virtual T Father { get; set; } + public virtual T Mother { get; set; } + public virtual ISet<T> Childs + { + get { return childs; } + set { childs = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Stateless/Naturalness.hbm.xml 2009-03-18 13:30:33 UTC (rev 4144) @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Stateless" + default-access="backfield" + default-lazy="false"> + + <class name="Animal" abstract="true"> + <id name="Id"> + <generator class="hilo"/> + </id> + <discriminator column="kind"/> + <property name="Description"/> + + <subclass name="Reptile"> + <property name="BodyTemperature"/> + </subclass> + + <subclass name="Human"> + <property name="Name"/> + <property name="NickName"/> + <property name="Birthdate" type="Date"/> + </subclass> + </class> + + <class name="Family`1[[Reptile]]" entity-name="ReptilesFamily" + table="Families" discriminator-value="Reptile" where="familyKind = 'Reptile'"> + <id name="Id"> + <generator class="hilo"/> + </id> + <discriminator column="familyKind"/> + <many-to-one name="Father" class="Reptile" cascade="all"/> + <many-to-one name="Mother" class="Reptile" cascade="all"/> + <set name="Childs" cascade="all" access="property"> + <key column="familyId"/> + <one-to-many class="Reptile"/> + </set> + </class> + + <class name="Family`1[[Human]]" entity-name="HumanFamily" + table="Families" discriminator-value="Human" where="familyKind = 'Human'"> + <id name="Id"> + <generator class="hilo"/> + </id> + <discriminator column="familyKind"/> + <many-to-one name="Father" class="Human" cascade="all"/> + <many-to-one name="Mother" class="Human" cascade="all"/> + <set name="Childs" cascade="all" access="property"> + <key column="familyId"/> + <one-to-many class="Human"/> + </set> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessWithRelationsFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessWithRelationsFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessWithRelationsFixture.cs 2009-03-18 13:30:33 UTC (rev 4144) @@ -0,0 +1,91 @@ +using System.Collections; +using Iesi.Collections.Generic; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using System.Collections.Generic; + +namespace NHibernate.Test.Stateless +{ + [TestFixture] + public class StatelessWithRelationsFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] { "Stateless.Naturalness.hbm.xml" }; } + } + + [Test] + public void ShouldWorkLoadingComplexEntities() + { + const string crocodileFather = "Crocodile father"; + const string crocodileMother = "Crocodile mother"; + + using (ISession s = sessions.OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + var rf = new Reptile { Description = crocodileFather }; + var rm = new Reptile { Description = crocodileMother }; + var rc1 = new Reptile { Description = "Crocodile" }; + var rc2 = new Reptile { Description = "Crocodile" }; + var rfamily = new Family<Reptile> + { + Father = rf, + Mother = rm, + Childs = new HashedSet<Reptile> { rc1, rc2 } + }; + s.Save("ReptilesFamily", rfamily); + tx.Commit(); + } + + const string humanFather = "Fred"; + const string humanMother = "Wilma"; + using (ISession s = sessions.OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + var hf = new Human { Description = "Flinstone", Name = humanFather }; + var hm = new Human { Description = "Flinstone", Name = humanMother }; + var hc1 = new Human { Description = "Flinstone", Name = "Pebbles" }; + var hfamily = new Family<Human> + { + Father = hf, + Mother = hm, + Childs = new HashedSet<Human> { hc1 } + }; + s.Save("HumanFamily", hfamily); + tx.Commit(); + } + + using (IStatelessSession s = sessions.OpenStatelessSession()) + using (ITransaction tx = s.BeginTransaction()) + { + IList<Family<Human>> hf = s.CreateQuery("from HumanFamily").List<Family<Human>>(); + Assert.That(hf.Count, Is.EqualTo(1)); + Assert.That(hf[0].Father.Name, Is.EqualTo(humanFather)); + Assert.That(hf[0].Mother.Name, Is.EqualTo(humanMother)); + Assert.That(hf[0].Childs, Is.Null, "Collections should be ignored by stateless session."); + + IList<Family<Reptile>> rf = s.CreateQuery("from ReptilesFamily").List<Family<Reptile>>(); + Assert.That(rf.Count, Is.EqualTo(1)); + Assert.That(rf[0].Father.Description, Is.EqualTo(crocodileFather)); + Assert.That(rf[0].Mother.Description, Is.EqualTo(crocodileMother)); + Assert.That(rf[0].Childs, Is.Null, "Collections should be ignored by stateless session."); + + tx.Commit(); + } + + using (ISession s = sessions.OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from HumanFamily"); + s.Delete("from ReptilesFamily"); + tx.Commit(); + } + } + + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2009-03-22 17:56:22
|
Revision: 4150 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4150&view=rev Author: ayenderahien Date: 2009-03-22 17:56:16 +0000 (Sun, 22 Mar 2009) Log Message: ----------- Renaming file to match class name. Adding ignored failing test Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/FutureCriteriaFixture.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs 2009-03-22 17:56:16 UTC (rev 4150) @@ -0,0 +1,119 @@ +using System; +using System.Data; +using System.Data.SqlClient; +using System.Threading; +using System.Transactions; +using NHibernate.Criterion; +using NHibernate.Dialect; +using NHibernate.Exceptions; +using NHibernate.Impl; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.DtcFailures +{ + using System.Collections; + + [TestFixture] + public class DtcFailuresFixture : TestCase + { + + protected override IList Mappings + { + get { return new string[] { "NHSpecificTest.DtcFailures.Mappings.hbm.xml" }; } + } + + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + [Test] + public void WillNotCrashOnDtcPrepareFailure() + { + var tx = new TransactionScope(); + using (var s = sessions.OpenSession()) + { + s.Save(new Person + { + CreatedAt = DateTime.MinValue // will cause SQL date failure + }); + } + + new ForceEscalationToDistributedTx(); + + tx.Complete(); + try + { + tx.Dispose(); + Assert.Fail("Expected failure"); + } + catch (AssertionException) + { + throw; + } + catch (Exception) + { + } + } + + [Test] + public void CanDeleteItemInDtc() + { + object id; + using (var tx = new TransactionScope()) + using (var s = sessions.OpenSession()) + { + id = s.Save(new Person + { + CreatedAt = DateTime.Today + }); + + new ForceEscalationToDistributedTx(); + + tx.Complete(); + } + + using (var tx = new TransactionScope()) + using (var s = sessions.OpenSession()) + { + new ForceEscalationToDistributedTx(); + + s.Delete(s.Get<Person>(id)); + + tx.Complete(); + } + + } + + public class ForceEscalationToDistributedTx : IEnlistmentNotification + { + private readonly int thread; + public ForceEscalationToDistributedTx() + { + thread = Thread.CurrentThread.ManagedThreadId; + System.Transactions.Transaction.Current.EnlistDurable(Guid.NewGuid(), this, EnlistmentOptions.None); + } + + public void Prepare(PreparingEnlistment preparingEnlistment) + { + Assert.AreNotEqual(thread, Thread.CurrentThread.ManagedThreadId); + preparingEnlistment.Prepared(); + } + + public void Commit(Enlistment enlistment) + { + enlistment.Done(); + } + + public void Rollback(Enlistment enlistment) + { + enlistment.Done(); + } + + public void InDoubt(Enlistment enlistment) + { + enlistment.Done(); + } + } + } +} Deleted: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/FutureCriteriaFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/FutureCriteriaFixture.cs 2009-03-22 14:21:03 UTC (rev 4149) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/FutureCriteriaFixture.cs 2009-03-22 17:56:16 UTC (rev 4150) @@ -1,90 +0,0 @@ -using System; -using System.Data; -using System.Data.SqlClient; -using System.Threading; -using System.Transactions; -using NHibernate.Criterion; -using NHibernate.Dialect; -using NHibernate.Exceptions; -using NHibernate.Impl; -using NUnit.Framework; - -namespace NHibernate.Test.NHSpecificTest.DtcFailures -{ - using System.Collections; - - [TestFixture] - public class DtcFailuresFixture : TestCase - { - - protected override IList Mappings - { - get { return new string[] { "NHSpecificTest.DtcFailures.Mappings.hbm.xml" }; } - } - - protected override string MappingsAssembly - { - get { return "NHibernate.Test"; } - } - - [Test] - public void WillNotCrashOnDtcPrepareFailure() - { - var tx = new TransactionScope(); - using (var s = sessions.OpenSession()) - { - s.Save(new Person - { - CreatedAt = DateTime.MinValue // will cause SQL date failure - }); - } - - new ForceEscalationToDistributedTx(); - - tx.Complete(); - try - { - tx.Dispose(); - Assert.Fail("Expected failure"); - } - catch (AssertionException) - { - throw; - } - catch (Exception) - { - } - } - - public class ForceEscalationToDistributedTx : IEnlistmentNotification - { - private readonly int thread; - public ForceEscalationToDistributedTx() - { - thread = Thread.CurrentThread.ManagedThreadId; - System.Transactions.Transaction.Current.EnlistDurable(Guid.NewGuid(), this, EnlistmentOptions.None); - } - - public void Prepare(PreparingEnlistment preparingEnlistment) - { - Assert.AreNotEqual(thread, Thread.CurrentThread.ManagedThreadId); - preparingEnlistment.Prepared(); - } - - public void Commit(Enlistment enlistment) - { - enlistment.Done(); - } - - public void Rollback(Enlistment enlistment) - { - enlistment.Done(); - } - - public void InDoubt(Enlistment enlistment) - { - enlistment.Done(); - } - } - } -} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-22 14:21:03 UTC (rev 4149) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-22 17:56:16 UTC (rev 4150) @@ -292,7 +292,7 @@ <Compile Include="GenericTest\SetGeneric\SetGenericFixture.cs" /> <Compile Include="HQL\Animal.cs" /> <Compile Include="HQL\BaseFunctionFixture.cs" /> - <Compile Include="NHSpecificTest\DtcFailures\FutureCriteriaFixture.cs" /> + <Compile Include="NHSpecificTest\DtcFailures\DtcFailuresFixture.cs" /> <Compile Include="NHSpecificTest\DtcFailures\Person.cs" /> <Compile Include="NHSpecificTest\NH1694\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1706\Domain.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2009-03-24 11:56:33
|
Revision: 4153 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4153&view=rev Author: ayenderahien Date: 2009-03-24 11:56:15 +0000 (Tue, 24 Mar 2009) Log Message: ----------- enhancing test case error reporting adding passing test for NH-1709, but I don't think it reproduces the error well Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs trunk/nhibernate/src/NHibernate.Test/TestCase.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs 2009-03-24 11:27:18 UTC (rev 4152) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/DtcFailures/DtcFailuresFixture.cs 2009-03-24 11:56:15 UTC (rev 4153) @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Threading; @@ -57,6 +58,31 @@ } [Test] + public void Can_roll_back_transaction() + { + var tx = new TransactionScope(); + using (var s = sessions.OpenSession()) + { + new ForceEscalationToDistributedTx(true);//will rollback tx + s.Save(new Person + { + CreatedAt = DateTime.Today + }); + + tx.Complete(); + } + try + { + tx.Dispose(); + Assert.Fail("Expected tx abort"); + } + catch (TransactionAbortedException) + { + //expected + } + } + + [Test] public void CanDeleteItemInDtc() { object id; @@ -87,17 +113,28 @@ public class ForceEscalationToDistributedTx : IEnlistmentNotification { + private readonly bool shouldRollBack; private readonly int thread; - public ForceEscalationToDistributedTx() + + public ForceEscalationToDistributedTx(bool shouldRollBack) { + this.shouldRollBack = shouldRollBack; thread = Thread.CurrentThread.ManagedThreadId; System.Transactions.Transaction.Current.EnlistDurable(Guid.NewGuid(), this, EnlistmentOptions.None); } + public ForceEscalationToDistributedTx():this(false) + { + + } + public void Prepare(PreparingEnlistment preparingEnlistment) { Assert.AreNotEqual(thread, Thread.CurrentThread.ManagedThreadId); - preparingEnlistment.Prepared(); + if (shouldRollBack) + preparingEnlistment.ForceRollback(); + else + preparingEnlistment.Prepared(); } public void Commit(Enlistment enlistment) Modified: trunk/nhibernate/src/NHibernate.Test/TestCase.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TestCase.cs 2009-03-24 11:27:18 UTC (rev 4152) +++ trunk/nhibernate/src/NHibernate.Test/TestCase.cs 2009-03-24 11:56:15 UTC (rev 4153) @@ -123,7 +123,8 @@ if (fail) { - Assert.Fail("Test didn't clean up after itself"); + Assert.Fail("Test didn't clean up after itself. session closed: " + wasClosed + " database cleaned: "+ wasCleaned + + " connection closed: " + wereConnectionsClosed); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-03-28 22:24:43
|
Revision: 4161 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4161&view=rev Author: fabiomaulo Date: 2009-03-28 22:24:39 +0000 (Sat, 28 Mar 2009) Log Message: ----------- The NH-1688 was fixed in some moment in the trunk. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/DomainClass.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/DomainClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/DomainClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/DomainClass.cs 2009-03-28 22:24:39 UTC (rev 4161) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.NHSpecificTest.NH1688 +{ + public class DomainClass + { + public int Id { get; set; } + + public bool BooleanData { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Fixture.cs 2009-03-28 22:24:39 UTC (rev 4161) @@ -0,0 +1,68 @@ +using System.Collections; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1688 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void UsingExpression() + { + TestAction(criteria => criteria.Add(Restrictions.Eq("alias.BooleanData", true))); + } + + [Test] + public void UsingExpressionProjection() + { + TestAction(criteria => criteria.Add(Restrictions.Eq(Projections.Property("alias.BooleanData"), true))); + } + + [Test] + public void UsingExpressionFunctionProjection() + { + TestAction(criteria => criteria.Add(Restrictions.Eq( + Projections.Conditional( + Restrictions.Eq(Projections.Property("alias.BooleanData"), true), + Projections.Property("alias.BooleanData"), + Projections.Constant(false)), + false) + )); + } + + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + var entity = new DomainClass {Id = 1, BooleanData = true}; + session.Save(entity); + session.Flush(); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + using (ISession session = OpenSession()) + { + session.Delete("from DomainClass"); + session.Flush(); + } + } + + public void TestAction(System.Action<DetachedCriteria> action) + { + using (ISession session = OpenSession()) + { + DetachedCriteria criteria = DetachedCriteria.For<NH1679.DomainClass>("alias"); + + action.Invoke(criteria); + + IList l = criteria.GetExecutableCriteria(session).List(); + Assert.AreNotEqual(l, null); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1688/Mappings.hbm.xml 2009-03-28 22:24:39 UTC (rev 4161) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1688" + default-lazy="false"> + + <class name="DomainClass"> + <id name="Id"> + <generator class="assigned" /> + </id> + <property name="BooleanData" /> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-28 22:10:37 UTC (rev 4160) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-28 22:24:39 UTC (rev 4161) @@ -294,6 +294,8 @@ <Compile Include="HQL\BaseFunctionFixture.cs" /> <Compile Include="NHSpecificTest\DtcFailures\DtcFailuresFixture.cs" /> <Compile Include="NHSpecificTest\DtcFailures\Person.cs" /> + <Compile Include="NHSpecificTest\NH1688\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1688\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1693\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1693\Model.cs" /> <Compile Include="NHSpecificTest\NH1694\Fixture.cs" /> @@ -1700,6 +1702,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1688\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1700\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1693\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1710\WithColumnNode.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dar...@us...> - 2009-03-29 16:21:55
|
Revision: 4169 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4169&view=rev Author: darioquintana Date: 2009-03-29 16:21:04 +0000 (Sun, 29 Mar 2009) Log Message: ----------- passed test to verify NH-1716. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/ClassA.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Mappings.hbm.xml Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/ClassA.cs (from rev 4166, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/ClassA.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/ClassA.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/ClassA.cs 2009-03-29 16:21:04 UTC (rev 4169) @@ -0,0 +1,10 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1716 +{ + public class ClassA + { + public virtual int Id { get; set; } + public virtual TimeSpan Time { get; set; } + } +} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Fixture.cs (from rev 4166, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Fixture.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Fixture.cs 2009-03-29 16:21:04 UTC (rev 4169) @@ -0,0 +1,91 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1716 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnTearDown() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from ClassA"); + tx.Commit(); + } + } + + [Test] + public void TimeSpanLargerThan24h() + { + var time = new TimeSpan(2, 2, 1, 0); + var entity = new ClassA {Time = time}; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(entity); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + Assert.AreEqual(time, s.Get<ClassA>(entity.Id).Time); + } + } + + [Test] + public void TimeSpanLargerThan2h() + { + var time = new TimeSpan(0, 2, 1, 0); + var entity = new ClassA {Time = time}; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(entity); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + Assert.AreEqual(time, s.Get<ClassA>(entity.Id).Time); + } + } + + [Test] + public void TimeSpanNegative() + { + TimeSpan time = TimeSpan.FromDays(-1); + var entity = new ClassA {Time = time}; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(entity); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + Assert.AreEqual(time, s.Get<ClassA>(entity.Id).Time); + } + } + + [Test] + public void VerifyDaysShouldBeZeroInSmallTimeSpan() + { + var time = new TimeSpan(1, 0, 0); + var entity = new ClassA {Time = time}; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(entity); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + Assert.AreEqual(0, s.Get<ClassA>(entity.Id).Time.Days); + } + } + } +} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Mappings.hbm.xml (from rev 4167, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Mappings.hbm.xml) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1716/Mappings.hbm.xml 2009-03-29 16:21:04 UTC (rev 4169) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> + +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1716" + assembly="NHibernate.Test"> + + <class name="ClassA"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Time"/> <!-- as default this should be mapped to TimeSpan --> + </class> + +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-29 16:08:46 UTC (rev 4168) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-29 16:21:04 UTC (rev 4169) @@ -316,6 +316,8 @@ </Compile> <Compile Include="NHSpecificTest\NH1715\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1715\ClassA.cs" /> + <Compile Include="NHSpecificTest\NH1716\ClassA.cs" /> + <Compile Include="NHSpecificTest\NH1716\Fixture.cs" /> <Compile Include="NHSpecificTest\NH645\HQLFunctionFixture.cs" /> <Compile Include="HQL\HQLFunctions.cs" /> <Compile Include="HQL\Human.cs" /> @@ -1708,6 +1710,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1716\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\Dates\Mappings\TimeAsTimeSpan.hbm.xml" /> <EmbeddedResource Include="TypesTest\CurrencyClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1635\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-04-02 04:26:40
|
Revision: 4173 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4173&view=rev Author: fabiomaulo Date: 2009-04-02 04:26:33 +0000 (Thu, 02 Apr 2009) Log Message: ----------- Additional tests about QueryCache Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/AnotherItem.cs trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/Item.hbm.xml Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/QueryCacheFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-04-01 19:02:59 UTC (rev 4172) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-04-02 04:26:33 UTC (rev 4173) @@ -969,6 +969,7 @@ <Compile Include="QueryTest\PositionalParametersFixture.cs" /> <Compile Include="QueryTest\QueryParametersFixture.cs" /> <Compile Include="ReflectionOptimizerTest\LcgFixture.cs" /> + <Compile Include="SecondLevelCacheTest\QueryCacheFixture.cs" /> <Compile Include="SqlTest\Custom\CustomSQLSupportTest.cs" /> <Compile Include="SqlTest\Custom\CustomStoredProcSupportTest.cs" /> <Compile Include="SqlTest\Custom\MySQL\MySQLTest.cs" /> Modified: trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/AnotherItem.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/AnotherItem.cs 2009-04-01 19:02:59 UTC (rev 4172) +++ trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/AnotherItem.cs 2009-04-02 04:26:33 UTC (rev 4173) @@ -4,6 +4,7 @@ { private int id; private string name; + private string description= string.Empty; public AnotherItem() { @@ -26,5 +27,11 @@ get { return name; } set { name = value; } } + + public virtual string Description + { + get { return description; } + set { description = value; } + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/Item.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/Item.hbm.xml 2009-04-01 19:02:59 UTC (rev 4172) +++ trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/Item.hbm.xml 2009-04-02 04:26:33 UTC (rev 4173) @@ -24,5 +24,10 @@ <generator class="assigned"/> </id> <property name="Name"/> + <property name="Description"/> </class> + + <query name="Stat" cacheable="true" read-only ="true" cache-region="Statistics"> + select ai.Name, count(*) from AnotherItem ai group by ai.Name + </query> </hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/QueryCacheFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/QueryCacheFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/SecondLevelCacheTest/QueryCacheFixture.cs 2009-04-02 04:26:33 UTC (rev 4173) @@ -0,0 +1,318 @@ +using System; +using System.Collections; +using System.Threading; +using NHibernate.Stat; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using NHibernate.Transform; + +namespace NHibernate.Test.SecondLevelCacheTests +{ + [TestFixture] + public class ScalarQueryFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] { "SecondLevelCacheTest.Item.hbm.xml" }; } + } + + protected override void Configure(Cfg.Configuration configuration) + { + configuration.SetProperty(Cfg.Environment.GenerateStatistics, "true"); + } + + public void FillDb(int startId) + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + for (int i = startId; i < startId + 10; i++) + { + s.Save(new AnotherItem { Id = i, Name = (i / 2).ToString() }); + } + tx.Commit(); + } + } + + public void CleanUp() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from AnotherItem"); + tx.Commit(); + } + } + + [Test] + public void ShouldHitCacheUsingNamedQueryWithProjection() + { + FillDb(1); + sessions.Statistics.Clear(); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.GetNamedQuery("Stat").List(); + tx.Commit(); + } + + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(1)); + Assert.That(sessions.Statistics.QueryCachePutCount, Is.EqualTo(1)); + Assert.That(sessions.Statistics.QueryCacheHitCount, Is.EqualTo(0)); + + sessions.Statistics.Clear(); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.GetNamedQuery("Stat").List(); + tx.Commit(); + } + + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(0)); + Assert.That(sessions.Statistics.QueryCacheHitCount, Is.EqualTo(1)); + + sessions.Statistics.LogSummary(); + CleanUp(); + } + + [Test] + public void ShouldHitCacheUsingQueryWithProjection() + { + FillDb(1); + sessions.Statistics.Clear(); + + int resultCount; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + resultCount = + s.CreateQuery("select ai.Name, count(*) from AnotherItem ai group by ai.Name").SetCacheable(true).SetCacheRegion( + "Statistics").List().Count; + tx.Commit(); + } + + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(1)); + Assert.That(sessions.Statistics.QueryCachePutCount, Is.EqualTo(1)); + Assert.That(sessions.Statistics.QueryCacheHitCount, Is.EqualTo(0)); + + sessions.Statistics.Clear(); + + int secondResultCount; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + secondResultCount = s.CreateQuery("select ai.Name, count(*) from AnotherItem ai group by ai.Name") + .SetCacheable(true).SetCacheRegion("Statistics").List().Count; + tx.Commit(); + } + + Assert.That(sessions.Statistics.QueryExecutionCount, Is.EqualTo(0)); + Assert.That(sessions.Statistics.QueryCacheHitCount, Is.EqualTo(1)); + Assert.That(secondResultCount, Is.EqualTo(resultCount)); + + sessions.Statistics.LogSummary(); + CleanUp(); + } + + [Test] + public void QueryCacheInvalidation() + { + sessions.EvictQueries(); + sessions.Statistics.Clear(); + + const string queryString = "from Item i where i.Name='widget'"; + + object savedId = CreateItem(queryString); + + QueryStatistics qs = sessions.Statistics.GetQueryStatistics(queryString); + EntityStatistics es = sessions.Statistics.GetEntityStatistics(typeof(Item).FullName); + + Thread.Sleep(200); + + IList result; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + result = s.CreateQuery(queryString).SetCacheable(true).List(); + Assert.That(result.Count, Is.EqualTo(1)); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(0)); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + result = s.CreateQuery(queryString).SetCacheable(true).List(); + Assert.That(result.Count, Is.EqualTo(1)); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(1)); + Assert.That(es.FetchCount, Is.EqualTo(0)); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + result = s.CreateQuery(queryString).SetCacheable(true).List(); + Assert.That(result.Count, Is.EqualTo(1)); + Assert.That(NHibernateUtil.IsInitialized(result[0])); + var i = (Item)result[0]; + i.Name = "Widget"; + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(2)); + Assert.That(qs.CacheMissCount, Is.EqualTo(2)); + Assert.That(es.FetchCount, Is.EqualTo(0)); + + Thread.Sleep(200); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).List(); + + var i = s.Get<Item>(savedId); + Assert.That(i.Name, Is.EqualTo("Widget")); + + s.Delete(i); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(2)); + Assert.That(qs.CacheMissCount, Is.EqualTo(3)); + Assert.That(qs.CachePutCount, Is.EqualTo(3)); + Assert.That(qs.ExecutionCount, Is.EqualTo(3)); + Assert.That(es.FetchCount, Is.EqualTo(0)); //check that it was being cached + } + + private object CreateItem(string queryString) + { + object savedId; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).List(); + var i = new Item { Name = "widget" }; + savedId = s.Save(i); + tx.Commit(); + } + return savedId; + } + + [Test] + public void SimpleProjections() + { + var transformer = new CustomTrasformer(); + sessions.EvictQueries(); + sessions.Statistics.Clear(); + + const string queryString = "select i.Name, i.Description from AnotherItem i where i.Name='widget'"; + + object savedId; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).List(); + var i = new AnotherItem { Name = "widget" }; + savedId = s.Save(i); + tx.Commit(); + } + + QueryStatistics qs = sessions.Statistics.GetQueryStatistics(queryString); + EntityStatistics es = sessions.Statistics.GetEntityStatistics(typeof(AnotherItem).FullName); + + Thread.Sleep(200); + + IList result; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).List(); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(0)); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).List(); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(1)); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).SetResultTransformer(transformer).List(); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(1), "hit count should not go up since we are adding a resulttransformer"); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).SetResultTransformer(transformer).List(); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(2), "hit count should go up since we are using the same resulttransformer"); + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + result = s.CreateQuery(queryString).SetCacheable(true).List(); + Assert.That(result.Count, Is.EqualTo(1)); + var i = s.Get<AnotherItem>(savedId); + i.Name = "Widget"; + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(3)); + Assert.That(qs.CacheMissCount, Is.EqualTo(3)); + + Thread.Sleep(200); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.CreateQuery(queryString).SetCacheable(true).List(); + + var i = s.Get<AnotherItem>(savedId); + Assert.That(i.Name, Is.EqualTo("Widget")); + + s.Delete(i); + tx.Commit(); + } + + Assert.That(qs.CacheHitCount, Is.EqualTo(3)); + Assert.That(qs.CacheMissCount, Is.EqualTo(4)); + Assert.That(qs.CachePutCount, Is.EqualTo(4)); + Assert.That(qs.ExecutionCount, Is.EqualTo(4)); + Assert.That(es.FetchCount, Is.EqualTo(0)); //check that it was being cached + } + + public class CustomTrasformer: IResultTransformer + { + public object TransformTuple(object[] tuple, string[] aliases) + { + return new AnotherItem {Name = tuple[0].ToString(), Description = tuple[1].ToString()}; + } + + public IList TransformList(IList collection) + { + return collection; + } + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-04-22 22:56:26
|
Revision: 4201 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4201&view=rev Author: fabiomaulo Date: 2009-04-22 22:56:16 +0000 (Wed, 22 Apr 2009) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs trunk/nhibernate/src/NHibernate.Test/QueryTest/NamedParametersFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-04-22 22:12:41 UTC (rev 4200) +++ trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-04-22 22:56:16 UTC (rev 4201) @@ -661,7 +661,7 @@ hql = "select cast(7+123.3-1*a.BodyWeight as int) from Animal a group by cast(7+123.3-1*a.BodyWeight as int) having cast(7+123.3-1*a.BodyWeight as int)>0"; l = s.CreateQuery(hql).List(); Assert.AreEqual(1, l.Count); - Assert.AreEqual(129, l[0]); + Assert.AreEqual((int)(7 + 123.3 - 1 * 1.3d), l[0]); // Rendered in HAVING using a property and named param (NOT SUPPORTED) try Modified: trunk/nhibernate/src/NHibernate.Test/QueryTest/NamedParametersFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/QueryTest/NamedParametersFixture.cs 2009-04-22 22:12:41 UTC (rev 4200) +++ trunk/nhibernate/src/NHibernate.Test/QueryTest/NamedParametersFixture.cs 2009-04-22 22:56:16 UTC (rev 4201) @@ -1,6 +1,7 @@ using System; using System.Collections; using NUnit.Framework; +using NHibernate.Hql.Ast.ANTLR; namespace NHibernate.Test.QueryTest { @@ -41,16 +42,22 @@ /// Verifying that a <see langword="null" /> value passed into SetParameter(name, val) throws /// an exception /// </summary> - [Test, ExpectedException(typeof(ArgumentNullException))] + [Test] public void TestNullNamedParameter() { + if (sessions.Settings.QueryTranslatorFactory is ASTQueryTranslatorFactory) + { + Assert.Ignore("Not supported; The AST parser can guess the type."); + } ISession s = OpenSession(); try { - IQuery q = s.CreateQuery("from Simple as s where s.Name=:Name"); - q.SetParameter("Name", null); + IQuery q = s.CreateQuery("from Simple as s where s.Name=:pName"); + q.SetParameter("pName", null); + Assert.Fail("should throw if can't guess the type of parameter"); } + catch (ArgumentNullException) {} finally { s.Close(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-04-24 06:17:32
|
Revision: 4209 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4209&view=rev Author: fabiomaulo Date: 2009-04-24 06:17:30 +0000 (Fri, 24 Apr 2009) Log Message: ----------- - Minor (reformatting) - Added methods to apply a test for a specific QueryTranslator Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs trunk/nhibernate/src/NHibernate.Test/TestCase.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2009-04-23 20:31:58 UTC (rev 4208) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2009-04-24 06:17:30 UTC (rev 4209) @@ -2,7 +2,6 @@ using NHibernate.Hql.Ast.ANTLR; using System.Collections.Generic; using NHibernate.Util; -using NUnit.Framework; namespace NHibernate.Test.HQL.Ast { @@ -10,12 +9,9 @@ { private readonly IDictionary<string, IFilter> emptyfilters = new CollectionHelper.EmptyMapClass<string, IFilter>(); - protected override void OnSetUp() + protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) { - if (!(sessions.Settings.QueryTranslatorFactory is ASTQueryTranslatorFactory)) - { - Assert.Ignore("ASTQueryTranslator specific test"); - } + return sessions.Settings.QueryTranslatorFactory is ASTQueryTranslatorFactory; } #region Overrides of TestCase Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2009-04-23 20:31:58 UTC (rev 4208) +++ trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2009-04-24 06:17:30 UTC (rev 4209) @@ -514,19 +514,20 @@ { if (!(Dialect is FirebirdDialect)) { - if (IsClassicParser) - { - list = - s.CreateQuery("from foo in class NHibernate.DomainModel.Foo where ? = some foo.Component.ImportantDates.elements") - .SetDateTime(0, DateTime.Today).List(); - - } - else - { - list = - s.CreateQuery("from foo in class NHibernate.DomainModel.Foo where ? = some elements(foo.Component.ImportantDates)") - .SetDateTime(0, DateTime.Today).List(); - } + if (IsClassicParser) + { + list = + s.CreateQuery("from foo in class NHibernate.DomainModel.Foo where ? = some foo.Component.ImportantDates.elements") + .SetDateTime(0, DateTime.Today).List(); + + } + else + { + list = + s.CreateQuery( + "from foo in class NHibernate.DomainModel.Foo where ? = some elements(foo.Component.ImportantDates)"). + SetDateTime(0, DateTime.Today).List(); + } Assert.AreEqual(2, list.Count, "component query"); } @@ -601,18 +602,19 @@ IsEmpty(s.CreateQuery("from bar in class Bar where bar.String='a string' or bar.String='a string'").Enumerable() )); - if (IsClassicParser) - { - enumerable = s.CreateQuery( - "select foo.Component.Name, foo.Component.ImportantDates.elements from foo in class Foo where foo.TheFoo.id=?" - ).SetString(0, foo.TheFoo.Key).Enumerable(); - } - else - { - enumerable = s.CreateQuery( - "select foo.Component.Name, elements(foo.Component.ImportantDates) from foo in class Foo where foo.TheFoo.id=?" - ).SetString(0, foo.TheFoo.Key).Enumerable(); - } + if (IsClassicParser) + { + enumerable = s.CreateQuery( + "select foo.Component.Name, foo.Component.ImportantDates.elements from foo in class Foo where foo.TheFoo.id=?" + ).SetString(0, foo.TheFoo.Key).Enumerable(); + } + else + { + enumerable = + s.CreateQuery( + "select foo.Component.Name, elements(foo.Component.ImportantDates) from foo in class Foo where foo.TheFoo.id=?"). + SetString(0, foo.TheFoo.Key).Enumerable(); + } int i = 0; foreach (object[] row in enumerable) @@ -623,18 +625,18 @@ } Assert.AreEqual(3, i); //WAS: 4 - if (IsClassicParser) - { - enumerable = s.CreateQuery( - "select max(foo.Component.ImportantDates.elements) from foo in class Foo group by foo.id" - ).Enumerable(); - } - else - { - enumerable = s.CreateQuery( - "select max(elements(foo.Component.ImportantDates)) from foo in class Foo group by foo.id" - ).Enumerable(); - } + if (IsClassicParser) + { + enumerable = s.CreateQuery( + "select max(foo.Component.ImportantDates.elements) from foo in class Foo group by foo.id" + ).Enumerable(); + } + else + { + enumerable = + s.CreateQuery("select max(elements(foo.Component.ImportantDates)) from foo in class Foo group by foo.id"). + Enumerable(); + } IEnumerator enumerator = enumerable.GetEnumerator(); Assert.IsTrue(enumerator.MoveNext()); @@ -838,18 +840,18 @@ "from Baz baz where 'a' in elements(baz.CollectionComponent.Nested.Foos) and 1.0 in elements(baz.CollectionComponent.Nested.Floats)") .List(); - if (IsClassicParser) - { - s.CreateQuery( - "from Baz baz where 'b' in baz.CollectionComponent.Nested.Foos.elements and 1.0 in baz.CollectionComponent.Nested.Floats.elements") - .List(); - } - else - { - s.CreateQuery( - "from Baz baz where 'b' in elements(baz.CollectionComponent.Nested.Foos) and 1.0 in elements(baz.CollectionComponent.Nested.Floats)") - .List(); - } + if (IsClassicParser) + { + s.CreateQuery( + "from Baz baz where 'b' in baz.CollectionComponent.Nested.Foos.elements and 1.0 in baz.CollectionComponent.Nested.Floats.elements") + .List(); + } + else + { + s.CreateQuery( + "from Baz baz where 'b' in elements(baz.CollectionComponent.Nested.Foos) and 1.0 in elements(baz.CollectionComponent.Nested.Floats)") + .List(); + } } s.CreateQuery("from Foo foo join foo.TheFoo where foo.TheFoo in ('1','2','3')").List(); @@ -2441,16 +2443,10 @@ s.CreateQuery(hql).List(); } - if (IsClassicParser) - { - hql = "select fum1.Friends.elements from fum1 in class Fum"; - } - else - { - hql = "select elements(fum1.Friends) from fum1 in class Fum"; - } - s.CreateQuery(hql).List(); + hql = IsClassicParser ? "select fum1.Friends.elements from fum1 in class Fum" : "select elements(fum1.Friends) from fum1 in class Fum"; + s.CreateQuery(hql).List(); + hql = "from fum1 in class Fum, fr in elements( fum1.Friends )"; s.CreateQuery(hql).List(); @@ -2579,14 +2575,14 @@ Assert.AreEqual(1, s.CreateQuery("from Bar bar join bar.Baz.FooArray foo").List().Count); - if (IsClassicParser) - { - Assert.AreEqual(0, s.CreateQuery("from bar in class Bar, foo in bar.Baz.FooSet.elements").List().Count); - } - else - { - Assert.AreEqual(0, s.CreateQuery("from bar in class Bar, foo in elements(bar.Baz.FooSet)").List().Count); - } + if (IsClassicParser) + { + Assert.AreEqual(0, s.CreateQuery("from bar in class Bar, foo in bar.Baz.FooSet.elements").List().Count); + } + else + { + Assert.AreEqual(0, s.CreateQuery("from bar in class Bar, foo in elements(bar.Baz.FooSet)").List().Count); + } Assert.AreEqual(1, s.CreateQuery("from bar in class Bar, foo in elements( bar.Baz.FooArray )").List().Count); @@ -2615,14 +2611,10 @@ Assert.IsTrue(enumer.MoveNext()); Assert.AreSame(baz, enumer.Current); - if (IsClassicParser) - { - enumer = s.CreateQuery("select baz.StringArray.elements from baz in class Baz").Enumerable().GetEnumerator(); - } - else - { - enumer = s.CreateQuery("select elements(baz.StringArray) from baz in class Baz").Enumerable().GetEnumerator(); - } + enumer = IsClassicParser + ? s.CreateQuery("select baz.StringArray.elements from baz in class Baz").Enumerable().GetEnumerator() + : s.CreateQuery("select elements(baz.StringArray) from baz in class Baz").Enumerable().GetEnumerator(); + bool found = false; while (enumer.MoveNext()) { @@ -2635,28 +2627,21 @@ baz.StringArray = null; s.CreateQuery("from baz in class Baz").Enumerable(); // no flush - if (IsClassicParser) - { - enumer = s.CreateQuery("select baz.StringArray.elements from baz in class Baz").Enumerable().GetEnumerator(); - } - else - { - enumer = s.CreateQuery("select elements(baz.StringArray) from baz in class Baz").Enumerable().GetEnumerator(); - } + + enumer = IsClassicParser + ? s.CreateQuery("select baz.StringArray.elements from baz in class Baz").Enumerable().GetEnumerator() + : s.CreateQuery("select elements(baz.StringArray) from baz in class Baz").Enumerable().GetEnumerator(); + Assert.IsFalse(enumer.MoveNext()); baz.StringList.Add("1E1"); enumer = s.CreateQuery("from foo in class Foo").Enumerable().GetEnumerator(); // no flush Assert.IsFalse(enumer.MoveNext()); - if (IsClassicParser) - { - enumer = s.CreateQuery("select baz.StringList.elements from baz in class Baz").Enumerable().GetEnumerator(); - } - else - { - enumer = s.CreateQuery("select elements(baz.StringList) from baz in class Baz").Enumerable().GetEnumerator(); - } + enumer = IsClassicParser + ? s.CreateQuery("select baz.StringList.elements from baz in class Baz").Enumerable().GetEnumerator() + : s.CreateQuery("select elements(baz.StringList) from baz in class Baz").Enumerable().GetEnumerator(); + found = false; while (enumer.MoveNext()) { @@ -2668,23 +2653,19 @@ Assert.IsTrue(found); baz.StringList.Remove("1E1"); - if (IsClassicParser) - { - s.CreateQuery("select baz.StringArray.elements from baz in class Baz").Enumerable(); //no flush - } - else - { - s.CreateQuery("select elements(baz.StringArray) from baz in class Baz").Enumerable(); //no flush - } + if (IsClassicParser) + { + s.CreateQuery("select baz.StringArray.elements from baz in class Baz").Enumerable(); //no flush + } + else + { + s.CreateQuery("select elements(baz.StringArray) from baz in class Baz").Enumerable(); //no flush + } - if (IsClassicParser) - { - enumer = s.CreateQuery("select baz.StringList.elements from baz in class Baz").Enumerable().GetEnumerator(); - } - else - { - enumer = s.CreateQuery("select elements(baz.StringList) from baz in class Baz").Enumerable().GetEnumerator(); - } + enumer = IsClassicParser + ? s.CreateQuery("select baz.StringList.elements from baz in class Baz").Enumerable().GetEnumerator() + : s.CreateQuery("select elements(baz.StringList) from baz in class Baz").Enumerable().GetEnumerator(); + found = false; while (enumer.MoveNext()) { @@ -2702,14 +2683,11 @@ s.CreateQuery("from foo in class Foo").Enumerable().GetEnumerator(); //no flush baz.StringList = null; - if (IsClassicParser) - { - enumer = s.CreateQuery("select baz.StringList.elements from baz in class Baz").Enumerable().GetEnumerator(); - } - else - { - enumer = s.CreateQuery("select elements(baz.StringList) from baz in class Baz").Enumerable().GetEnumerator(); - } + + enumer = IsClassicParser + ? s.CreateQuery("select baz.StringList.elements from baz in class Baz").Enumerable().GetEnumerator() + : s.CreateQuery("select elements(baz.StringList) from baz in class Baz").Enumerable().GetEnumerator(); + Assert.IsFalse(enumer.MoveNext()); s.Delete(baz); @@ -2764,20 +2742,20 @@ // disable this for dbs with no subselects if (Dialect.SupportsSubSelects) { - if (IsClassicParser) - { - list = - s.CreateQuery( - "select foo from foo in class NHibernate.DomainModel.Foo, baz in class NHibernate.DomainModel.Baz where foo in baz.FooArray.elements and 3 = some baz.IntArray.elements and 4 > all baz.IntArray.indices") - .List(); - } - else - { - list = - s.CreateQuery( - "select foo from foo in class NHibernate.DomainModel.Foo, baz in class NHibernate.DomainModel.Baz where foo in elements(baz.FooArray) and 3 = some elements(baz.IntArray) and 4 > all indices(baz.IntArray)") - .List(); - } + if (IsClassicParser) + { + list = + s.CreateQuery( + "select foo from foo in class NHibernate.DomainModel.Foo, baz in class NHibernate.DomainModel.Baz where foo in baz.FooArray.elements and 3 = some baz.IntArray.elements and 4 > all baz.IntArray.indices") + .List(); + } + else + { + list = + s.CreateQuery( + "select foo from foo in class NHibernate.DomainModel.Foo, baz in class NHibernate.DomainModel.Baz where foo in elements(baz.FooArray) and 3 = some elements(baz.IntArray) and 4 > all indices(baz.IntArray)") + .List(); + } Assert.AreEqual(2, list.Count, "collection.elements find"); } @@ -2785,29 +2763,25 @@ // sapdb doesn't like distinct with binary type //if( !(dialect is Dialect.SAPDBDialect) ) //{ - if (IsClassicParser) - { - list = - s.CreateQuery("select distinct foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements").List - (); - } - else - { - list = - s.CreateQuery("select distinct foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooArray)").List - (); - } + if (IsClassicParser) + { + list = + s.CreateQuery("select distinct foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements").List + (); + } + else + { + list = + s.CreateQuery("select distinct foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooArray)"). + List(); + } Assert.AreEqual(2, list.Count, "collection.elements find"); //} - if (IsClassicParser) - { - list = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooSet.elements").List(); - } - else - { - list = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooSet)").List(); - } + list = IsClassicParser + ? s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooSet.elements").List() + : s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooSet)").List(); + Assert.AreEqual(1, list.Count, "association.elements find"); txn.Commit(); @@ -5022,20 +4996,20 @@ baz = (Baz) s.Load(typeof(Baz), baz.Code); baz.StringArray[0] = "bark"; - IEnumerator e; + IEnumerator e; - if (IsClassicParser) - { - e = s.CreateQuery("select baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } - else - { - e = s.CreateQuery("select elements(baz.StringArray) from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } + if (IsClassicParser) + { + e = + s.CreateQuery("select baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz").Enumerable(). + GetEnumerator(); + } + else + { + e = + s.CreateQuery("select elements(baz.StringArray) from baz in class NHibernate.DomainModel.Baz").Enumerable(). + GetEnumerator(); + } bool found = false; while (e.MoveNext()) @@ -5048,33 +5022,33 @@ Assert.IsTrue(found); baz.StringArray = null; - if (IsClassicParser) - { - e = s.CreateQuery("select distinct baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } - else - { - e = s.CreateQuery("select distinct elements(baz.StringArray) from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } + if (IsClassicParser) + { + e = s.CreateQuery("select distinct baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz") + .Enumerable() + .GetEnumerator(); + } + else + { + e = + s.CreateQuery("select distinct elements(baz.StringArray) from baz in class NHibernate.DomainModel.Baz").Enumerable() + .GetEnumerator(); + } Assert.IsFalse(e.MoveNext()); baz.StringArray = new string[] {"foo", "bar"}; - if (IsClassicParser) - { - e = s.CreateQuery("select baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } - else - { - e = s.CreateQuery("select elements(baz.StringArray) from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } + if (IsClassicParser) + { + e = s.CreateQuery("select baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz") + .Enumerable() + .GetEnumerator(); + } + else + { + e = + s.CreateQuery("select elements(baz.StringArray) from baz in class NHibernate.DomainModel.Baz").Enumerable(). + GetEnumerator(); + } Assert.IsTrue(e.MoveNext()); Foo foo = new Foo(); @@ -5082,18 +5056,18 @@ s.Flush(); baz.FooArray = new Foo[] {foo}; - if (IsClassicParser) - { - e = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements") - .Enumerable() - .GetEnumerator(); - } - else - { - e = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooArray)") - .Enumerable() - .GetEnumerator(); - } + if (IsClassicParser) + { + e = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements") + .Enumerable() + .GetEnumerator(); + } + else + { + e = + s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooArray)").Enumerable() + .GetEnumerator(); + } found = false; while (e.MoveNext()) { @@ -5106,61 +5080,66 @@ baz.FooArray[0] = null; - if (IsClassicParser) - { - e = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements") - .Enumerable() - .GetEnumerator(); - } - else - { - e = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooArray)") - .Enumerable() - .GetEnumerator(); - } + if (IsClassicParser) + { + e = s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements") + .Enumerable() + .GetEnumerator(); + } + else + { + e = + s.CreateQuery("select foo from baz in class NHibernate.DomainModel.Baz, foo in elements(baz.FooArray)").Enumerable() + .GetEnumerator(); + } Assert.IsFalse(e.MoveNext()); baz.FooArray[0] = foo; - if (IsClassicParser) - { - e = s.CreateQuery("select baz.FooArray.elements from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } - else - { - e = s.CreateQuery("select elements(baz.FooArray) from baz in class NHibernate.DomainModel.Baz") - .Enumerable() - .GetEnumerator(); - } + if (IsClassicParser) + { + e = s.CreateQuery("select baz.FooArray.elements from baz in class NHibernate.DomainModel.Baz") + .Enumerable() + .GetEnumerator(); + } + else + { + e = + s.CreateQuery("select elements(baz.FooArray) from baz in class NHibernate.DomainModel.Baz").Enumerable(). + GetEnumerator(); + } Assert.IsTrue(e.MoveNext()); if (Dialect.SupportsSubSelects && !(Dialect is FirebirdDialect)) { baz.FooArray[0] = null; - if (IsClassicParser) - { - e = s.CreateQuery("from baz in class NHibernate.DomainModel.Baz where ? in baz.FooArray.elements") - .SetEntity(0, foo).Enumerable().GetEnumerator(); - } - else - { - e = s.CreateQuery("from baz in class NHibernate.DomainModel.Baz where ? in elements(baz.FooArray)") - .SetEntity(0, foo).Enumerable().GetEnumerator(); - } + if (IsClassicParser) + { + e = s.CreateQuery("from baz in class NHibernate.DomainModel.Baz where ? in baz.FooArray.elements") + .SetEntity(0, foo).Enumerable().GetEnumerator(); + } + else + { + e = + s.CreateQuery("from baz in class NHibernate.DomainModel.Baz where ? in elements(baz.FooArray)").SetEntity(0, foo). + Enumerable().GetEnumerator(); + } Assert.IsFalse(e.MoveNext()); baz.FooArray[0] = foo; - if (IsClassicParser) - { - e = s.CreateQuery("select foo from foo in class NHibernate.DomainModel.Foo where foo in " - + "(select elt from baz in class NHibernate.DomainModel.Baz, elt in baz.FooArray.elements)").Enumerable().GetEnumerator(); - } - else - { - e = s.CreateQuery("select foo from foo in class NHibernate.DomainModel.Foo where foo in " - + "(select elt from baz in class NHibernate.DomainModel.Baz, elt in elements(baz.FooArray))").Enumerable().GetEnumerator(); - } + if (IsClassicParser) + { + e = + s.CreateQuery("select foo from foo in class NHibernate.DomainModel.Foo where foo in " + + "(select elt from baz in class NHibernate.DomainModel.Baz, elt in baz.FooArray.elements)"). + Enumerable().GetEnumerator(); + } + else + { + e = + s.CreateQuery("select foo from foo in class NHibernate.DomainModel.Foo where foo in " + + "(select elt from baz in class NHibernate.DomainModel.Baz, elt in elements(baz.FooArray))"). + Enumerable().GetEnumerator(); + } Assert.IsTrue(e.MoveNext()); } s.Delete(foo); Modified: trunk/nhibernate/src/NHibernate.Test/TestCase.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TestCase.cs 2009-04-23 20:31:58 UTC (rev 4208) +++ trunk/nhibernate/src/NHibernate.Test/TestCase.cs 2009-04-24 06:17:30 UTC (rev 4209) @@ -11,6 +11,8 @@ using NHibernate.Tool.hbm2ddl; using NHibernate.Type; using NUnit.Framework; +using NHibernate.Hql.Classic; +using NHibernate.Hql.Ast.ANTLR; namespace NHibernate.Test { @@ -27,15 +29,28 @@ get { return NHibernate.Dialect.Dialect.GetDialect(cfg.Properties); } } - protected bool IsClassicParser - { - get - { - return cfg.Properties[Cfg.Environment.QueryTranslator] == - typeof(NHibernate.Hql.Classic.ClassicQueryTranslatorFactory).FullName; - } - } + /// <summary> + /// To use in in-line test + /// </summary> + protected bool IsClassicParser + { + get + { + return sessions.Settings.QueryTranslatorFactory is ClassicQueryTranslatorFactory; + } + } + /// <summary> + /// To use in in-line test + /// </summary> + protected bool IsAntlrParser + { + get + { + return sessions.Settings.QueryTranslatorFactory is ASTQueryTranslatorFactory; + } + } + protected ISession lastOpenedSession; private DebugConnectionProvider connectionProvider; @@ -74,6 +89,12 @@ CreateSchema(); BuildSessionFactory(); + if (!AppliesTo(sessions)) + { + DropSchema(); + Cleanup(); + Assert.Ignore(GetType() + " does not apply with the current session-factory configuration"); + } } catch (Exception e) { @@ -223,7 +244,10 @@ private void Cleanup() { - sessions.Close(); + if (sessions != null) + { + sessions.Close(); + } sessions = null; connectionProvider = null; lastOpenedSession = null; @@ -318,6 +342,11 @@ return true; } + protected virtual bool AppliesTo(ISessionFactoryImplementor factory) + { + return true; + } + protected virtual void Configure(Configuration configuration) { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-04-24 06:46:42
|
Revision: 4211 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4211&view=rev Author: fabiomaulo Date: 2009-04-24 06:46:40 +0000 (Fri, 24 Apr 2009) Log Message: ----------- Fix with the same fix of NH-1742 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Model.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Fixture.cs 2009-04-24 06:46:40 UTC (rev 4211) @@ -0,0 +1,76 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1727 +{ + [TestFixture] + public class Fixture : BugTestCase + { + /* To the commiter + * I'm using sql2005dialect + * From what I've read there's been some diffucalties with this + * dialect before when used parameter queries. + * The first test (xxx_DoesNotWorkToday) passed in NH 2.0 + * The second test passes where I've just switched the order in the where clause + */ + + + [Test] + public void VerifyFilterAndInAndProperty_DoesNotWorkToday() + { + const string hql = @"select a from ClassA a + where a.Value in (:aValues) + and a.Name=:name"; + ClassB b = new ClassB(); + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Save(b); + t.Commit(); + } + using (ISession s = OpenSession()) + { + s.EnableFilter("bEquals").SetParameter("b", b.Id); + s.CreateQuery(hql) + .SetString("name", "Sweden") + .SetParameterList("aValues", new[] { 1, 3, 4 }) + .List<ClassA>(); + } + } + + + [Test] + public void VerifyFilterAndInAndProperty_WorksToday() + { + const string hql = @"select a from ClassA a + where a.Name=:name + and a.Value in (:aValues)"; + ClassB b = new ClassB(); + using(ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Save(b); + t.Commit(); + } + using(ISession s = OpenSession()) + { + s.EnableFilter("bEquals").SetParameter("b", b.Id); + s.CreateQuery(hql) + .SetString("name", "Sweden") + .SetParameterList("aValues", new []{1,3,4}) + .List<ClassA>(); + } + } + + protected override void OnTearDown() + { + using(ISession s = OpenSession()) + using(ITransaction t = s.BeginTransaction()) + { + s.Delete("from ClassB"); + s.Delete("from ClassA"); + t.Commit(); + } + } + + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Mappings.hbm.xml 2009-04-24 06:46:40 UTC (rev 4211) @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1727" + assembly="NHibernate.Test"> + <class name="ClassA"> + <id name="Id"> + <generator class="guid.comb"/> + </id> + <bag name="BCollection"> + <key column="classA"/> + <one-to-many class="ClassB"/> + </bag> + <many-to-one name="B" + class="ClassB"/> + + <property name="Name"/> + <property name="Value" /> + + <filter name="bEquals" + condition=":b = B"/> + </class> + + <class name="ClassB"> + <id name="Id"> + <generator class="guid.comb"/> + </id> + </class> + + <filter-def name="bEquals"> + <filter-param name="b" + type="guid"/> + </filter-def> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1727/Model.cs 2009-04-24 06:46:40 UTC (rev 4211) @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1727 +{ + public class ClassA + { + public virtual Guid Id { get; set; } + public virtual IList<ClassB> BCollection { get; set; } + public virtual string Name { get; set; } + public virtual int Value { get; set; } + public virtual ClassB B {get;set;} + } + + public class ClassB + { + public virtual Guid Id { get; set; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-04-24 06:40:17 UTC (rev 4210) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-04-24 06:46:40 UTC (rev 4211) @@ -324,6 +324,8 @@ <Compile Include="NHSpecificTest\NH1715\ClassA.cs" /> <Compile Include="NHSpecificTest\NH1716\ClassA.cs" /> <Compile Include="NHSpecificTest\NH1716\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1727\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1727\Model.cs" /> <Compile Include="NHSpecificTest\NH1741\Domain.cs" /> <Compile Include="NHSpecificTest\NH1741\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1742\DomainClass.cs" /> @@ -1721,6 +1723,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1727\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1742\Mappings.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\SimpleClass.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\TestQueries.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-03 14:22:26
|
Revision: 4227 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4227&view=rev Author: fabiomaulo Date: 2009-05-03 13:43:03 +0000 (Sun, 03 May 2009) Log Message: ----------- Starting port of AST tests (at least for BulkUpdates) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast" + default-access="field"> + + <class name="Animal"> + <id name="id"> + <generator class="native"/> + </id> + <property name="description"/> + <property name="bodyWeight" column="body_weight"/> + <many-to-one name="mother" column="mother_id"/> + <many-to-one name="father" column="father_id"/> + <many-to-one name="zoo" column="zoo_id"/> + <property name="serialNumber"/> + <set name="offspring" order-by="father_id"> + <key column="mother_id"/> + <one-to-many class="Animal"/> + </set> + <joined-subclass name="Reptile"> + <key column="animal"/> + <property name="bodyTemperature"/> + <joined-subclass name="Lizard"> + <key column="reptile"/> + </joined-subclass> + </joined-subclass> + <joined-subclass name="Mammal"> + <key column="animal"/> + <property name="pregnant"/> + <property name="birthdate" type="date"/> + <joined-subclass name="DomesticAnimal"> + <key column="mammal"/> + <many-to-one name="owner"/> + <joined-subclass name="Cat"> + <key column="mammal"/> + </joined-subclass> + <joined-subclass name="Dog"> + <key column="mammal"/> + </joined-subclass> + </joined-subclass> + <joined-subclass name="Human"> + <key column="mammal"/> + <component name="name"> + <property name="first" column="name_first"/> + <property name="initial" column="name_initial"/> + <property name="last" column="name_last"/> + </component> + <property name="nickName"/> + <property name="height"/> + + <property name="intValue"/> + <property name="floatValue"/> + <property name="bigDecimalValue"/> + <property name="bigIntegerValue"/> + + <bag name="friends"> + <key column="human1"/> + <many-to-many column="human2" class="Human"/> + </bag> + <map name="family"> + <key column="human1"/> + <map-key column="relationship" type="string"/> + <many-to-many column="human2" class="Human"/> + </map> + <bag name="pets" inverse="true"> + <key column="owner"/> + <one-to-many class="DomesticAnimal"/> + </bag> + <set name="nickNames" lazy="false" table="human_nick_names" sort="natural"> + <key column="human"/> + <element column="nick_name" type="string" not-null="true"/> + </set> + <map name="addresses" table="addresses"> + <key column="human"/> + <map-key type="string" column="type"/> + <composite-element class="Address"> + <property name="street"/> + <property name="city"/> + <property name="postalCode"/> + <property name="country"/> + <many-to-one name="stateProvince" column="state_prov_id" class="StateProvince"/> + </composite-element> + </map> + </joined-subclass> + </joined-subclass> + </class> + + <class name="User" table="`User`"> + <id name="id"> + <generator class="foreign"> + <param name="property">human</param> + </generator> + </id> + <property name="userName"/> + <one-to-one name="human" constrained="true"/> + <list name="permissions"> + <key column="userId"/> + <list-index column="permissionId"/> + <element type="string" column="permissionName"/> + </list> + </class> + + <class name="Zoo" discriminator-value="Z"> + <id name="id"> + <generator class="native"/> + </id> + <discriminator column="zooType" type="character"/> + <property name="name" type="string"/> + <property name="classification" type="org.hibernate.test.hql.ClassificationType"/> + <map name="mammals"> + <key column="mammalZoo_id"/> + <index type="string" column="name"/> + <one-to-many class="Mammal"/> + </map> + <map name="animals" inverse="true"> + <key column="zoo_id"/> + <index type="string" column="serialNumber"/> + <one-to-many class="Animal"/> + </map> + <component name="address" class="Address"> + <property name="street"/> + <property name="city"/> + <property name="postalCode"/> + <property name="country"/> + <many-to-one name="stateProvince" column="state_prov_id" class="StateProvince"/> + </component> + <subclass name="PettingZoo" discriminator-value="P"/> + </class> + + <class name="StateProvince"> + <id name="id"> + <generator class="native"/> + </id> + <property name="name"/> + <property name="isoCode"/> + </class> + + <class name="Joiner"> + <id name="id"> + <generator class="native"/> + </id> + <property name="name"/> + <join table="JOINED"> + <key column="ID"/> + <property name="joinedName"/> + </join> + </class> + +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2009-05-03 12:37:55 UTC (rev 4226) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2009-05-03 13:43:03 UTC (rev 4227) @@ -2,6 +2,7 @@ using NHibernate.Hql.Ast.ANTLR; using System.Collections.Generic; using NHibernate.Util; +using NHibernate.Hql.Classic; namespace NHibernate.Test.HQL.Ast { @@ -11,7 +12,7 @@ protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) { - return sessions.Settings.QueryTranslatorFactory is ASTQueryTranslatorFactory; + return !(sessions.Settings.QueryTranslatorFactory is ClassicQueryTranslatorFactory); } #region Overrides of TestCase Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast"> + + <class name="BooleanLiteralEntity"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="YesNoBoolean" column="Y_N_BOOL" type="yes_no"/> + <property name="TrueFalseBoolean" column="T_F_BOOL" type="true_false"/> + <property name="ZeroOneBoolean" column="NUM_BOOL" type="boolean"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,15 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class BulkManipulation: BaseFixture + { + // "hql/Animal.hbm.xml", + // "hql/Vehicle.hbm.xml", + // "hql/KeyManyToOneEntity.hbm.xml", + // "hql/Versions.hbm.xml", + //"hql/FooBarCopy.hbm.xml", + //"legacy/Multi.hbm.xml", + //"hql/EntityWithCrazyCompositeKey.hbm.xml", + //"hql/SimpleEntityWithAssociation.hbm.xml", + //"hql/BooleanLiteralEntity.hbm.xml" + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast"> + + <class name="EntityWithCrazyCompositeKey"> + <composite-id name="Id" class="CrazyCompositeKey"> + <key-property name="Id" column="id"/> + <key-property name="OtherId" column="other_id"/> + </composite-id> + <property name="Name"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast" + default-lazy="false"> + + <!-- a slightly modified copy of FooBar.hbm.xml from the legacy test package --> + + <class + name="Foo" + table="`foos`" + proxy="FooProxy" + discriminator-value="F" + batch-size="4" + dynamic-insert="true" + dynamic-update="true" + select-before-update="true"> + + <id name="key" type="string"> + <column name="`foo_idcolumnname123`" length="36"/> + <generator class="uuid.hex"> + <param name="seperator">:</param> + </generator> + </id> + + <discriminator column="`foo_subclass_1234`" type="character" force="true"/> + <version name="version"/> + + <many-to-one name="foo" class="Foo"> + <column name="foo" length="36" index="fbmtoidx"/> + </many-to-one> + + <property name="long"> + <column name="long_" index="fbmtoidx" unique-key="abc" not-null="true"/> + </property> + <property name="integer"> + <column name="`integer__`" unique-key="abc" not-null="true"/> + </property> + <property name="float"> + <column name="float_" unique-key="abc" not-null="true" check="float_ > 0.0"/> + </property> + <property name="x"/> + <property name="double" column="double_"/> + + <primitive-array name="bytes" table="foobytes"> + <key column="id"/> + <index column="i"/> + <element column="byte_" type="byte"/> + </primitive-array> + + <property name="date" type="date" column="date_"/> + <property name="timestamp" type="timestamp" column="timestamp_"/> + <property name="boolean" column="boolean_"/> + <property name="bool" column="bool_"/> + <property name="null" column="null_"/> + <property name="short" column="short_"/> + <property name="char" column="char_"/> + <property name="zero" column="zero_"/> + <property name="int" column="int_"/> + <property name="string"> + <column name="string_" length="48" index="fbstridx"/> + </property> + <property name="byte" column="byte_"/> + <property name="yesno" type="yes_no"/> + <property name="blob" type="org.hibernate.test.legacy.Foo$Struct" column="blobb_"/> + <property name="nullBlob" type="serializable"/> + <property name="binary" column="bin_"/> + <property name="theLocale" access="field" column="`localeayzabc123`"/> + + <property name="formula" formula="int_/2"/> + + <property name="custom" type="org.hibernate.test.legacy.DoubleStringType" access="field"> + <column name="first_name" length="66"/> + <column name="surname" length="66"/> + </property> + <component name="nullComponent"> + <property name="name" column="null_cmpnt_"/> + </component> + + <join table="jointable"> + <key column="fooid" on-delete="cascade"/> + <property name="joinedProp"/> + </join> + + <subclass + name="Trivial" + proxy="FooProxy" + discriminator-value="T"/> + + <subclass + name="Abstract" + proxy="AbstractProxy" + discriminator-value="null"> + <set name="abstracts" batch-size="2"> + <key column="abstract_id"/> + <one-to-many class="Abstract"/> + </set> + <property name="time" column="the_time"/> + + <subclass + name="Bar" + proxy="BarProxy" + discriminator-value="B"> + <property name="barString"> + <column name="bar_string" length="24"/> + </property> + <any name="object" meta-type="character" id-type="long" cascade="all"> + <meta-value value="O" class="One"/> + <meta-value value="M" class="Many"/> + <column name="clazz" length="100"/> + <column name="gen_id"/> + </any> + <join table="bar_join_table"> + <key column="bar_id"/> + <property name="name" column="name_name"/> + </join> + </subclass> + </subclass> + </class> + + <class name="One" table="one"> + <id name="key" column="one_key"> + <generator class="native" /> + </id> + <property name="x"/> + <property column="one_value" name="value"/> + </class> + + <class name="Many" table="many"> + <id name="key" column="many_key"> + <generator class="native" /> + </id> + <property name="x"/> + </class> + +</hibernate-mapping> + Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast"> + + <class name="KeyManyToOneKeyEntity"> + <id name="id" type="long" access="field" > + <generator class="native"/> + </id> + <property name="Name" type="string"/> + </class> + + <class name="KeyManyToOneEntity"> + <composite-id name="id" access="field" class="KeyManyToOneEntity$Id" unsaved-value="undefined" > + <key-many-to-one name="key1" class="KeyManyToOneKeyEntity" /> + <key-property name="key2" type="string"/> + </composite-id> + <property name="Name" type="string"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast" + default-lazy="false"> + + <class + name="org.hibernate.test.legacy.Top" + table="rootclass" + dynamic-insert="true" + dynamic-update="true" + select-before-update="true" + where="id1_ is not null"> + <!--cache--> + <id name="id" type="long" column="id1_" unsaved-value="0"> + <generator class="native"/> + </id> + <version name="count" column="count_"/> + <property name="name"/> + <property name="address"/> + <property name="date" column="date_"/> + <many-to-one name="top" access="field" column="top_"/> + + <joined-subclass name="org.hibernate.test.legacy.TrivialClass"> + <key column="tcid"/> + </joined-subclass> + + <joined-subclass + name="org.hibernate.test.legacy.Lower" + table="leafsubclass" + dynamic-insert="true" + dynamic-update="true"> + <key column="id__"/> + <property name="intprop" not-null="true"/> + <one-to-one name="other" class="org.hibernate.test.legacy.Lower"/> + <many-to-one name="another" column="other1" class="org.hibernate.test.legacy.Top"/> + <many-to-one name="yetanother" column="other3" class="org.hibernate.test.legacy.Lower"/> + <property name="foo"/> + <set name="set" lazy="false"> + <key column="parent"/> + <one-to-many class="org.hibernate.test.legacy.Top"/> + </set> + <bag name="bag" lazy="true" table="simple_simple"> + <key column="simple1"/> + <many-to-many column="simple2" class="org.hibernate.test.legacy.Top"/> + </bag> + <one-to-one name="mypo"/> + </joined-subclass> + + <joined-subclass name="org.hibernate.test.legacy.Multi" table="nonleafsubclass"> + <key column="sid" on-delete="cascade"/> + <property name="extraProp" column="dupe"/> + <many-to-one name="other" column="other2" class="org.hibernate.test.legacy.Multi" /> + <many-to-one name="po"/> + <property name="derived" formula="upper(dupe)"/> + + <component name="comp" class="org.hibernate.test.legacy.Multi$Component"> + <property name="cal"/> + <property name="floaty"/> + </component> + + <joined-subclass name="org.hibernate.test.legacy.SubMulti" table="leafsubsubclass"> + <key column="sid"/> + <property name="amount" column="dupe"/> + <bag name="children" lazy="true" inverse="true"> + <key column="parent"/> + <one-to-many class="org.hibernate.test.legacy.SubMulti"/> + </bag> + <many-to-one name="parent"/> + <list name="moreChildren" lazy="true"> + <key column="another_parent"/> + <index column="list_ind"/> + <one-to-many class="org.hibernate.test.legacy.SubMulti"/> + </list> + </joined-subclass> + + </joined-subclass> + + </class> + + <class + name="org.hibernate.test.legacy.Po" + dynamic-insert="true"> + <id type="long" column="id_"> + <generator class="native"/> + </id> + <property name="value" column="value_"/> + <list name="list" cascade="all"> + <key column="list_po"/> + <index column="i"/> + <one-to-many class="org.hibernate.test.legacy.SubMulti"/> + </list> + <set name="set" inverse="true" cascade="all"> + <key column="po"/> + <one-to-many class="org.hibernate.test.legacy.Multi"/> + </set> + <many-to-one name="top" column="tl" insert="false" update="false"/> + <many-to-one name="lower" column="tl"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast"> + + <!-- *Very* important for the test cases that these entities have identically named columns! --> + + <class name="SimpleEntityWithAssociation" table="SIMPLE_1"> + <id name="Id" column="ID" type="long"> + <generator class="native"/> + </id> + <property name="Name" column="NAME" type="string"/> + <set name="AssociatedEntities" cascade="all" inverse="true" lazy="true"> + <key column="SIMPLE_1_ID"/> + <one-to-many class="SimpleAssociatedEntity"/> + </set> + <set name="ManyToManyAssociatedEntities" cascade="save-update" inverse="false" lazy="true" table="MANY_TO_MANY"> + <key column="IN_ID"/> + <many-to-many class="SimpleEntityWithAssociation" column="OUT_ID"/> + </set> + </class> + + <class name="SimpleAssociatedEntity" table="SIMPLE_2"> + <id name="Id" column="ID" type="long"> + <generator class="native"/> + </id> + <property name="Name" column="NAME" type="string" /> + <many-to-one name="Owner" class="SimpleEntityWithAssociation" column="SIMPLE_1_ID"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast"> + + <!-- Vehicle represents an abstract root of a union-subclass hierarchy --> + <class name="Vehicle" abstract="true"> + <id name="id" access="field" type="long"> + <generator class="increment"/> + </id> + <property name="Vin" type="string"/> + <property name="Owner" type="string"/> + + <!-- Car represents a concrete leaf of a union-subclass hierarchy with no concrete super --> + <union-subclass name="Car"/> + + <!-- Truck represents a concrete subclass in a union-subclass hierarchy with concrete subclasses and no concrete super --> + <union-subclass name="Truck"> + <!-- Both SUV and Pickup represent concrete leaf of a union-subclass hierarchy (like Car), but with a concrete super --> + <union-subclass name="SUV"/> + <union-subclass name="Pickup"/> + </union-subclass> + </class> + + <sql-query name="native-delete-car"> + <synchronize table="Car"/> + delete from CAR where owner = ? + </sql-query> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.HQL.Ast" + default-access="field"> + + <class name="IntegerVersioned"> + <id name="id"> + <generator class="native"/> + </id> + <version name="version" column="vers"/> + <property name="name"/> + </class> + + <class name="TimestampVersioned"> + <id name="id"> + <generator class="native"/> + </id> + <timestamp name="version" column="vers"/> + <property name="name"/> + </class> + +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-03 12:37:55 UTC (rev 4226) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-03 13:43:03 UTC (rev 4227) @@ -293,6 +293,7 @@ <Compile Include="GenericTest\SetGeneric\SetGenericFixture.cs" /> <Compile Include="HQL\Animal.cs" /> <Compile Include="HQL\Ast\BaseFixture.cs" /> + <Compile Include="HQL\Ast\BulkManipulation.cs" /> <Compile Include="HQL\Ast\ParsingFixture.cs" /> <Compile Include="HQL\Ast\SimpleClass.cs" /> <Compile Include="HQL\Ast\SqlTranslationFixture.cs" /> @@ -1724,6 +1725,15 @@ <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <Content Include="HQL\Ast\Animal.hbm.xml" /> + <Content Include="HQL\Ast\BooleanLiteralEntity.hbm.xml" /> + <Content Include="HQL\Ast\EntityWithCrazyCompositeKey.hbm.xml" /> + <Content Include="HQL\Ast\FooBarCopy.hbm.xml" /> + <Content Include="HQL\Ast\KeyManyToOneEntity.hbm.xml" /> + <Content Include="HQL\Ast\Multi.hbm.xml" /> + <Content Include="HQL\Ast\SimpleEntityWithAssociation.hbm.xml" /> + <Content Include="HQL\Ast\Vehicle.hbm.xml" /> + <Content Include="HQL\Ast\Versions.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1727\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1742\Mappings.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\SimpleClass.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-03 22:24:56
|
Revision: 4228 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4228&view=rev Author: fabiomaulo Date: 2009-05-03 22:24:46 +0000 (Sun, 03 May 2009) Log Message: ----------- Port of classes and mappings for AST tests (at least for BulkUpdates) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Address.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Classification.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/CrazyCompositeKey.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/DomesticAnimal.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Human.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/IntegerVersioned.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Joiner.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneKeyEntity.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Mammal.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Name.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Reptile.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/StateProvince.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/TimestampVersioned.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/User.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicles.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Zoo.cs Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Address.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Address.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Address.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,41 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class Address + { + private string street; + private string city; + private string postalCode; + private string country; + private StateProvince stateProvince; + + public string Street + { + get { return street; } + set { street = value; } + } + + public string City + { + get { return city; } + set { city = value; } + } + + public string PostalCode + { + get { return postalCode; } + set { postalCode = value; } + } + + public string Country + { + get { return country; } + set { country = value; } + } + + public StateProvince StateProvince + { + get { return stateProvince; } + set { stateProvince = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,64 @@ +using Iesi.Collections; + +namespace NHibernate.Test.HQL.Ast +{ + public class Animal + { + private long id; + private float bodyWeight; + private ISet offspring; + private Animal mother; + private Animal father; + private string description; + private Zoo zoo; + private string serialNumber; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual float BodyWeight + { + get { return bodyWeight; } + set { bodyWeight = value; } + } + + public virtual ISet Offspring + { + get { return offspring; } + set { offspring = value; } + } + + public virtual Animal Mother + { + get { return mother; } + set { mother = value; } + } + + public virtual Animal Father + { + get { return father; } + set { father = value; } + } + + public virtual string Description + { + get { return description; } + set { description = value; } + } + + public virtual Zoo Zoo + { + get { return zoo; } + set { zoo = value; } + } + + public virtual string SerialNumber + { + get { return serialNumber; } + set { serialNumber = value; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Animal.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -3,148 +3,148 @@ assembly="NHibernate.Test" namespace="NHibernate.Test.HQL.Ast" default-access="field"> - - <class name="Animal"> - <id name="id"> - <generator class="native"/> - </id> - <property name="description"/> - <property name="bodyWeight" column="body_weight"/> - <many-to-one name="mother" column="mother_id"/> - <many-to-one name="father" column="father_id"/> - <many-to-one name="zoo" column="zoo_id"/> - <property name="serialNumber"/> - <set name="offspring" order-by="father_id"> - <key column="mother_id"/> - <one-to-many class="Animal"/> - </set> - <joined-subclass name="Reptile"> - <key column="animal"/> - <property name="bodyTemperature"/> - <joined-subclass name="Lizard"> - <key column="reptile"/> - </joined-subclass> - </joined-subclass> - <joined-subclass name="Mammal"> - <key column="animal"/> - <property name="pregnant"/> - <property name="birthdate" type="date"/> - <joined-subclass name="DomesticAnimal"> - <key column="mammal"/> - <many-to-one name="owner"/> - <joined-subclass name="Cat"> - <key column="mammal"/> - </joined-subclass> - <joined-subclass name="Dog"> - <key column="mammal"/> - </joined-subclass> - </joined-subclass> - <joined-subclass name="Human"> - <key column="mammal"/> - <component name="name"> - <property name="first" column="name_first"/> - <property name="initial" column="name_initial"/> - <property name="last" column="name_last"/> - </component> - <property name="nickName"/> - <property name="height"/> - - <property name="intValue"/> - <property name="floatValue"/> - <property name="bigDecimalValue"/> - <property name="bigIntegerValue"/> - - <bag name="friends"> - <key column="human1"/> - <many-to-many column="human2" class="Human"/> - </bag> - <map name="family"> - <key column="human1"/> - <map-key column="relationship" type="string"/> - <many-to-many column="human2" class="Human"/> - </map> - <bag name="pets" inverse="true"> - <key column="owner"/> - <one-to-many class="DomesticAnimal"/> - </bag> - <set name="nickNames" lazy="false" table="human_nick_names" sort="natural"> - <key column="human"/> - <element column="nick_name" type="string" not-null="true"/> - </set> - <map name="addresses" table="addresses"> - <key column="human"/> - <map-key type="string" column="type"/> - <composite-element class="Address"> - <property name="street"/> - <property name="city"/> - <property name="postalCode"/> - <property name="country"/> - <many-to-one name="stateProvince" column="state_prov_id" class="StateProvince"/> - </composite-element> - </map> - </joined-subclass> - </joined-subclass> - </class> - - <class name="User" table="`User`"> - <id name="id"> - <generator class="foreign"> - <param name="property">human</param> - </generator> - </id> - <property name="userName"/> - <one-to-one name="human" constrained="true"/> - <list name="permissions"> - <key column="userId"/> - <list-index column="permissionId"/> - <element type="string" column="permissionName"/> - </list> - </class> - - <class name="Zoo" discriminator-value="Z"> - <id name="id"> - <generator class="native"/> - </id> - <discriminator column="zooType" type="character"/> - <property name="name" type="string"/> - <property name="classification" type="org.hibernate.test.hql.ClassificationType"/> - <map name="mammals"> - <key column="mammalZoo_id"/> - <index type="string" column="name"/> - <one-to-many class="Mammal"/> - </map> - <map name="animals" inverse="true"> - <key column="zoo_id"/> - <index type="string" column="serialNumber"/> - <one-to-many class="Animal"/> - </map> - <component name="address" class="Address"> - <property name="street"/> - <property name="city"/> - <property name="postalCode"/> - <property name="country"/> - <many-to-one name="stateProvince" column="state_prov_id" class="StateProvince"/> - </component> - <subclass name="PettingZoo" discriminator-value="P"/> - </class> - - <class name="StateProvince"> - <id name="id"> - <generator class="native"/> - </id> - <property name="name"/> - <property name="isoCode"/> - </class> - - <class name="Joiner"> - <id name="id"> - <generator class="native"/> - </id> - <property name="name"/> - <join table="JOINED"> - <key column="ID"/> - <property name="joinedName"/> - </join> - </class> - + + <class name="Animal"> + <id name="id"> + <generator class="native"/> + </id> + <property name="description"/> + <property name="bodyWeight" column="body_weight"/> + <many-to-one name="mother" column="mother_id"/> + <many-to-one name="father" column="father_id"/> + <many-to-one name="zoo" column="zoo_id"/> + <property name="serialNumber"/> + <set name="offspring" order-by="father_id"> + <key column="mother_id"/> + <one-to-many class="Animal"/> + </set> + <joined-subclass name="Reptile"> + <key column="animal"/> + <property name="bodyTemperature"/> + <joined-subclass name="Lizard"> + <key column="reptile"/> + </joined-subclass> + </joined-subclass> + <joined-subclass name="Mammal"> + <key column="animal"/> + <property name="pregnant"/> + <property name="birthdate" type="date"/> + <joined-subclass name="DomesticAnimal"> + <key column="mammal"/> + <many-to-one name="owner"/> + <joined-subclass name="Cat"> + <key column="mammal"/> + </joined-subclass> + <joined-subclass name="Dog"> + <key column="mammal"/> + </joined-subclass> + </joined-subclass> + <joined-subclass name="Human"> + <key column="mammal"/> + <component name="name"> + <property name="first" column="name_first"/> + <property name="initial" column="name_initial"/> + <property name="last" column="name_last"/> + </component> + <property name="nickName"/> + <property name="height"/> + + <property name="intValue"/> + <property name="floatValue"/> + <property name="bigDecimalValue"/> + <property name="bigIntegerValue"/> + + <bag name="friends"> + <key column="human1"/> + <many-to-many column="human2" class="Human"/> + </bag> + <map name="family"> + <key column="human1"/> + <map-key column="relationship" type="string"/> + <many-to-many column="human2" class="Human"/> + </map> + <bag name="pets" inverse="true"> + <key column="owner"/> + <one-to-many class="DomesticAnimal"/> + </bag> + <set name="nickNames" lazy="false" table="human_nick_names" sort="natural"> + <key column="human"/> + <element column="nick_name" type="string" not-null="true"/> + </set> + <map name="addresses" table="addresses"> + <key column="human"/> + <map-key type="string" column="type"/> + <composite-element class="Address"> + <property name="street"/> + <property name="city"/> + <property name="postalCode"/> + <property name="country"/> + <many-to-one name="stateProvince" column="state_prov_id" class="StateProvince"/> + </composite-element> + </map> + </joined-subclass> + </joined-subclass> + </class> + + <class name="User" table="`User`"> + <id name="id"> + <generator class="foreign"> + <param name="property">human</param> + </generator> + </id> + <property name="userName"/> + <one-to-one name="human" constrained="true"/> + <list name="permissions"> + <key column="userId"/> + <list-index column="permissionId"/> + <element type="string" column="permissionName"/> + </list> + </class> + + <class name="Zoo" discriminator-value="Z"> + <id name="id"> + <generator class="native"/> + </id> + <discriminator column="zooType" type="character"/> + <property name="name" type="string"/> + <property name="classification"/> + <map name="mammals"> + <key column="mammalZoo_id"/> + <index type="string" column="name"/> + <one-to-many class="Mammal"/> + </map> + <map name="animals" inverse="true"> + <key column="zoo_id"/> + <index type="string" column="serialNumber"/> + <one-to-many class="Animal"/> + </map> + <component name="address" class="Address"> + <property name="street"/> + <property name="city"/> + <property name="postalCode"/> + <property name="country"/> + <many-to-one name="stateProvince" column="state_prov_id" class="StateProvince"/> + </component> + <subclass name="PettingZoo" discriminator-value="P"/> + </class> + + <class name="StateProvince"> + <id name="id"> + <generator class="native"/> + </id> + <property name="name"/> + <property name="isoCode"/> + </class> + + <class name="Joiner"> + <id name="id"> + <generator class="native"/> + </id> + <property name="name"/> + <join table="JOINED"> + <key column="ID"/> + <property name="joinedName"/> + </join> + </class> + </hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BooleanLiteralEntity.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,10 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class BooleanLiteralEntity + { + public virtual long Id { get; set; } + public virtual bool YesNoBoolean { get; set; } + public virtual bool TrueFalseBoolean { get; set; } + public virtual bool ZeroOneBoolean { get; set; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -1,15 +1,31 @@ +using NUnit.Framework; +using NHibernate.Hql.Ast.ANTLR; + namespace NHibernate.Test.HQL.Ast { + [TestFixture] public class BulkManipulation: BaseFixture { - // "hql/Animal.hbm.xml", - // "hql/Vehicle.hbm.xml", - // "hql/KeyManyToOneEntity.hbm.xml", - // "hql/Versions.hbm.xml", - //"hql/FooBarCopy.hbm.xml", - //"legacy/Multi.hbm.xml", - //"hql/EntityWithCrazyCompositeKey.hbm.xml", - //"hql/SimpleEntityWithAssociation.hbm.xml", - //"hql/BooleanLiteralEntity.hbm.xml" + #region Non-exists + + [Test] + public void DeleteNonExistentEntity() + { + using (ISession s = OpenSession()) + { + Assert.Throws<QuerySyntaxException>(() => s.CreateQuery("delete NonExistentEntity").ExecuteUpdate()); + } + } + + [Test] + public void UpdateNonExistentEntity() + { + using (ISession s = OpenSession()) + { + Assert.Throws<QuerySyntaxException>(() => s.CreateQuery("update NonExistentEntity e set e.someProp = ?").ExecuteUpdate()); + } + } + + #endregion } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Classification.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Classification.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Classification.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,8 @@ +namespace NHibernate.Test.HQL.Ast +{ + public enum Classification + { + Cool = 0, + Lame = 1 + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/CrazyCompositeKey.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/CrazyCompositeKey.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/CrazyCompositeKey.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,51 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class CrazyCompositeKey + { + private long id; + private long otherId; + private int? requestedHash; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual long OtherId + { + get { return otherId; } + set { otherId = value; } + } + + public override bool Equals(object obj) + { + return Equals(obj as CrazyCompositeKey); + } + + public virtual bool Equals(CrazyCompositeKey other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return other.id == id && other.otherId == otherId; + } + + public override int GetHashCode() + { + if (!requestedHash.HasValue) + { + unchecked + { + requestedHash = (id.GetHashCode() * 397) ^ otherId.GetHashCode(); + } + } + return requestedHash.Value; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/DomesticAnimal.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/DomesticAnimal.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/DomesticAnimal.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,16 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class DomesticAnimal: Mammal + { + private Human owner; + + public virtual Human Owner + { + get { return owner; } + set { owner = value; } + } + } + + public class Cat : DomesticAnimal { } + public class Dog : DomesticAnimal { } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,20 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class EntityWithCrazyCompositeKey + { + private CrazyCompositeKey id; + private string name; + + public virtual CrazyCompositeKey Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/EntityWithCrazyCompositeKey.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -3,12 +3,12 @@ assembly="NHibernate.Test" namespace="NHibernate.Test.HQL.Ast"> - <class name="EntityWithCrazyCompositeKey"> - <composite-id name="Id" class="CrazyCompositeKey"> - <key-property name="Id" column="id"/> - <key-property name="OtherId" column="other_id"/> - </composite-id> - <property name="Name"/> - </class> - + <class name="EntityWithCrazyCompositeKey"> + <composite-id name="Id" class="CrazyCompositeKey"> + <key-property name="Id" column="id"/> + <key-property name="OtherId" column="other_id"/> + </composite-id> + <property name="Name"/> + </class> + </hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -1,137 +1,140 @@ <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" - assembly="NHibernate.Test" - namespace="NHibernate.Test.HQL.Ast" - default-lazy="false"> - - <!-- a slightly modified copy of FooBar.hbm.xml from the legacy test package --> - - <class - name="Foo" - table="`foos`" - proxy="FooProxy" - discriminator-value="F" - batch-size="4" - dynamic-insert="true" - dynamic-update="true" - select-before-update="true"> - - <id name="key" type="string"> - <column name="`foo_idcolumnname123`" length="36"/> - <generator class="uuid.hex"> - <param name="seperator">:</param> - </generator> - </id> - - <discriminator column="`foo_subclass_1234`" type="character" force="true"/> - <version name="version"/> - - <many-to-one name="foo" class="Foo"> - <column name="foo" length="36" index="fbmtoidx"/> - </many-to-one> - - <property name="long"> - <column name="long_" index="fbmtoidx" unique-key="abc" not-null="true"/> - </property> - <property name="integer"> - <column name="`integer__`" unique-key="abc" not-null="true"/> - </property> - <property name="float"> - <column name="float_" unique-key="abc" not-null="true" check="float_ > 0.0"/> - </property> - <property name="x"/> - <property name="double" column="double_"/> - - <primitive-array name="bytes" table="foobytes"> - <key column="id"/> - <index column="i"/> - <element column="byte_" type="byte"/> - </primitive-array> - - <property name="date" type="date" column="date_"/> - <property name="timestamp" type="timestamp" column="timestamp_"/> - <property name="boolean" column="boolean_"/> - <property name="bool" column="bool_"/> - <property name="null" column="null_"/> - <property name="short" column="short_"/> - <property name="char" column="char_"/> - <property name="zero" column="zero_"/> - <property name="int" column="int_"/> - <property name="string"> - <column name="string_" length="48" index="fbstridx"/> - </property> - <property name="byte" column="byte_"/> - <property name="yesno" type="yes_no"/> - <property name="blob" type="org.hibernate.test.legacy.Foo$Struct" column="blobb_"/> - <property name="nullBlob" type="serializable"/> - <property name="binary" column="bin_"/> - <property name="theLocale" access="field" column="`localeayzabc123`"/> - - <property name="formula" formula="int_/2"/> - - <property name="custom" type="org.hibernate.test.legacy.DoubleStringType" access="field"> - <column name="first_name" length="66"/> - <column name="surname" length="66"/> - </property> - <component name="nullComponent"> - <property name="name" column="null_cmpnt_"/> - </component> - - <join table="jointable"> - <key column="fooid" on-delete="cascade"/> - <property name="joinedProp"/> - </join> - - <subclass - name="Trivial" - proxy="FooProxy" - discriminator-value="T"/> - - <subclass - name="Abstract" - proxy="AbstractProxy" - discriminator-value="null"> - <set name="abstracts" batch-size="2"> - <key column="abstract_id"/> - <one-to-many class="Abstract"/> - </set> - <property name="time" column="the_time"/> - - <subclass - name="Bar" - proxy="BarProxy" - discriminator-value="B"> - <property name="barString"> - <column name="bar_string" length="24"/> - </property> - <any name="object" meta-type="character" id-type="long" cascade="all"> - <meta-value value="O" class="One"/> - <meta-value value="M" class="Many"/> - <column name="clazz" length="100"/> - <column name="gen_id"/> - </any> - <join table="bar_join_table"> - <key column="bar_id"/> - <property name="name" column="name_name"/> - </join> - </subclass> - </subclass> - </class> - - <class name="One" table="one"> - <id name="key" column="one_key"> - <generator class="native" /> - </id> - <property name="x"/> - <property column="one_value" name="value"/> - </class> - - <class name="Many" table="many"> - <id name="key" column="many_key"> - <generator class="native" /> - </id> - <property name="x"/> - </class> - -</hibernate-mapping> - + assembly="NHibernate.DomainModel" + namespace="NHibernate.DomainModel" + default-lazy="false"> + + <!-- a slightly modified copy of FooBar.hbm.xml from the legacy test package --> + + <class + name="Foo" + table="`foos`" + proxy="FooProxy" + discriminator-value="F" + batch-size="4" + dynamic-insert="true" + dynamic-update="true" + select-before-update="true"> + + <id name="key" type="string"> + <column name="`foo_idcolumnname123`" length="36"/> + <generator class="uuid.hex"> + <param name="seperator">:</param> + </generator> + </id> + + <discriminator column="`foo_subclass_1234`" type="character" force="true"/> + <version name="version"/> + + <many-to-one name="foo" class="Foo"> + <column name="foo" length="36" index="fbmtoidx"/> + </many-to-one> + + <property name="Long"> + <column name="long_" index="fbmtoidx" unique-key="abc" not-null="true"/> + </property> + <property name="Integer"> + <column name="`integer__`" unique-key="abc" not-null="true"/> + </property> + <property name="Float"> + <column name="float_" unique-key="abc" not-null="true" check="float_ > 0.0"/> + </property> + <property name="x"/> + <property name="Double" column="double_"/> + + <primitive-array name="bytes" table="foobytes"> + <key column="id"/> + <index column="i"/> + <element column="byte_" type="byte"/> + </primitive-array> + + <property name="Date" type="date" column="date_"/> + <property name="Timestamp" type="timestamp" column="timestamp_"/> + <property name="Boolean" column="boolean_"/> + <property name="Bool" column="bool_"/> + <property name="Null" column="null_"/> + <property name="Short" column="short_"/> + <property name="Char" column="char_"/> + <property name="Zero" column="zero_"/> + <property name="Int" column="int_"/> + <property name="String"> + <column name="string_" length="48" index="fbstridx"/> + </property> + <property name="Byte" column="byte_"/> + <property name="YesNo" type="yes_no"/> + <!-- + <property name="blob" type="org.hibernate.test.legacy.Foo$Struct" column="blobb_"/> + <property name="nullBlob" type="serializable"/> + <property name="binary" column="bin_"/> + --> + <property name="Locale" column="`localeayzabc123`" access="field.camelcase-underscore" type="locale"/> + + <property name="formula" formula="int_*2"/> + + <property name="Custom" type="NHibernate.DomainModel.DoubleStringType, NHibernate.DomainModel" access="field.camelcase"> + <column name="first_name" length="66"/> + <column name="surname" length="66"/> + </property> + + <component name="nullComponent"> + <property name="name" column="null_cmpnt_"/> + </component> + + <join table="jointable"> + <key column="fooid" on-delete="cascade"/> + <property name="joinedProp"/> + </join> + + <subclass + name="Trivial" + proxy="FooProxy" + discriminator-value="T"/> + + <subclass + name="Abstract" + proxy="AbstractProxy" + discriminator-value="null"> + <set name="abstracts" batch-size="2"> + <key column="abstract_id"/> + <one-to-many class="Abstract"/> + </set> + <property name="time" column="the_time"/> + + <subclass + name="Bar" + proxy="BarProxy" + discriminator-value="B"> + <property name="barString"> + <column name="bar_string" length="24"/> + </property> + <any name="object" meta-type="character" id-type="long" cascade="all"> + <meta-value value="O" class="One"/> + <meta-value value="M" class="Many"/> + <column name="clazz" length="100"/> + <column name="gen_id"/> + </any> + <join table="bar_join_table"> + <key column="bar_id"/> + <property name="name" column="name_name"/> + </join> + </subclass> + </subclass> + </class> + + <class name="One" table="one"> + <id name="key" column="one_key"> + <generator class="native" /> + </id> + <property name="x"/> + <property column="one_value" name="value"/> + </class> + + <class name="Many" table="many"> + <id name="key" column="many_key"> + <generator class="native" /> + </id> + <property name="x"/> + </class> + +</hibernate-mapping> + Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Human.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Human.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Human.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,95 @@ +using System.Collections; +using Iesi.Collections; + +namespace NHibernate.Test.HQL.Ast +{ + public class Human: Mammal + { + private Name name; + private string nickName; + private ICollection friends; + private ICollection pets; + private IDictionary family; + private double height; + + private long bigIntegerValue; + private decimal bigDecimalValue; + private int intValue; + private float floatValue; + + private ISet nickNames; + private IDictionary addresses; + + public virtual Name Name + { + get { return name; } + set { name = value; } + } + + public virtual string NickName + { + get { return nickName; } + set { nickName = value; } + } + + public virtual ICollection Friends + { + get { return friends; } + set { friends = value; } + } + + public virtual ICollection Pets + { + get { return pets; } + set { pets = value; } + } + + public virtual IDictionary Family + { + get { return family; } + set { family = value; } + } + + public virtual double Height + { + get { return height; } + set { height = value; } + } + + public virtual long BigIntegerValue + { + get { return bigIntegerValue; } + set { bigIntegerValue = value; } + } + + public virtual decimal BigDecimalValue + { + get { return bigDecimalValue; } + set { bigDecimalValue = value; } + } + + public virtual int IntValue + { + get { return intValue; } + set { intValue = value; } + } + + public virtual float FloatValue + { + get { return floatValue; } + set { floatValue = value; } + } + + public virtual ISet NickNames + { + get { return nickNames; } + set { nickNames = value; } + } + + public virtual IDictionary Addresses + { + get { return addresses; } + set { addresses = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/IntegerVersioned.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/IntegerVersioned.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/IntegerVersioned.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,27 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class IntegerVersioned + { + private long id; + private int version; + private string name; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual int Version + { + get { return version; } + set { version = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Joiner.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Joiner.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Joiner.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,27 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class Joiner + { + private long id; + private string name; + private string joinedName; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual string JoinedName + { + get { return joinedName; } + set { joinedName = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,83 @@ +using System; + +namespace NHibernate.Test.HQL.Ast +{ + public class KeyManyToOneEntity + { + private Id id; + private string name; + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public class Id + { + private KeyManyToOneKeyEntity key1; + private string key2; + private int? requestedHash; + + protected Id() {} + + public Id(KeyManyToOneKeyEntity key1, string key2) + { + if (key1 == null) + { + throw new ArgumentNullException("key1"); + } + if (key2 == null) + { + throw new ArgumentNullException("key2"); + } + + this.key1 = key1; + this.key2 = key2; + + } + + public virtual KeyManyToOneKeyEntity Key1 + { + get { return key1; } + set { key1 = value; } + } + + public virtual string Key2 + { + get { return key2; } + set { key2 = value; } + } + + public override bool Equals(object obj) + { + return Equals(obj as Id); + } + + public bool Equals(Id other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.key1, key1) && Equals(other.key2, key2); + } + + public override int GetHashCode() + { + if (!requestedHash.HasValue) + { + unchecked + { + requestedHash = ((key1 != null ? key1.GetHashCode() : 0) * 397) ^ (key2 != null ? key2.GetHashCode() : 0); + } + } + return requestedHash.Value; + } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneEntity.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -3,19 +3,19 @@ assembly="NHibernate.Test" namespace="NHibernate.Test.HQL.Ast"> - <class name="KeyManyToOneKeyEntity"> - <id name="id" type="long" access="field" > - <generator class="native"/> - </id> - <property name="Name" type="string"/> - </class> - - <class name="KeyManyToOneEntity"> - <composite-id name="id" access="field" class="KeyManyToOneEntity$Id" unsaved-value="undefined" > - <key-many-to-one name="key1" class="KeyManyToOneKeyEntity" /> - <key-property name="key2" type="string"/> - </composite-id> - <property name="Name" type="string"/> - </class> - + <class name="KeyManyToOneKeyEntity"> + <id name="id" type="long" access="field" > + <generator class="native"/> + </id> + <property name="Name" type="string"/> + </class> + + <class name="KeyManyToOneEntity"> + <composite-id name="id" access="field" class="KeyManyToOneEntity+Id" unsaved-value="undefined" > + <key-many-to-one name="Key1" class="KeyManyToOneKeyEntity" /> + <key-property name="Key2" type="string"/> + </composite-id> + <property name="Name" type="string"/> + </class> + </hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneKeyEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneKeyEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/KeyManyToOneKeyEntity.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,52 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class KeyManyToOneKeyEntity + { + private long id; + private string name; + private int? requestedHash; + + protected KeyManyToOneKeyEntity() {} + + public KeyManyToOneKeyEntity(string name) + { + this.name = name; + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public override bool Equals(object obj) + { + return Equals(obj as KeyManyToOneKeyEntity); + } + + public virtual bool Equals(KeyManyToOneKeyEntity other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return other.id == id && Equals(other.name, name); + } + + public override int GetHashCode() + { + if(!requestedHash.HasValue) + { + unchecked + { + requestedHash = (id.GetHashCode() * 397) ^ (name != null ? name.GetHashCode() : 0); + } + } + return requestedHash.Value; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Mammal.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Mammal.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Mammal.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,22 @@ +using System; + +namespace NHibernate.Test.HQL.Ast +{ + public class Mammal: Animal + { + private bool pregnant; + private DateTime birthdate; + + public virtual bool Pregnant + { + get { return pregnant; } + set { pregnant = value; } + } + + public virtual DateTime Birthdate + { + get { return birthdate; } + set { birthdate = value; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Multi.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -1,101 +1,104 @@ <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" - assembly="NHibernate.Test" - namespace="NHibernate.Test.HQL.Ast" + assembly="NHibernate.DomainModel" + namespace="NHibernate.DomainModel" default-lazy="false"> - <class - name="org.hibernate.test.legacy.Top" - table="rootclass" - dynamic-insert="true" - dynamic-update="true" - select-before-update="true" - where="id1_ is not null"> - <!--cache--> - <id name="id" type="long" column="id1_" unsaved-value="0"> - <generator class="native"/> - </id> - <version name="count" column="count_"/> - <property name="name"/> - <property name="address"/> - <property name="date" column="date_"/> - <many-to-one name="top" access="field" column="top_"/> - - <joined-subclass name="org.hibernate.test.legacy.TrivialClass"> - <key column="tcid"/> - </joined-subclass> - - <joined-subclass - name="org.hibernate.test.legacy.Lower" - table="leafsubclass" - dynamic-insert="true" - dynamic-update="true"> - <key column="id__"/> - <property name="intprop" not-null="true"/> - <one-to-one name="other" class="org.hibernate.test.legacy.Lower"/> - <many-to-one name="another" column="other1" class="org.hibernate.test.legacy.Top"/> - <many-to-one name="yetanother" column="other3" class="org.hibernate.test.legacy.Lower"/> - <property name="foo"/> - <set name="set" lazy="false"> - <key column="parent"/> - <one-to-many class="org.hibernate.test.legacy.Top"/> - </set> - <bag name="bag" lazy="true" table="simple_simple"> - <key column="simple1"/> - <many-to-many column="simple2" class="org.hibernate.test.legacy.Top"/> - </bag> - <one-to-one name="mypo"/> - </joined-subclass> - - <joined-subclass name="org.hibernate.test.legacy.Multi" table="nonleafsubclass"> - <key column="sid" on-delete="cascade"/> - <property name="extraProp" column="dupe"/> - <many-to-one name="other" column="other2" class="org.hibernate.test.legacy.Multi" /> - <many-to-one name="po"/> - <property name="derived" formula="upper(dupe)"/> - - <component name="comp" class="org.hibernate.test.legacy.Multi$Component"> - <property name="cal"/> - <property name="floaty"/> - </component> - - <joined-subclass name="org.hibernate.test.legacy.SubMulti" table="leafsubsubclass"> - <key column="sid"/> - <property name="amount" column="dupe"/> - <bag name="children" lazy="true" inverse="true"> - <key column="parent"/> - <one-to-many class="org.hibernate.test.legacy.SubMulti"/> - </bag> - <many-to-one name="parent"/> - <list name="moreChildren" lazy="true"> - <key column="another_parent"/> - <index column="list_ind"/> - <one-to-many class="org.hibernate.test.legacy.SubMulti"/> - </list> - </joined-subclass> - - </joined-subclass> - - </class> - - <class - name="org.hibernate.test.legacy.Po" - dynamic-insert="true"> - <id type="long" column="id_"> - <generator class="native"/> - </id> - <property name="value" column="value_"/> - <list name="list" cascade="all"> - <key column="list_po"/> - <index column="i"/> - <one-to-many class="org.hibernate.test.legacy.SubMulti"/> - </list> - <set name="set" inverse="true" cascade="all"> - <key column="po"/> - <one-to-many class="org.hibernate.test.legacy.Multi"/> - </set> - <many-to-one name="top" column="tl" insert="false" update="false"/> - <many-to-one name="lower" column="tl"/> - </class> - + <class + name="Top" + table="rootclass" + dynamic-insert="true" + dynamic-update="true" + select-before-update="true" + where="id1_ is not null" + > + <!--<jcs-cache usage="read-write"/> --> + <!-- commented out in h2.1 test also --> + <id name="Id" type="Int64" column="id1_" unsaved-value="0"> + <generator class="native"/> + </id> + + <version name="Count" column="count_" /> + <property name="Name" /> + <property name="Address" /> + <property name="Date" column="date_" /> + <many-to-one name="top" access="field" column="`_top`"/> + <!-- changed column name because of MSSQL conflicts --> + <joined-subclass name="TrivialClass"> + <key column="tcid"/> + </joined-subclass> + + <joined-subclass name="Lower" + table="leafsubclass" dynamic-insert="true" dynamic-update="true"> + <key column="id__"/> + <property name="Intprop" not-null="true" /> + <one-to-one name="Other" class="Lower" /> + <many-to-one name="Another" column="other1" class="Top" /> + <many-to-one name="YetAnother" column="other3" class="Lower" /> + <property name="Foo"/> + <set name="Set" lazy="false"> + <key column="parent"/> + <one-to-many class="Top"/> + </set> + <bag name="Bag" lazy="true" table="simple_simple"> + <key column="simple1"/> + <many-to-many column="simple2" class="Top" + /> + </bag> + <one-to-one name="MyPo"/> + </joined-subclass> + + <joined-subclass name="Multi" table="nonleafsubclass"> + <key column="sid"/> + <property name="ExtraProp" column="dupe"/> + <many-to-one name="Other" column="other2" class="Multi" /> + <many-to-one name="Po" column="po"/> + <many-to-one name="OtherPo" /> + <property name="Derived" formula="upper(dupe)" /> + <component name="Comp" class="Multi+Component"> + <property name="Cal"/> + <property name="Floaty"/> + </component> + + <joined-subclass name="SubMulti" table="leafsubsubclass"> + <key column="sid"/> + <property name="Amount" column="dupe"/> + <bag name="Children" lazy="true" inverse="true" > + <key column="parent"/> + <one-to-many class="SubMulti"/> + </bag> + <many-to-one name="Parent" column="parent" /> + <list name="MoreChildren" lazy="true"> + <key column="another_parent"/> + <index column="list_ind"/> + <one-to-many class="SubMulti"/> + </list> + </joined-subclass> + + </joined-subclass> + + </class> + + <class name="NHibernate.DomainModel.Po, NHibernate.DomainModel" dynamic-insert="true"> + <id type="Int64" column="id_" unsaved-value="0"> + <generator class="native"/> + </id> + <property name="Value" column="value_" /> + <list name="List" cascade="all" > + <key column="list_po"/> + <index column="i"/> + <one-to-many class="NHibernate.DomainModel.SubMulti, NHibernate.DomainModel" /> + </list> + <set name="Set" inverse="true" cascade="all" lazy="true"> + <key column="po" /> + <one-to-many class="NHibernate.DomainModel.Multi, NHibernate.DomainModel" /> + </set> + <set name="EagerSet" inverse="true" cascade="all" outer-join="true"> + <key column="OtherPo" /> + <one-to-many class="NHibernate.DomainModel.Multi, NHibernate.DomainModel" /> + </set> + <many-to-one name="Top" column="t1" insert="false" update="false" /> + <many-to-one name="Lower" column="t1" /> + </class> + </hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Name.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Name.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Name.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,27 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class Name + { + private string first; + private char initial; + private string last; + + public string First + { + get { return first; } + set { first = value; } + } + + public char Initial + { + get { return initial; } + set { initial = value; } + } + + public string Last + { + get { return last; } + set { last = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Reptile.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Reptile.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Reptile.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,14 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class Reptile: Animal + { + private float bodyTemperature; + public virtual float BodyTemperature + { + get { return bodyTemperature; } + set { bodyTemperature = value; } + } + } + + public class Lizard : Reptile { } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,77 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class SimpleAssociatedEntity + { + private long id; + private string name; + private int? requestedHash; + private SimpleEntityWithAssociation owner; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual SimpleEntityWithAssociation Owner + { + get { return owner; } + set { owner = value; } + } + + public virtual void BindToOwner(SimpleEntityWithAssociation owner) + { + if (owner != this.owner) + { + UnbindFromCurrentOwner(); + if (owner != null) + { + owner.AssociatedEntities.Add(this); + } + } + this.owner = owner; + } + + public virtual void UnbindFromCurrentOwner() + { + if (owner != null) + { + owner.AssociatedEntities.Remove(this); + owner = null; + } + } + + public override bool Equals(object obj) + { + return Equals(obj as SimpleAssociatedEntity); + } + + public virtual bool Equals(SimpleAssociatedEntity other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.Id, Id); + } + + public override int GetHashCode() + { + if (!requestedHash.HasValue) + { + requestedHash = Id.GetHashCode(); + } + return requestedHash.Value; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,36 @@ +using Iesi.Collections; + +namespace NHibernate.Test.HQL.Ast +{ + public class SimpleEntityWithAssociation + { + private long id; + private string name; + private ISet associatedEntities = new HashedSet(); + private ISet manyToManyAssociatedEntities = new HashedSet(); + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual ISet AssociatedEntities + { + get { return associatedEntities; } + set { associatedEntities = value; } + } + + public virtual ISet ManyToManyAssociatedEntities + { + get { return manyToManyAssociatedEntities; } + set { manyToManyAssociatedEntities = value; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -3,29 +3,29 @@ assembly="NHibernate.Test" namespace="NHibernate.Test.HQL.Ast"> - <!-- *Very* important for the test cases that these entities have identically named columns! --> - - <class name="SimpleEntityWithAssociation" table="SIMPLE_1"> - <id name="Id" column="ID" type="long"> - <generator class="native"/> - </id> - <property name="Name" column="NAME" type="string"/> - <set name="AssociatedEntities" cascade="all" inverse="true" lazy="true"> - <key column="SIMPLE_1_ID"/> - <one-to-many class="SimpleAssociatedEntity"/> - </set> - <set name="ManyToManyAssociatedEntities" cascade="save-update" inverse="false" lazy="true" table="MANY_TO_MANY"> - <key column="IN_ID"/> - <many-to-many class="SimpleEntityWithAssociation" column="OUT_ID"/> - </set> - </class> - - <class name="SimpleAssociatedEntity" table="SIMPLE_2"> - <id name="Id" column="ID" type="long"> - <generator class="native"/> - </id> - <property name="Name" column="NAME" type="string" /> - <many-to-one name="Owner" class="SimpleEntityWithAssociation" column="SIMPLE_1_ID"/> - </class> - + <!-- *Very* important for the test cases that these entities have identically named columns! --> + + <class name="SimpleEntityWithAssociation" table="SIMPLE_1"> + <id name="Id" column="ID" type="long"> + <generator class="native"/> + </id> + <property name="Name" column="NAME" type="string"/> + <set name="AssociatedEntities" cascade="all" inverse="true" lazy="true"> + <key column="SIMPLE_1_ID"/> + <one-to-many class="SimpleAssociatedEntity"/> + </set> + <set name="ManyToManyAssociatedEntities" cascade="save-update" inverse="false" lazy="true" table="MANY_TO_MANY"> + <key column="IN_ID"/> + <many-to-many class="SimpleEntityWithAssociation" column="OUT_ID"/> + </set> + </class> + + <class name="SimpleAssociatedEntity" table="SIMPLE_2"> + <id name="Id" column="ID" type="long"> + <generator class="native"/> + </id> + <property name="Name" column="NAME" type="string" /> + <many-to-one name="Owner" class="SimpleEntityWithAssociation" column="SIMPLE_1_ID"/> + </class> + </hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/StateProvince.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/StateProvince.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/StateProvince.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,27 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class StateProvince + { + private long id; + private string name; + private string isoCode; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual string IsoCode + { + get { return isoCode; } + set { isoCode = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/TimestampVersioned.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/TimestampVersioned.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/TimestampVersioned.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,29 @@ +using System; + +namespace NHibernate.Test.HQL.Ast +{ + public class TimestampVersioned + { + private long id; + private DateTime version; + private string name; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual DateTime Version + { + get { return version; } + set { version = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/User.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/User.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/User.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,36 @@ +using System.Collections; + +namespace NHibernate.Test.HQL.Ast +{ + public class User + { + private long id; + private string userName; + private Human human; + private IList permissions; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string UserName + { + get { return userName; } + set { userName = value; } + } + + public virtual Human Human + { + get { return human; } + set { human = value; } + } + + public virtual IList Permissions + { + get { return permissions; } + set { permissions = value; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicle.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -3,27 +3,27 @@ assembly="NHibernate.Test" namespace="NHibernate.Test.HQL.Ast"> - <!-- Vehicle represents an abstract root of a union-subclass hierarchy --> - <class name="Vehicle" abstract="true"> - <id name="id" access="field" type="long"> - <generator class="increment"/> - </id> - <property name="Vin" type="string"/> - <property name="Owner" type="string"/> - - <!-- Car represents a concrete leaf of a union-subclass hierarchy with no concrete super --> - <union-subclass name="Car"/> - - <!-- Truck represents a concrete subclass in a union-subclass hierarchy with concrete subclasses and no concrete super --> - <union-subclass name="Truck"> - <!-- Both SUV and Pickup represent concrete leaf of a union-subclass hierarchy (like Car), but with a concrete super --> - <union-subclass name="SUV"/> - <union-subclass name="Pickup"/> - </union-subclass> - </class> - - <sql-query name="native-delete-car"> - <synchronize table="Car"/> - delete from CAR where owner = ? - </sql-query> + <!-- Vehicle represents an abstract root of a union-subclass hierarchy --> + <class name="Vehicle" abstract="true"> + <id name="id" access="field" type="long"> + <generator class="increment"/> + </id> + <property name="Vin" type="string"/> + <property name="Owner" type="string"/> + + <!-- Car represents a concrete leaf of a union-subclass hierarchy with no concrete super --> + <union-subclass name="Car"/> + + <!-- Truck represents a concrete subclass in a union-subclass hierarchy with concrete subclasses and no concrete super --> + <union-subclass name="Truck"> + <!-- Both SUV and Pickup represent concrete leaf of a union-subclass hierarchy (like Car), but with a concrete super --> + <union-subclass name="SUV"/> + <union-subclass name="Pickup"/> + </union-subclass> + </class> + + <sql-query name="native-delete-car"> + <synchronize table="Car"/> + delete from CAR where owner = ? + </sql-query> </hibernate-mapping> \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicles.cs (from rev 4226, trunk/nhibernate/src/NHibernate.Test/BulkManipulation/Vehicles.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicles.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Vehicles.cs 2009-05-03 22:24:46 UTC (rev 4228) @@ -0,0 +1,43 @@ +namespace NHibernate.Test.HQL.Ast +{ + public class Vehicle + { + private long id; + private string vin; + private string owner; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Vin + { + get { return vin; } + set { vin = value; } + } + + public virtual string Owner + { + get { return owner; } + set { owner = value; } + } + } + + public class Car : Vehicle + { + } + + public class Truck : Vehicle + { + } + + public class Pickup : Truck + { + } + + public class SUV : Truck + { + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml 2009-05-03 13:43:03 UTC (rev 4227) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/Versions.hbm.xml 2009-05-03 22:24:46 UTC (rev 4228) @@ -4,20 +4,20 @@ namespace="NHibernate.Test.HQL.Ast" default-access="field"> - <class name="IntegerVersioned"> - <id name="id"> - <generator class="native"/> - </id> - <version name="version" column="vers"/> - <property name="name"/> - </class> - - <class name="TimestampVersioned"> - <id name="id"> - <generator class="native"/> - </id> - <timestamp name="version" column="vers"/> - <property name="name"/> - </class> - + <class name="IntegerVersioned"> + <id name="id"> + <generator class="native"/> + </id>... [truncated message content] |
From: <fab...@us...> - 2009-05-04 05:09:46
|
Revision: 4229 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4229&view=rev Author: fabiomaulo Date: 2009-05-04 05:09:41 +0000 (Mon, 04 May 2009) Log Message: ----------- Some more tests about delete Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/BulkManipulation/HQLBulkOperations.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/BulkManipulation/HQLBulkOperations.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/BulkManipulation/HQLBulkOperations.cs 2009-05-03 22:24:46 UTC (rev 4228) +++ trunk/nhibernate/src/NHibernate.Test/BulkManipulation/HQLBulkOperations.cs 2009-05-04 05:09:41 UTC (rev 4229) @@ -19,14 +19,17 @@ using (var s = OpenSession()) using (var tx = s.BeginTransaction()) { - s.CreateQuery("delete from SimpleClass").ExecuteUpdate(); + Assert.That(s.CreateQuery("delete from SimpleClass where Description = 'simple2'").ExecuteUpdate(), + Is.EqualTo(1)); tx.Commit(); } using (var s = OpenSession()) + using (var tx = s.BeginTransaction()) { - var l = s.CreateQuery("from SimpleClass").List(); - Assert.That(l.Count, Is.EqualTo(0)); + Assert.That(s.CreateQuery("delete from SimpleClass").ExecuteUpdate(), + Is.EqualTo(1)); + tx.Commit(); } } } Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-03 22:24:46 UTC (rev 4228) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 05:09:41 UTC (rev 4229) @@ -6,6 +6,11 @@ [TestFixture] public class BulkManipulation: BaseFixture { + public ISession OpenNewSession() + { + return OpenSession(); + } + #region Non-exists [Test] @@ -27,5 +32,136 @@ } #endregion + + [Test, Ignore("Not supported")] + public void DeleteRestrictedOnManyToOne() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("delete Animal where mother = :mother") + .SetEntity("mother", data.Butterfly) + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1)); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] + public void DeleteSyntaxWithCompositeId() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + s.CreateQuery("delete EntityWithCrazyCompositeKey where Id.Id = 1 and Id.OtherId = 2").ExecuteUpdate(); + s.CreateQuery("delete from EntityWithCrazyCompositeKey where Id.Id = 1 and Id.OtherId = 2").ExecuteUpdate(); + s.CreateQuery("delete from EntityWithCrazyCompositeKey e where e.Id.Id = 1 and e.Id.OtherId = 2").ExecuteUpdate(); + + t.Commit(); + s.Close(); + } + + private class TestData + { + private readonly BulkManipulation tc; + public Animal Polliwog; + public Animal Catepillar; + public Animal Frog; + public Animal Butterfly; + + public Zoo Zoo; + public Zoo PettingZoo; + + public TestData(BulkManipulation tc) + { + this.tc = tc; + } + + public void Prepare() + { + ISession s = tc.OpenNewSession(); + ITransaction txn = s.BeginTransaction(); + + Polliwog = new Animal { BodyWeight = 12, Description = "Polliwog" }; + + Catepillar = new Animal { BodyWeight = 10, Description = "Catepillar" }; + + Frog = new Animal { BodyWeight = 34, Description = "Frog" }; + + Polliwog.Father = Frog; + Frog.Offspring.Add(Polliwog); + + Butterfly = new Animal { BodyWeight = 9, Description = "Butterfly" }; + + Catepillar.Mother = Butterfly; + Butterfly.Offspring.Add(Catepillar); + + s.Save(Frog); + s.Save(Polliwog); + s.Save(Butterfly); + s.Save(Catepillar); + + var dog = new Dog { BodyWeight = 200, Description = "dog" }; + s.Save(dog); + + var cat = new Cat { BodyWeight = 100, Description = "cat" }; + s.Save(cat); + + Zoo = new Zoo { Name = "Zoo" }; + var add = new Address { City = "MEL", Country = "AU", Street = "Main st", PostalCode = "3000" }; + Zoo.Address = add; + + PettingZoo = new PettingZoo { Name = "Petting Zoo" }; + var addr = new Address { City = "Sydney", Country = "AU", Street = "High st", PostalCode = "2000" }; + PettingZoo.Address = addr; + + s.Save(Zoo); + s.Save(PettingZoo); + + var joiner = new Joiner { JoinedName = "joined-name", Name = "name" }; + s.Save(joiner); + + var car = new Car { Vin = "123c", Owner = "Kirsten" }; + s.Save(car); + + var truck = new Truck { Vin = "123t", Owner = "Steve" }; + s.Save(truck); + + var suv = new SUV { Vin = "123s", Owner = "Joe" }; + s.Save(suv); + + var pickup = new Pickup { Vin = "123p", Owner = "Cecelia" }; + s.Save(pickup); + + var b = new BooleanLiteralEntity(); + s.Save(b); + + txn.Commit(); + s.Close(); + } + + public void Cleanup() + { + ISession s = tc.OpenNewSession(); + ITransaction txn = s.BeginTransaction(); + + // workaround awesome HSQLDB "feature" + s.CreateQuery("delete from Animal where mother is not null or father is not null").ExecuteUpdate(); + s.CreateQuery("delete from Animal").ExecuteUpdate(); + s.CreateQuery("delete from Zoo").ExecuteUpdate(); + s.CreateQuery("delete from Joiner").ExecuteUpdate(); + s.CreateQuery("delete from Vehicle").ExecuteUpdate(); + s.CreateQuery("delete from BooleanLiteralEntity").ExecuteUpdate(); + + txn.Commit(); + s.Close(); + } + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-07 05:02:58
|
Revision: 4258 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4258&view=rev Author: fabiomaulo Date: 2009-05-07 05:02:56 +0000 (Thu, 07 May 2009) Log Message: ----------- - CR-LF in BulkManipulation - moved test to Ast - ReturnMetadata now is working - NH-322 was fixed with the new parser Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/HqlFixture.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/HQL/HqlFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-07 03:34:37 UTC (rev 4257) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-07 05:02:56 UTC (rev 4258) @@ -228,17 +228,17 @@ [Test] public void UpdateOnManyToOne() - { + { ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - - s.CreateQuery("update Animal a set a.mother = null where a.id = 2").ExecuteUpdate(); + + s.CreateQuery("update Animal a set a.mother = null where a.id = 2").ExecuteUpdate(); if (! (Dialect is MySQLDialect)) - { - // MySQL does not support (even un-correlated) subqueries against the update-mutating table - s.CreateQuery("update Animal a set a.mother = (from Animal where id = 1) where a.id = 2").ExecuteUpdate(); - } - + { + // MySQL does not support (even un-correlated) subqueries against the update-mutating table + s.CreateQuery("update Animal a set a.mother = (from Animal where id = 1) where a.id = 2").ExecuteUpdate(); + } + t.Commit(); s.Close(); } @@ -310,70 +310,70 @@ s.Close(); data.Cleanup(); - } + } [Test] public void UpdateOnAnimal() - { + { var data = new TestData(this); data.Prepare(); ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); int count = - s.CreateQuery("update Animal set description = description where description = :desc") - .SetString("desc", data.Frog.Description) + s.CreateQuery("update Animal set description = description where description = :desc") + .SetString("desc", data.Frog.Description) .ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect entity-updated count"); - + count = - s.CreateQuery("update Animal set description = :newDesc where description = :desc") - .SetString("desc",data.Polliwog.Description) - .SetString("newDesc", "Tadpole") + s.CreateQuery("update Animal set description = :newDesc where description = :desc") + .SetString("desc",data.Polliwog.Description) + .SetString("newDesc", "Tadpole") .ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect entity-updated count"); - + var tadpole = s.Load<Animal>(data.Polliwog.Id); Assert.That(tadpole.Description, Is.EqualTo("Tadpole"), "Update did not take effect"); - + count = s.CreateQuery("update Animal set bodyWeight = bodyWeight + :w1 + :w2") .SetDouble("w1", 1) - .SetDouble("w2", 2) + .SetDouble("w2", 2) .ExecuteUpdate(); Assert.That(count, Is.EqualTo(6), "incorrect count on 'complex' update assignment"); - + if (! (Dialect is MySQLDialect)) - { - // MySQL does not support (even un-correlated) subqueries against the update-mutating table - s.CreateQuery("update Animal set bodyWeight = ( select max(bodyWeight) from Animal )").ExecuteUpdate(); + { + // MySQL does not support (even un-correlated) subqueries against the update-mutating table + s.CreateQuery("update Animal set bodyWeight = ( select max(bodyWeight) from Animal )").ExecuteUpdate(); } t.Commit(); s.Close(); data.Cleanup(); - } + } [Test] public void UpdateOnMammal() - { + { var data = new TestData(this); data.Prepare(); ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - + int count = s.CreateQuery("update Mammal set description = description").ExecuteUpdate(); Assert.That(count, Is.EqualTo(2), "incorrect update count against 'middle' of joined-subclass hierarchy"); - + count = s.CreateQuery("update Mammal set bodyWeight = 25").ExecuteUpdate(); Assert.That(count, Is.EqualTo(2), "incorrect update count against 'middle' of joined-subclass hierarchy"); - + if (! (Dialect is MySQLDialect)) { - // MySQL does not support (even un-correlated) subqueries against the update-mutating table + // MySQL does not support (even un-correlated) subqueries against the update-mutating table count = s.CreateQuery("update Mammal set bodyWeight = ( select max(bodyWeight) from Animal )").ExecuteUpdate(); Assert.That(count, Is.EqualTo(2), "incorrect update count against 'middle' of joined-subclass hierarchy"); } @@ -462,7 +462,7 @@ s.Close(); data.Cleanup(); - } + } #endregion Copied: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/HqlFixture.cs (from rev 4248, trunk/nhibernate/src/NHibernate.Test/HQL/HqlFixture.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/HqlFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/HqlFixture.cs 2009-05-07 05:02:56 UTC (rev 4258) @@ -0,0 +1,95 @@ +using System.Collections; +using NHibernate.Engine.Query; +using NHibernate.Util; +using NUnit.Framework; + +namespace NHibernate.Test.HQL.Ast +{ + [TestFixture] + public class HqlFixture : BaseFixture + { + protected HQLQueryPlan CreateQueryPlan(string hql, bool scalar) + { + return new HQLQueryPlan(hql, scalar, new CollectionHelper.EmptyMapClass<string, IFilter>(), sessions); + } + + protected HQLQueryPlan CreateQueryPlan(string hql) + { + return CreateQueryPlan(hql, false); + } + + private static void Check(ReturnMetadata returnMetadata, bool expectingEmptyTypes, bool expectingEmptyAliases) + { + Assert.IsNotNull(returnMetadata, "null return metadata"); + Assert.IsNotNull(returnMetadata, "null return metadata - types"); + Assert.AreEqual(1, returnMetadata.ReturnTypes.Length, "unexpected return size"); + + if (expectingEmptyTypes) + { + Assert.IsNull(returnMetadata.ReturnTypes[0], "non-empty types"); + } + else + { + Assert.IsNotNull(returnMetadata.ReturnTypes[0], "empty types"); + } + + if (expectingEmptyAliases) + { + Assert.IsNull(returnMetadata.ReturnAliases, "non-empty aliases"); + } + else + { + Assert.IsNotNull(returnMetadata.ReturnAliases, "empty aliases"); + Assert.IsNotNull(returnMetadata.ReturnAliases[0], "empty aliases"); + } + } + + [Test] + public void ReturnMetadata() + { + HQLQueryPlan plan; + plan = CreateQueryPlan("from Animal a"); + Check(plan.ReturnMetadata, false, true); + + plan = CreateQueryPlan("select a as animal from Animal a"); + Check(plan.ReturnMetadata, false, false); + + plan = CreateQueryPlan("from System.Object"); + Check(plan.ReturnMetadata, true, true); + + plan = CreateQueryPlan("select o as entity from System.Object o"); + Check(plan.ReturnMetadata, true, false); + } + + [Test] + public void CaseClauseInSelect() + { + // NH-322 + using (ISession s = OpenSession()) + using (s.BeginTransaction()) + { + s.Save(new Animal {BodyWeight = 12, Description = "Polliwog"}); + s.Transaction.Commit(); + } + + using (ISession s = OpenSession()) + { + var l = s.CreateQuery("select a.id, case when a.description = 'Polliwog' then 2 else 0 end from Animal a").List(); + var element = (IList)l[0]; + Assert.That(element[1], Is.EqualTo(2)); + + // work with alias + l = s.CreateQuery("select a.id, case when a.description = 'Polliwog' then 2 else 0 end as value from Animal a").List(); + element = (IList)l[0]; + Assert.That(element[1], Is.EqualTo(2)); + } + + using (ISession s = OpenSession()) + using (s.BeginTransaction()) + { + s.CreateQuery("delete from Animal").ExecuteUpdate(); + s.Transaction.Commit(); + } + } + } +} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate.Test/HQL/HqlFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/HqlFixture.cs 2009-05-07 03:34:37 UTC (rev 4257) +++ trunk/nhibernate/src/NHibernate.Test/HQL/HqlFixture.cs 2009-05-07 05:02:56 UTC (rev 4258) @@ -1,74 +0,0 @@ -using System.Collections; -using NHibernate.Engine.Query; -using NHibernate.Util; -using NUnit.Framework; - -namespace NHibernate.Test.Hql -{ - [TestFixture, Ignore("Not supported yet.")] - public class HqlFixture : TestCase - { - protected override string MappingsAssembly - { - get { return "NHibernate.Test"; } - } - - protected override IList Mappings - { - get { return new[] {"HQL.Animal.hbm.xml"}; } - } - - protected HQLQueryPlan CreateQueryPlan(string hql, bool scalar) - { - return new HQLQueryPlan(hql, scalar, new CollectionHelper.EmptyMapClass<string, IFilter>(), sessions); - } - - protected HQLQueryPlan CreateQueryPlan(string hql) - { - return CreateQueryPlan(hql, false); - } - - private static void Check(ReturnMetadata returnMetadata, bool expectingEmptyTypes, bool expectingEmptyAliases) - { - Assert.IsNotNull(returnMetadata, "null return metadata"); - Assert.IsNotNull(returnMetadata, "null return metadata - types"); - Assert.AreEqual(1, returnMetadata.ReturnTypes.Length, "unexpected return size"); - - if (expectingEmptyTypes) - { - Assert.IsNull(returnMetadata.ReturnTypes[0], "non-empty types"); - } - else - { - Assert.IsNotNull(returnMetadata.ReturnTypes[0], "empty types"); - } - - if (expectingEmptyAliases) - { - Assert.IsNull(returnMetadata.ReturnAliases, "non-empty aliases"); - } - else - { - Assert.IsNotNull(returnMetadata.ReturnAliases, "empty aliases"); - Assert.IsNotNull(returnMetadata.ReturnAliases[0], "empty aliases"); - } - } - - [Test] - public void ReturnMetadata() - { - HQLQueryPlan plan; - plan = CreateQueryPlan("from Animal a"); - Check(plan.ReturnMetadata, false, true); - - plan = CreateQueryPlan("select a as animal from Animal a"); - Check(plan.ReturnMetadata, false, false); - - plan = CreateQueryPlan("from java.lang.Object"); - Check(plan.ReturnMetadata, true, true); - - plan = CreateQueryPlan("select o as entity from java.lang.Object o"); - Check(plan.ReturnMetadata, true, false); - } - } -} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-07 03:34:37 UTC (rev 4257) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-07 05:02:56 UTC (rev 4258) @@ -364,7 +364,7 @@ <Compile Include="HQL\SQLFunctionTemplateTest.cs" /> <Compile Include="BulkManipulation\NativeSQLBulkOperations.cs" /> <Compile Include="BulkManipulation\Vehicles.cs" /> - <Compile Include="HQL\HqlFixture.cs" /> + <Compile Include="HQL\Ast\HqlFixture.cs" /> <Compile Include="IdGen\Enhanced\SequenceStyleConfigUnitFixture.cs" /> <Compile Include="IdGen\NativeGuid\NativeGuidFixture.cs" /> <Compile Include="IdGen\NativeGuid\NativeGuidGeneratorFixture.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-07 15:04:39
|
Revision: 4261 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4261&view=rev Author: fabiomaulo Date: 2009-05-07 15:04:34 +0000 (Thu, 07 May 2009) Log Message: ----------- End porting tests for INSERT executable HQL Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-07 10:40:59 UTC (rev 4260) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-07 15:04:34 UTC (rev 4261) @@ -3,6 +3,8 @@ using System.Threading; using NHibernate.Dialect; using NHibernate.Hql.Ast.ANTLR; +using NHibernate.Id; +using NHibernate.Persister.Entity; using NUnit.Framework; namespace NHibernate.Test.HQL.Ast @@ -39,6 +41,7 @@ #endregion #region INSERTS + [Test] public void SimpleInsert() { @@ -61,6 +64,255 @@ data.Cleanup(); } + [Test] + public void InsertWithManyToOne() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + s.CreateQuery( + "insert into Animal (description, bodyWeight, mother) select description, bodyWeight, mother from Human"). + ExecuteUpdate(); + + t.Commit(); + t = s.BeginTransaction(); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] + public void InsertWithMismatchedTypes() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + Assert.Throws<QueryException>( + () => s.CreateQuery("insert into Pickup (Owner, Vin, id) select id, Vin, Owner from Car").ExecuteUpdate(), + "mismatched types did not error"); + + t.Commit(); + t = s.BeginTransaction(); + + s.CreateQuery("delete Vehicle").ExecuteUpdate(); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] + public void InsertIntoSuperclassPropertiesFails() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + Assert.Throws<QueryException>( + () => s.CreateQuery("insert into Human (id, bodyWeight) select id, bodyWeight from Lizard").ExecuteUpdate(), + "superclass prop insertion did not error"); + + t.Commit(); + t = s.BeginTransaction(); + + s.CreateQuery("delete Animal where mother is not null").ExecuteUpdate(); + s.CreateQuery("delete Animal where father is not null").ExecuteUpdate(); + s.CreateQuery("delete Animal").ExecuteUpdate(); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] + public void InsertAcrossMappedJoinFails() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + Assert.Throws<QueryException>( + () => s.CreateQuery("insert into Joiner (name, joinedName) select vin, owner from Car").ExecuteUpdate(), + "mapped-join insertion did not error"); + + t.Commit(); + t = s.BeginTransaction(); + + s.CreateQuery("delete Joiner").ExecuteUpdate(); + s.CreateQuery("delete Vehicle").ExecuteUpdate(); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + public void InsertWithGeneratedId() + { + // Make sure the env supports bulk inserts with generated ids... + IEntityPersister persister = sessions.GetEntityPersister(typeof (PettingZoo).FullName); + IIdentifierGenerator generator = persister.IdentifierGenerator; + if (!HqlSqlWalker.SupportsIdGenWithBulkInsertion(generator)) + { + return; + } + + // create a Zoo + var zoo = new Zoo {Name = "zoo"}; + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + s.Save(zoo); + t.Commit(); + s.Close(); + + s = OpenSession(); + t = s.BeginTransaction(); + int count = s.CreateQuery("insert into PettingZoo (name) select name from Zoo").ExecuteUpdate(); + t.Commit(); + s.Close(); + Assert.That(count, Is.EqualTo(1), "unexpected insertion count"); + + s = OpenSession(); + t = s.BeginTransaction(); + var pz = (PettingZoo) s.CreateQuery("from PettingZoo").UniqueResult(); + t.Commit(); + s.Close(); + + Assert.That(zoo.Name, Is.EqualTo(pz.Name)); + Assert.That(zoo.Id != pz.Id); + + s = OpenSession(); + t = s.BeginTransaction(); + s.CreateQuery("delete Zoo").ExecuteUpdate(); + t.Commit(); + s.Close(); + } + + [Test] + public void InsertWithGeneratedVersionAndId() + { + // Make sure the env supports bulk inserts with generated ids... + IEntityPersister persister = sessions.GetEntityPersister(typeof (IntegerVersioned).FullName); + IIdentifierGenerator generator = persister.IdentifierGenerator; + if (!HqlSqlWalker.SupportsIdGenWithBulkInsertion(generator)) + { + return; + } + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + var entity = new IntegerVersioned {Name = "int-vers"}; + s.Save(entity); + s.CreateQuery("select id, name, version from IntegerVersioned").List(); + t.Commit(); + s.Close(); + + long initialId = entity.Id; + int initialVersion = entity.Version; + + s = OpenSession(); + t = s.BeginTransaction(); + int count = s.CreateQuery("insert into IntegerVersioned ( name ) select name from IntegerVersioned").ExecuteUpdate(); + t.Commit(); + s.Close(); + + Assert.That(count, Is.EqualTo(1), "unexpected insertion count"); + + s = OpenSession(); + t = s.BeginTransaction(); + var created = + (IntegerVersioned) + s.CreateQuery("from IntegerVersioned where id <> :initialId").SetInt64("initialId", initialId).UniqueResult(); + t.Commit(); + s.Close(); + + Assert.That(created.Version, Is.EqualTo(initialVersion), "version was not seeded"); + + s = OpenSession(); + t = s.BeginTransaction(); + s.CreateQuery("delete IntegerVersioned").ExecuteUpdate(); + t.Commit(); + s.Close(); + } + + [Test] + public void InsertWithGeneratedTimestampVersion() + { + // Make sure the env supports bulk inserts with generated ids... + IEntityPersister persister = sessions.GetEntityPersister(typeof (TimestampVersioned).FullName); + IIdentifierGenerator generator = persister.IdentifierGenerator; + if (!HqlSqlWalker.SupportsIdGenWithBulkInsertion(generator)) + { + return; + } + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + var entity = new TimestampVersioned {Name = "int-vers"}; + s.Save(entity); + s.CreateQuery("select id, name, version from TimestampVersioned").List(); + t.Commit(); + s.Close(); + + long initialId = entity.Id; + //Date initialVersion = entity.getVersion(); + + s = OpenSession(); + t = s.BeginTransaction(); + int count = + s.CreateQuery("insert into TimestampVersioned ( name ) select name from TimestampVersioned").ExecuteUpdate(); + t.Commit(); + s.Close(); + + Assert.That(count, Is.EqualTo(1), "unexpected insertion count"); + + s = OpenSession(); + t = s.BeginTransaction(); + var created = + (TimestampVersioned) + s.CreateQuery("from TimestampVersioned where id <> :initialId").SetInt64("initialId", initialId).UniqueResult(); + t.Commit(); + s.Close(); + + Assert.That(created.Version, Is.GreaterThan(DateTime.Today)); + + s = OpenSession(); + t = s.BeginTransaction(); + s.CreateQuery("delete TimestampVersioned").ExecuteUpdate(); + t.Commit(); + s.Close(); + } + + [Test] + public void InsertWithSelectListUsingJoins() + { + // this is just checking parsing and syntax... + ISession s = OpenSession(); + s.BeginTransaction(); + s.CreateQuery( + "insert into Animal (description, bodyWeight) select h.description, h.bodyWeight from Human h where h.mother.mother is not null") + .ExecuteUpdate(); + s.CreateQuery("delete from Animal").ExecuteUpdate(); + s.Transaction.Commit(); + s.Close(); + } + #endregion #region UPDATES Deleted: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml 2009-05-07 10:40:59 UTC (rev 4260) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/FooBarCopy.hbm.xml 2009-05-07 15:04:34 UTC (rev 4261) @@ -1,140 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" - assembly="NHibernate.DomainModel" - namespace="NHibernate.DomainModel" - default-lazy="false"> - - <!-- a slightly modified copy of FooBar.hbm.xml from the legacy test package --> - - <class - name="Foo" - table="`foos`" - proxy="FooProxy" - discriminator-value="F" - batch-size="4" - dynamic-insert="true" - dynamic-update="true" - select-before-update="true"> - - <id name="key" type="string"> - <column name="`foo_idcolumnname123`" length="36"/> - <generator class="uuid.hex"> - <param name="seperator">:</param> - </generator> - </id> - - <discriminator column="`foo_subclass_1234`" type="character" force="true"/> - <version name="version"/> - - <many-to-one name="foo" class="Foo"> - <column name="foo" length="36" index="fbmtoidx"/> - </many-to-one> - - <property name="Long"> - <column name="long_" index="fbmtoidx" unique-key="abc" not-null="true"/> - </property> - <property name="Integer"> - <column name="`integer__`" unique-key="abc" not-null="true"/> - </property> - <property name="Float"> - <column name="float_" unique-key="abc" not-null="true" check="float_ > 0.0"/> - </property> - <property name="x"/> - <property name="Double" column="double_"/> - - <primitive-array name="bytes" table="foobytes"> - <key column="id"/> - <index column="i"/> - <element column="byte_" type="byte"/> - </primitive-array> - - <property name="Date" type="date" column="date_"/> - <property name="Timestamp" type="timestamp" column="timestamp_"/> - <property name="Boolean" column="boolean_"/> - <property name="Bool" column="bool_"/> - <property name="Null" column="null_"/> - <property name="Short" column="short_"/> - <property name="Char" column="char_"/> - <property name="Zero" column="zero_"/> - <property name="Int" column="int_"/> - <property name="String"> - <column name="string_" length="48" index="fbstridx"/> - </property> - <property name="Byte" column="byte_"/> - <property name="YesNo" type="yes_no"/> - <!-- - <property name="blob" type="org.hibernate.test.legacy.Foo$Struct" column="blobb_"/> - <property name="nullBlob" type="serializable"/> - <property name="binary" column="bin_"/> - --> - <property name="Locale" column="`localeayzabc123`" access="field.camelcase-underscore" type="locale"/> - - <property name="formula" formula="int_*2"/> - - <property name="Custom" type="NHibernate.DomainModel.DoubleStringType, NHibernate.DomainModel" access="field.camelcase"> - <column name="first_name" length="66"/> - <column name="surname" length="66"/> - </property> - - <component name="nullComponent"> - <property name="name" column="null_cmpnt_"/> - </component> - - <join table="jointable"> - <key column="fooid" on-delete="cascade"/> - <property name="joinedProp"/> - </join> - - <subclass - name="Trivial" - proxy="FooProxy" - discriminator-value="T"/> - - <subclass - name="Abstract" - proxy="AbstractProxy" - discriminator-value="null"> - <set name="abstracts" batch-size="2"> - <key column="abstract_id"/> - <one-to-many class="Abstract"/> - </set> - <property name="time" column="the_time"/> - - <subclass - name="Bar" - proxy="BarProxy" - discriminator-value="B"> - <property name="barString"> - <column name="bar_string" length="24"/> - </property> - <any name="object" meta-type="character" id-type="long" cascade="all"> - <meta-value value="O" class="One"/> - <meta-value value="M" class="Many"/> - <column name="clazz" length="100"/> - <column name="gen_id"/> - </any> - <join table="bar_join_table"> - <key column="bar_id"/> - <property name="name" column="name_name"/> - </join> - </subclass> - </subclass> - </class> - - <class name="One" table="one"> - <id name="key" column="one_key"> - <generator class="native" /> - </id> - <property name="x"/> - <property column="one_value" name="value"/> - </class> - - <class name="Many" table="many"> - <id name="key" column="many_key"> - <generator class="native" /> - </id> - <property name="x"/> - </class> - -</hibernate-mapping> - Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-07 10:40:59 UTC (rev 4260) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-07 15:04:34 UTC (rev 4261) @@ -42,6 +42,10 @@ <UseVSHostingProcess>false</UseVSHostingProcess> </PropertyGroup> <ItemGroup> + <Reference Include="Antlr3.Runtime, Version=3.1.0.39271, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\lib\net\2.0\Antlr3.Runtime.dll</HintPath> + </Reference> <Reference Include="Iesi.Collections, Version=1.0.0.1, Culture=neutral, PublicKeyToken=154fdcb44c4484fc"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\lib\net\2.0\Iesi.Collections.dll</HintPath> @@ -1750,7 +1754,6 @@ <EmbeddedResource Include="HQL\Ast\Animal.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\BooleanLiteralEntity.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\EntityWithCrazyCompositeKey.hbm.xml" /> - <Content Include="HQL\Ast\FooBarCopy.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\KeyManyToOneEntity.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\Multi.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\SimpleEntityWithAssociation.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2009-05-11 16:27:15
|
Revision: 4281 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4281&view=rev Author: tehlike Date: 2009-05-11 16:27:09 +0000 (Mon, 11 May 2009) Log Message: ----------- Ignored tests for NH-1391 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Animal.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Cat.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Dog.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture2.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Person.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAllTypes.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAnimals.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithCats.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithDogs.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithSivasKangals.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/SivasKangal.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Animal.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Animal.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Animal.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class Animal + { + public virtual int Id { get; set; } + public virtual string Name { get; set; } + public virtual Person Owner { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Cat.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Cat.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Cat.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class Cat:Animal + { + public virtual string EyeColor { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Dog.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Dog.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Dog.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class Dog:Animal + { + public virtual string Country { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + [TestFixture,Ignore] + public class Fixture:BugTestCase + { + protected override void OnSetUp() + { + using(var session=OpenSession()) + using(var tran=session.BeginTransaction()) + { + PersonWithAnimals personWithAnimals = new PersonWithAnimals {Name = "fabio"}; + PersonWithCats personWithCats = new PersonWithCats {Name = "dario"}; + PersonWithSivasKangals personWithSivasKangals = new PersonWithSivasKangals {Name = "tuna"}; + PersonWithDogs personWithDogs = new PersonWithDogs {Name = "davy"}; + + var animalForAnimals = new Animal {Name = "Pasha",Owner=personWithAnimals}; + var dogForAnimals = new Dog { Name = "Efe", Country = "Turkey", Owner = personWithAnimals }; + var catForAnimals = new Cat { Name = "Tekir", EyeColor = "green", Owner = personWithAnimals }; + var sivasKangalForAnimals = new SivasKangal { Name = "Karabas", Country = "Turkey", HouseAddress = "Atakoy", Owner = personWithAnimals }; + + personWithAnimals.AnimalsGeneric.Add(animalForAnimals); + personWithAnimals.AnimalsGeneric.Add(dogForAnimals); + personWithAnimals.AnimalsGeneric.Add(catForAnimals); + personWithAnimals.AnimalsGeneric.Add(sivasKangalForAnimals); + + var animalForCats = new Animal {Name = "Pasha2", Owner = personWithCats}; + var catForCats = new Cat { Name = "Tekir2", EyeColor = "green", Owner = personWithCats }; + var dogForCats = new Dog { Name = "Efe2", Country = "Turkey", Owner = personWithCats }; + personWithCats.AnimalsGeneric.Add(catForCats); + + var catForDogs = new Cat {Name = "Tekir3", EyeColor = "blue", Owner = personWithDogs}; + var dogForDogs = new Dog { Name = "Efe3", Country = "Turkey", Owner = personWithDogs }; + var sivasKangalForDogs = new SivasKangal { Name = "Karabas3", Country = "Turkey", HouseAddress = "Atakoy", Owner = personWithDogs }; + personWithDogs.AnimalsGeneric.Add(dogForDogs); + personWithDogs.AnimalsGeneric.Add(sivasKangalForDogs); + + var animalForSivasKangals = new Animal {Name = "Pasha4", Owner = personWithSivasKangals}; + var dogForSivasKangals = new Dog {Name = "Efe4", Country = "Turkey", Owner = personWithSivasKangals}; + var catForSivasKangals = new Cat {EyeColor = "red", Name = "Tekir4", Owner = personWithSivasKangals}; + var sivasKangalForSivasKangals = new SivasKangal { Name = "Karabas4", Country = "Turkey", HouseAddress = "Atakoy", Owner = personWithSivasKangals }; + personWithSivasKangals.AnimalsGeneric.Add(sivasKangalForSivasKangals); + + + session.Save(animalForCats); + session.Save(dogForCats); + + session.Save(catForDogs); + + session.Save(animalForSivasKangals); + session.Save(dogForSivasKangals); + session.Save(catForSivasKangals); + + session.Save(personWithAnimals); + session.Save(personWithCats); + session.Save(personWithDogs); + session.Save(personWithSivasKangals); + + + + tran.Commit(); + } + } + protected override void OnTearDown() + { + using (var session = OpenSession()) + using (var tran = session.BeginTransaction()) + { + session.Delete("from Animal"); + session.Delete("from Person"); + tran.Commit(); + } + } + + + [Test] + public void Can_discriminate_subclass_on_list_with_lazy_loading_when_used_get() + { + using (var session = OpenSession()) + using (var tran = session.BeginTransaction()) + { + var personWithAnimals = session.Get<PersonWithAnimals>(1); + var personWithCats = session.Get<PersonWithCats>(2); + var personWithDogs = session.Get<PersonWithDogs>(3); + var personWithSivasKangals = session.Get<PersonWithSivasKangals>(4); + + Assert.That(personWithAnimals.AnimalsGeneric,Has.Count.EqualTo(4)); + Assert.That(personWithAnimals.AnimalsNonGeneric, Has.Count.EqualTo(4)); + + Assert.That(personWithCats.CatsGeneric, Has.Count.EqualTo(1)); + Assert.That(personWithCats.CatsNonGeneric, Has.Count.EqualTo(1)); + + Assert.That(personWithDogs.DogsGeneric, Has.Count.EqualTo(2)); + Assert.That(personWithDogs.DogsNonGeneric, Has.Count.EqualTo(2)); + + Assert.That(personWithSivasKangals.SivasKangalsGeneric, Has.Count.EqualTo(1)); + Assert.That(personWithSivasKangals.SivasKangalsNonGeneric, Has.Count.EqualTo(1)); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture2.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture2.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Fixture2.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + [TestFixture,Ignore] + public class Fixture2:BugTestCase + { + protected override void OnSetUp() + { + using (var session = OpenSession()) + using (var tran = session.BeginTransaction()) + { + PersonWithAllTypes personWithAllTypes = new PersonWithAllTypes(); + Animal animal = new Animal { Name = "Pasha", Owner = personWithAllTypes }; + Dog dog = new Dog { Country = "Turkey", Name = "Kral", Owner = personWithAllTypes }; + SivasKangal sivasKangal = new SivasKangal + { + Name = "Karabas", + Country = "Turkey", + HouseAddress = "Address", + Owner = personWithAllTypes + }; + Cat cat = new Cat { Name = "Tekir", EyeColor = "Red", Owner = personWithAllTypes }; + personWithAllTypes.AnimalsGeneric.Add(animal); + personWithAllTypes.AnimalsGeneric.Add(cat); + personWithAllTypes.AnimalsGeneric.Add(dog); + personWithAllTypes.AnimalsGeneric.Add(sivasKangal); + session.Save(personWithAllTypes); + tran.Commit(); + } + } + protected override void OnTearDown() + { + using (var session = OpenSession()) + using (var tran = session.BeginTransaction()) + { + session.Delete("from Animal"); + session.Delete("from Person"); + tran.Commit(); + } + } + + + [Test] + public void Can_discriminate_subclass_on_list_with_lazy_loading_when_used_and_person_had_multiple_list() + { + using (var session = OpenSession()) + using (var tran = session.BeginTransaction()) + { + var personWithAnimals = session.Get<PersonWithAllTypes>(1); + Assert.That(personWithAnimals.AnimalsNonGeneric, Has.Count.EqualTo(4)); + Assert.That(personWithAnimals.AnimalsGeneric, Has.Count.EqualTo(4)); + Assert.That(personWithAnimals.CatsNonGeneric, Has.Count.EqualTo(1)); + Assert.That(personWithAnimals.CatsGeneric,Has.Count.EqualTo(1)); + Assert.That(personWithAnimals.DogsNonGeneric, Has.Count.EqualTo(2)); + Assert.That(personWithAnimals.DogsGeneric,Has.Count.EqualTo(2)); + Assert.That(personWithAnimals.SivasKangalsNonGeneric, Has.Count.EqualTo(1)); + Assert.That(personWithAnimals.SivasKangalsGeneric, Has.Count.EqualTo(1)); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Mappings.hbm.xml 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1391"> + + <class name="Animal" discriminator-value="0"> + <id name="Id" type="int"> + <generator class="native"/> + </id> + <discriminator column="AnimalType" type="int"/> + <property name="Name" type="string"/> + <many-to-one name="Owner" class="Person" column="OwnerId"/> + <subclass name="Cat" discriminator-value="1"/> + <subclass name="Dog" discriminator-value="2"> + <property name="Country"/> + <subclass name="SivasKangal" discriminator-value="3"> + <property name="HouseAddress"></property> + </subclass> + </subclass> + </class> + <class name="Person" discriminator-value="0"> + <id name="Id"> + <generator class="native"/> + </id> + + <discriminator column="PersonType" type="int"/> + <property name="Name"/> + <bag name="AnimalsNonGeneric" lazy="true" inverse="true" cascade="save-update"> + <key column="OwnerId" /> + <one-to-many class="Animal"/> + </bag> + <bag name="AnimalsGeneric" lazy="true" inverse="true" cascade="save-update"> + <key column="OwnerId" /> + <one-to-many class="Animal"/> + </bag> + <subclass name="PersonWithAnimals" discriminator-value="1"> + + </subclass> + <subclass name="PersonWithCats" discriminator-value="2"> + <bag name="CatsGeneric" lazy="true" inverse="true" cascade="save-update"> + <key column="OwnerId" /> + <one-to-many class="Cat"/> + </bag> + <bag name="CatsNonGeneric" lazy="true" inverse="true" cascade="save-update"> + <key column="OwnerId" /> + <one-to-many class="Cat"/> + </bag> + </subclass> + <subclass name="PersonWithDogs" discriminator-value="3"> + <bag name="DogsGeneric" lazy="true" inverse="true" cascade="save-update"> + <key column="OwnerId" /> + <one-to-many class="Dog"/> + </bag> + <bag name="DogsNonGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="Dog"/> + </bag> + </subclass> + <subclass name="PersonWithSivasKangals" discriminator-value="4"> + <bag name="SivasKangalsGeneric" lazy="true" inverse="true" cascade="save-update"> + <key column="OwnerId" /> + <one-to-many class="SivasKangal"/> + </bag> + <bag name="SivasKangalsNonGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="SivasKangal"/> + </bag> + </subclass> + <subclass name="PersonWithAllTypes" discriminator-value="5"> + <bag name="DogsGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="Dog"/> + </bag> + <bag name="DogsNonGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="Dog"/> + </bag> + <bag name="CatsGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="Cat"/> + </bag> + <bag name="CatsNonGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="Cat"/> + </bag> + <bag name="SivasKangalsGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="SivasKangal"/> + </bag> + <bag name="SivasKangalsNonGeneric" lazy="true" inverse="true"> + <key column="OwnerId" /> + <one-to-many class="SivasKangal"/> + </bag> + </subclass> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Person.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Person.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/Person.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,20 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class Person + { + public Person() + { + this.AnimalsGeneric = new List<Animal>(); + this.AnimalsNonGeneric = new ArrayList(); + } + public virtual int Id { get; set; } + public virtual string Name { get; set; } + public virtual IList<Animal> AnimalsGeneric { get; set; } + public virtual IList AnimalsNonGeneric { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAllTypes.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAllTypes.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAllTypes.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class PersonWithAllTypes:Person + { + public virtual IList<Dog> DogsNonGeneric { get; set; } + public virtual IList<SivasKangal> SivasKangalsNonGeneric { get; set; } + public virtual IList<Cat> CatsNonGeneric { get; set; } + + + public virtual IList<Dog> DogsGeneric { get; set; } + public virtual IList<SivasKangal> SivasKangalsGeneric { get; set; } + public virtual IList<Cat> CatsGeneric { get; set; } + } + +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAnimals.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAnimals.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithAnimals.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,16 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class PersonWithAnimals:Person + { + public PersonWithAnimals() + { + + } + + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithCats.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithCats.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithCats.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,18 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class PersonWithCats : Person + { + public PersonWithCats() + { + this.CatsGeneric = new List<Cat>(); + this.CatsNonGeneric = new ArrayList(); + } + public virtual IList CatsNonGeneric { get; set; } + public virtual IList<Cat> CatsGeneric { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithDogs.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithDogs.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithDogs.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,18 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class PersonWithDogs : Person + { + public PersonWithDogs() + { + this.DogsGeneric = new List<Dog>(); + this.DogsNonGeneric = new ArrayList(); + } + public virtual IList DogsNonGeneric { get; set; } + public virtual IList<Dog> DogsGeneric { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithSivasKangals.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithSivasKangals.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/PersonWithSivasKangals.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,18 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class PersonWithSivasKangals:Person + { + public PersonWithSivasKangals() + { + this.SivasKangalsGeneric = new List<SivasKangal>(); + this.SivasKangalsNonGeneric = new ArrayList(); + } + public virtual IList SivasKangalsNonGeneric { get; set; } + public virtual IList<SivasKangal> SivasKangalsGeneric { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/SivasKangal.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/SivasKangal.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1391/SivasKangal.cs 2009-05-11 16:27:09 UTC (rev 4281) @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1391 +{ + public class SivasKangal:Dog + { + public virtual string HouseAddress { get; set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-11 14:51:46 UTC (rev 4280) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-11 16:27:09 UTC (rev 4281) @@ -332,6 +332,20 @@ <Compile Include="NHSpecificTest\Futures\FutureFixture.cs" /> <Compile Include="NHSpecificTest\Logs\LogsFixture.cs" /> <Compile Include="NHSpecificTest\Logs\Person.cs" /> + <Compile Include="NHSpecificTest\NH1391\Animal.cs" /> + <Compile Include="NHSpecificTest\NH1391\Cat.cs" /> + <Compile Include="NHSpecificTest\NH1391\Dog.cs" /> + <Compile Include="NHSpecificTest\NH1391\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1391\Fixture2.cs" /> + <Compile Include="NHSpecificTest\NH1391\Person.cs" /> + <Compile Include="NHSpecificTest\NH1391\PersonWithAllTypes.cs" /> + <Compile Include="NHSpecificTest\NH1391\PersonWithAnimals.cs" /> + <Compile Include="NHSpecificTest\NH1391\PersonWithCats.cs" /> + <Compile Include="NHSpecificTest\NH1391\PersonWithDogs.cs" /> + <Compile Include="NHSpecificTest\NH1391\PersonWithSivasKangals.cs" /> + <Compile Include="NHSpecificTest\NH1391\SivasKangal.cs" /> + <Compile Include="NHSpecificTest\NH1393\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1393\Person.cs" /> <Compile Include="NHSpecificTest\NH1635\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1635\ForumMessage.cs" /> <Compile Include="NHSpecificTest\NH1635\ForumThread.cs" /> @@ -611,8 +625,6 @@ <Compile Include="NHSpecificTest\NH1355\Category.cs" /> <Compile Include="NHSpecificTest\NH1355\CustomVersionType.cs" /> <Compile Include="NHSpecificTest\NH1355\UserTypeTimestamp.cs" /> - <Compile Include="NHSpecificTest\NH1393\Fixture.cs" /> - <Compile Include="NHSpecificTest\NH1393\Person.cs" /> <Compile Include="NHSpecificTest\NH1394\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1394\Person.cs" /> <Compile Include="NHSpecificTest\NH1399\Fixture.cs" /> @@ -1754,6 +1766,8 @@ <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1393\Mappings.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH1391\Mappings.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\Animal.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\BooleanLiteralEntity.hbm.xml" /> <EmbeddedResource Include="HQL\Ast\EntityWithCrazyCompositeKey.hbm.xml" /> @@ -1906,7 +1920,6 @@ <EmbeddedResource Include="NHSpecificTest\NH1413\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1304\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1408\Mappings.hbm.xml" /> - <EmbeddedResource Include="NHSpecificTest\NH1393\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1394\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1405\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1403\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-13 19:31:22
|
Revision: 4292 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4292&view=rev Author: fabiomaulo Date: 2009-05-13 19:31:17 +0000 (Wed, 13 May 2009) Log Message: ----------- Test for NH-1760 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/DomainClass.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/SampleTest.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/DomainClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/DomainClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/DomainClass.cs 2009-05-13 19:31:17 UTC (rev 4292) @@ -0,0 +1,60 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1760 +{ + public class Customer + { + public Int32 Id { get; set; } + public String Name { get; set; } + } + + public class TestClass + { + public TestClassId Id { get; set; } + public String Value { get; set; } + } + + public class TestClassId + { + public Customer Customer { get; set; } + public Int32 SomeInt { get; set; } + + public bool Equals(TestClassId other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.Customer, Customer) && other.SomeInt == SomeInt; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + if (ReferenceEquals(this, obj)) + { + return true; + } + if (obj.GetType() != typeof (TestClassId)) + { + return false; + } + return Equals((TestClassId) obj); + } + + public override int GetHashCode() + { + unchecked + { + return ((Customer != null ? Customer.GetHashCode() : 0) * 397) ^ SomeInt; + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/Mappings.hbm.xml 2009-05-13 19:31:17 UTC (rev 4292) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1760" + default-lazy="false"> + + <class name="Customer"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="Name" /> + </class> + + <class name="TestClass" > + <composite-id name="Id" class="TestClassId"> + <key-many-to-one class="Customer" name="Customer" /> + <key-property name="SomeInt" /> + </composite-id> + <property name="Value" /> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/SampleTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/SampleTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1760/SampleTest.cs 2009-05-13 19:31:17 UTC (rev 4292) @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1760 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + private void FillDb() + { + using (ISession session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + var customer = new Customer {Name = "Alkampfer"}; + session.Save(customer); + var testClass = new TestClass {Id = new TestClassId{Customer = customer, SomeInt = 42}, Value = "TESTVALUE"}; + session.Save(testClass); + tx.Commit(); + } + } + + private void Cleanup() + { + using (ISession session = OpenSession()) + using (var tx = session.BeginTransaction()) + { + session.CreateQuery("from TestClass").ExecuteUpdate(); + session.CreateQuery("from Customer").ExecuteUpdate(); + tx.Commit(); + } + } + + [Test, Ignore("Not fixed yet.")] + public void CanUseCriteria() + { + FillDb(); + int hqlCount; + int criteriaCount; + using (ISession session = OpenSession()) + { + IList<TestClass> retvalue = + session.CreateQuery("Select tc from TestClass tc where tc.Id.Customer.Name = :name").SetString("name", "Alkampfer") + .List<TestClass>(); + hqlCount = retvalue.Count; + } + + using (ISession session = OpenSession()) + { + ICriteria c = + session.CreateCriteria(typeof (TestClass)).CreateAlias("Id.Customer", "IdCust").Add(Restrictions.Eq("IdCust.Name", + "Alkampfer")); + IList<TestClass> retvalue = c.List<TestClass>(); + criteriaCount = retvalue.Count; + } + Assert.That(hqlCount == criteriaCount); + Assert.That(hqlCount, Is.EqualTo(1)); + + Cleanup(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-13 16:35:33 UTC (rev 4291) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-13 19:31:17 UTC (rev 4292) @@ -377,6 +377,8 @@ <Compile Include="NHSpecificTest\NH1741\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1742\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1742\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1760\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1760\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH645\HQLFunctionFixture.cs" /> <Compile Include="HQL\HQLFunctions.cs" /> <Compile Include="HQL\Human.cs" /> @@ -1768,6 +1770,7 @@ <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1760\Mappings.hbm.xml" /> <EmbeddedResource Include="MappingTest\Wicked.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1393\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1391\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2009-05-14 11:43:21
|
Revision: 4300 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4300&view=rev Author: steverstrong Date: 2009-05-14 11:43:14 +0000 (Thu, 14 May 2009) Log Message: ----------- Added test for NH-1773 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Domain.cs 2009-05-14 11:43:14 UTC (rev 4300) @@ -0,0 +1,80 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1773 +{ + public class Person + { + private string _name; + private int _age; + private int _id; + private Country _country; + + public virtual int Id + { + get { return _id; } + set { _id = value; } + } + + public virtual string Name + { + get { return _name; } + set { _name = value; } + } + + public virtual int Age + { + get { return _age; } + set { _age = value; } + } + + public virtual Country Country + { + get { return _country; } + set { _country = value; } + } + } + + public class Country + { + private int _id; + private string _name; + + public virtual int Id + { + get { return _id; } + set { _id = value; } + } + + public virtual string Name + { + get { return _name; } + set { _name = value; } + } + } + + public class PersonResult + { + private Person _person; + private DateTime _time; + + public PersonResult(Person x) + { + } + + public PersonResult(Person person, DateTime time) + { + _person = person; + _time = time; + } + + public Person Person + { + get { return _person; } + } + + public DateTime Time + { + get { return _time; } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs 2009-05-14 11:43:14 UTC (rev 4300) @@ -0,0 +1,63 @@ +using System; +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1773 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void Configure(NHibernate.Cfg.Configuration configuration) + { + base.Configure(configuration); + //configuration.SetProperty(NHibernate.Cfg.Environment.QueryTranslator, typeof(NHibernate.Hql.Classic.ClassicQueryTranslatorFactory).AssemblyQualifiedName); + } + + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] { "NHSpecificTest.NH1773.Person.hbm.xml"}; } + } + + [Test] + public void CustomHQLFunctionsShouldBeRecognizedByTheParser() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + Country c = new Country() {Id = 100, Name = "US"}; + Person p = new Person() {Age = 35, Name = "My Name", Id=1, Country = c}; + s.Save(c); + s.Save(p); + tx.Commit(); + } + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + IList result = s.CreateQuery("select new PersonResult(p, current_timestamp()) from Person p left join fetch p.Country").List(); + + Assert.AreEqual("My Name", ((PersonResult)result[0]).Person.Name); + Assert.IsTrue(NHibernateUtil.IsInitialized(((PersonResult)result[0]).Person.Country)); + tx.Commit(); + } + } + + protected override void OnTearDown() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from Person"); + s.Delete("from Country"); + tx.Commit(); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml 2009-05-14 11:43:14 UTC (rev 4300) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.NH1773"> + <import class="PersonResult" /> + <class name="Person" table="Person"> + <id name="Id" column="id" unsaved-value="0"> + <generator class="assigned" /> + </id> + <property name="Name" column="Name" /> + <property name="Age" column="Age" /> + <many-to-one name="Country" class="Country" column="CountryId" /> + </class> + + <class name="Country" table="Country"> + <id name="Id" column="Id" unsaved-value="0"> + <generator class="assigned" /> + </id> + <property name="Name" column="Name" /> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-14 11:35:34 UTC (rev 4299) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-14 11:43:14 UTC (rev 4300) @@ -381,6 +381,8 @@ <Compile Include="NHSpecificTest\NH1742\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1760\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1760\SampleTest.cs" /> + <Compile Include="NHSpecificTest\NH1773\Domain.cs" /> + <Compile Include="NHSpecificTest\NH1773\Fixture.cs" /> <Compile Include="NHSpecificTest\NH645\HQLFunctionFixture.cs" /> <Compile Include="HQL\HQLFunctions.cs" /> <Compile Include="HQL\Human.cs" /> @@ -1773,6 +1775,7 @@ <EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" /> <EmbeddedResource Include="Ado\VerySimple.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1773\Person.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1760\Mappings.hbm.xml" /> <EmbeddedResource Include="MappingTest\Wicked.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1393\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-14 14:53:01
|
Revision: 4302 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4302&view=rev Author: fabiomaulo Date: 2009-05-14 14:52:56 +0000 (Thu, 14 May 2009) Log Message: ----------- Passing test Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Mappings.hbm.xml Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs 2009-05-14 14:44:13 UTC (rev 4301) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Fixture.cs 2009-05-14 14:52:56 UTC (rev 4302) @@ -1,28 +1,11 @@ -using System; -using System.Collections; -using NUnit.Framework; +using NUnit.Framework; +using System.Collections.Generic; namespace NHibernate.Test.NHSpecificTest.NH1773 { [TestFixture] public class Fixture : BugTestCase { - protected override void Configure(NHibernate.Cfg.Configuration configuration) - { - base.Configure(configuration); - configuration.SetProperty(NHibernate.Cfg.Environment.QueryTranslator, typeof(NHibernate.Hql.Classic.ClassicQueryTranslatorFactory).AssemblyQualifiedName); - } - - protected override string MappingsAssembly - { - get { return "NHibernate.Test"; } - } - - protected override IList Mappings - { - get { return new[] { "NHSpecificTest.NH1773.Person.hbm.xml"}; } - } - [Test] public void CustomHQLFunctionsShouldBeRecognizedByTheParser() { @@ -41,10 +24,10 @@ using (ISession s = OpenSession()) using (ITransaction tx = s.BeginTransaction()) { - IList result = s.CreateQuery("select new PersonResult(p, current_timestamp()) from Person p left join fetch p.Country").List(); + IList<PersonResult> result = s.CreateQuery("select new PersonResult(p, current_timestamp()) from Person p left join fetch p.Country").List<PersonResult>(); - Assert.AreEqual("My Name", ((PersonResult)result[0]).Person.Name); - Assert.IsTrue(NHibernateUtil.IsInitialized(((PersonResult)result[0]).Person.Country)); + Assert.AreEqual("My Name", result[0].Person.Name); + Assert.IsTrue(NHibernateUtil.IsInitialized(result[0].Person.Country)); tx.Commit(); } } @@ -54,8 +37,8 @@ using (ISession s = OpenSession()) using (ITransaction tx = s.BeginTransaction()) { - s.Delete("from Person"); - s.Delete("from Country"); + s.CreateQuery("delete from Person").ExecuteUpdate(); + s.CreateQuery("delete from Country").ExecuteUpdate(); tx.Commit(); } } Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Mappings.hbm.xml (from rev 4300, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Mappings.hbm.xml 2009-05-14 14:52:56 UTC (rev 4302) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.NH1773"> + <import class="PersonResult" /> + <class name="Person" table="Person"> + <id name="Id" column="id" unsaved-value="0"> + <generator class="assigned" /> + </id> + <property name="Name" column="Name" /> + <property name="Age" column="Age" /> + <many-to-one name="Country" class="Country" column="CountryId" /> + </class> + + <class name="Country" table="Country"> + <id name="Id" column="Id" unsaved-value="0"> + <generator class="assigned" /> + </id> + <property name="Name" column="Name" /> + </class> +</hibernate-mapping> \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml 2009-05-14 14:44:13 UTC (rev 4301) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1773/Person.hbm.xml 2009-05-14 14:52:56 UTC (rev 4302) @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.NH1773"> - <import class="PersonResult" /> - <class name="Person" table="Person"> - <id name="Id" column="id" unsaved-value="0"> - <generator class="assigned" /> - </id> - <property name="Name" column="Name" /> - <property name="Age" column="Age" /> - <many-to-one name="Country" class="Country" column="CountryId" /> - </class> - - <class name="Country" table="Country"> - <id name="Id" column="Id" unsaved-value="0"> - <generator class="assigned" /> - </id> - <property name="Name" column="Name" /> - </class> -</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-14 14:44:13 UTC (rev 4301) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-14 14:52:56 UTC (rev 4302) @@ -1775,7 +1775,7 @@ <EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" /> <EmbeddedResource Include="Ado\VerySimple.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> - <EmbeddedResource Include="NHSpecificTest\NH1773\Person.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH1773\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1760\Mappings.hbm.xml" /> <EmbeddedResource Include="MappingTest\Wicked.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1393\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |