From: <fab...@us...> - 2009-05-04 23:45:32
|
Revision: 4240 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4240&view=rev Author: fabiomaulo Date: 2009-05-04 23:45:28 +0000 (Mon, 04 May 2009) Log Message: ----------- End porting tests for DELETE executable HQL Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:18:12 UTC (rev 4239) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:45:28 UTC (rev 4240) @@ -35,7 +35,49 @@ #endregion + #region DELETES + [Test] + public void DeleteWithSubquery() + { + // setup the test data... + ISession s = OpenSession(); + s.BeginTransaction(); + var owner = new SimpleEntityWithAssociation { Name = "myEntity-1" }; + owner.AddAssociation("assoc-1"); + owner.AddAssociation("assoc-2"); + owner.AddAssociation("assoc-3"); + s.Save(owner); + var owner2 = new SimpleEntityWithAssociation { Name = "myEntity-2" }; + owner2.AddAssociation("assoc-1"); + owner2.AddAssociation("assoc-2"); + owner2.AddAssociation("assoc-3"); + owner2.AddAssociation("assoc-4"); + s.Save(owner2); + var owner3 = new SimpleEntityWithAssociation { Name = "myEntity-3" }; + s.Save(owner3); + s.Transaction.Commit(); + s.Close(); + + // now try the bulk delete + s = OpenSession(); + s.BeginTransaction(); + int count = s.CreateQuery("delete SimpleEntityWithAssociation e where size(e.AssociatedEntities ) = 0 and e.Name like '%'") + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect delete count"); + s.Transaction.Commit(); + s.Close(); + + // finally, clean up + s = OpenSession(); + s.BeginTransaction(); + s.CreateQuery("delete SimpleAssociatedEntity").ExecuteUpdate(); + s.CreateQuery("delete SimpleEntityWithAssociation").ExecuteUpdate(); + s.Transaction.Commit(); + s.Close(); + } + + [Test] public void SimpleDeleteOnAnimal() { if (Dialect.HasSelfReferentialForeignKeyBug) @@ -246,6 +288,8 @@ s.Close(); } + #endregion + private class TestData { private readonly BulkManipulation tc; Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs 2009-05-04 23:18:12 UTC (rev 4239) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleAssociatedEntity.cs 2009-05-04 23:45:28 UTC (rev 4240) @@ -30,12 +30,12 @@ if (owner != this.owner) { UnbindFromCurrentOwner(); - if (owner != null) - { - owner.AssociatedEntities.Add(this); - } } this.owner = owner; + if (owner != null) + { + owner.AssociatedEntities.Add(this); + } } public virtual void UnbindFromCurrentOwner() Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs 2009-05-04 23:18:12 UTC (rev 4239) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleEntityWithAssociation.cs 2009-05-04 23:45:28 UTC (rev 4240) @@ -1,3 +1,4 @@ +using System; using Iesi.Collections; namespace NHibernate.Test.HQL.Ast @@ -32,5 +33,29 @@ get { return manyToManyAssociatedEntities; } set { manyToManyAssociatedEntities = value; } } + + public virtual SimpleAssociatedEntity AddAssociation(string aName) + { + var result = new SimpleAssociatedEntity {Name = aName, Owner = this}; + AddAssociation(result); + return result; + } + + public virtual void AddAssociation(SimpleAssociatedEntity association) + { + association.BindToOwner(this); + } + + public virtual void RemoveAssociation(SimpleAssociatedEntity association) + { + if (AssociatedEntities.Contains(association)) + { + association.UnbindFromCurrentOwner(); + } + else + { + throw new ArgumentException("SimpleAssociatedEntity [" + association + "] not currently bound to this [" + this + "]"); + } + } } } \ 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-06-18 18:51:05
|
Revision: 4488 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4488&view=rev Author: fabiomaulo Date: 2009-06-18 18:51:03 +0000 (Thu, 18 Jun 2009) Log Message: ----------- Additional tests to fix for ANTR parser Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2009-06-16 14:29:49 UTC (rev 4487) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2009-06-18 18:51:03 UTC (rev 4488) @@ -43,5 +43,12 @@ qt.Compile(null, false); return qt.SQLString; } + + public string GetSqlWithClassicParser(string query) + { + var qt = new NHibernate.Hql.Classic.QueryTranslator(null, query, emptyfilters, sessions); + qt.Compile(new Dictionary<string, string>(), false); + return qt.SQLString; + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs 2009-06-16 14:29:49 UTC (rev 4487) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs 2009-06-18 18:51:03 UTC (rev 4488) @@ -12,5 +12,25 @@ Assert.That(GetSql(query), Text.StartsWith("select 123.5")); } + + [Test, Ignore("Not fixed yet.")] + public void CaseClauseWithMath() + { + const string query = "from SimpleClass s where (case when s.IntValue > 0 then (cast(s.IntValue as long) * :pAValue) else 1 end) > 0"; + Assert.DoesNotThrow(() => GetSql(query)); + + // This query fail because parenthesis on the math operation and does not fail in the old parser + const string queryWithoutParen = "from SimpleClass s where (case when s.IntValue > 0 then cast(s.IntValue as long) * :pAValue else 1 end) > 0"; + Assert.DoesNotThrow(() => GetSqlWithClassicParser(queryWithoutParen)); + Assert.DoesNotThrow(() => GetSql(queryWithoutParen)); + } + + [Test, Ignore("Not fixed yet.")] + public void Union() + { + const string query = "from SimpleClass s where s.id in ((select s1.id from SimpleClass s1) union (select s2.id from SimpleClass s2))"; + Assert.DoesNotThrow(() => GetSqlWithClassicParser(query)); + Assert.DoesNotThrow(() => GetSql(query)); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |