From: Michael D. <mik...@us...> - 2004-07-16 03:29:44
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24586/nhibernate/src/NHibernate.Test Modified Files: FooBarTest.cs Log Message: Implemented more tests Index: FooBarTest.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/FooBarTest.cs,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** FooBarTest.cs 15 Jul 2004 19:16:39 -0000 1.45 --- FooBarTest.cs 16 Jul 2004 03:29:25 -0000 1.46 *************** *** 2590,2596 **** [Test] - [Ignore("Test not written yet.")] public void AuotFlushCollections() { } --- 2590,2667 ---- [Test] public void AuotFlushCollections() { + ISession s = sessions.OpenSession(); + ITransaction tx = s.BeginTransaction(); + Baz baz = new Baz(); + baz.SetDefaults(); + s.Save(baz); + tx.Commit(); + s.Close(); + + s = sessions.OpenSession(); + tx = s.BeginTransaction(); + baz = (Baz)s.Load( typeof(Baz), baz.Code ); + baz.StringArray[0] = "bark"; + IEnumerator e = s.Enumerable("select baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz").GetEnumerator(); + bool found = false; + while( e.MoveNext() ) + { + if ( "bark".Equals( e.Current ) ) + { + found = true; + } + } + Assert.IsTrue(found); + baz.StringArray = null; + e = s.Enumerable("select distinct baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz").GetEnumerator(); + Assert.IsFalse( e.MoveNext() ); + baz.StringArray = new string[] {"foo", "bar"}; + e = s.Enumerable("select baz.StringArray.elements from baz in class NHibernate.DomainModel.Baz").GetEnumerator(); + Assert.IsTrue( e.MoveNext() ); + + Foo foo = new Foo(); + s.Save(foo); + s.Flush(); + baz.FooArray = new Foo[]{foo}; + + e = s.Enumerable("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements").GetEnumerator(); + found = false; + while( e.MoveNext() ) + { + if ( foo==e.Current ) + { + found = true; + } + } + Assert.IsTrue(found); + + baz.FooArray[0] = null; + e = s.Enumerable("select foo from baz in class NHibernate.DomainModel.Baz, foo in baz.FooArray.elements").GetEnumerator(); + Assert.IsFalse( e.MoveNext() ); + baz.FooArray[0] = foo; + e = s.Enumerable("select baz.FooArray.elements from baz in class NHibernate.DomainModel.Baz").GetEnumerator(); + Assert.IsTrue( e.MoveNext() ); + + if( !(dialect is Dialect.MySQLDialect) + // HSQLDialect, InterbaseDialect, PointbaseDialect, SAPDBDialect + ) + { + baz.FooArray[0] = null; + e = s.Enumerable("from baz in class NHibernate.DomainModel.Baz where ? in baz.FooArray.elements", + foo, + NHibernate.Entity( typeof(Foo) ) ).GetEnumerator(); + + Assert.IsFalse( e.MoveNext() ); + baz.FooArray[0] = foo; + e = s.Enumerable("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)" + ).GetEnumerator(); + Assert.IsTrue( e.MoveNext() ); + } + s.Delete(foo); + s.Delete(baz); + tx.Commit(); + s.Close(); } |