From: Michael D. <mik...@us...> - 2004-08-31 20:37:39
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/NHSpecificTest In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9207/src/NHibernate.Test/NHSpecificTest Modified Files: BasicClassFixture.cs Added Files: BasicObjectFixture.cs BasicSerializableFixture.cs Log Message: Beginning to isolate the Types so I can figure out what is ADO.NET driver problems and which are NHibernate problems. NH works great with Ms Sql 2000, but not so great with MySql & Oracle. Index: BasicClassFixture.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/NHSpecificTest/BasicClassFixture.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BasicClassFixture.cs 16 Aug 2004 05:15:10 -0000 1.3 --- BasicClassFixture.cs 31 Aug 2004 20:37:29 -0000 1.4 *************** *** 231,251 **** AssertPropertiesEqual(bc[index-1], bc[index]); - bc[index].SerializableProperty = new SerializableClass(); - bc[index].SerializableProperty._classId = 1; - bc[index].SerializableProperty._classString = "one string"; - s[index].Update(bc[index]); - - t[index].Commit(); - s[index].Close(); - - index++; - - // make sure the previous updates went through - s[index] = sessions.OpenSession(); - t[index] = s[index].BeginTransaction(); - - bc[index] = (BasicClass)s[index].Load(typeof(BasicClass), id); - AssertPropertiesEqual(bc[index-1], bc[index]); - bc[index].SingleProperty = bc[index].SingleProperty * -1; s[index].Update(bc[index]); --- 231,234 ---- *************** *** 856,860 **** Assert.AreEqual(expected.Int32Property, actual.Int32Property, "Int32Property"); Assert.AreEqual(expected.Int64Property, actual.Int64Property, "Int64Property"); - Assert.AreEqual(expected.SerializableProperty, actual.SerializableProperty, "SerializableProperty"); Assert.AreEqual(expected.SingleProperty, actual.SingleProperty, 0, "SingleProperty"); Assert.AreEqual(expected.StringProperty, actual.StringProperty, "StringProperty"); --- 839,842 ---- *************** *** 892,899 **** basicClass.Int64Property = Int64.MaxValue; - basicClass.SerializableProperty = new SerializableClass(); - basicClass.SerializableProperty._classId = 2; - basicClass.SerializableProperty._classString = "string"; - // more MySql problems - it returns 3.40282E38 // instead of 3.402823E+38 which is Single.MaxValue --- 874,877 ---- --- NEW FILE: BasicSerializableFixture.cs --- using System; using System.Collections; using NHibernate.DomainModel.NHSpecific; using NUnit.Framework; namespace NHibernate.Test.NHSpecificTest { /// <summary> /// TestFixture for <c>type="Serializable"</c> in use by classes. It test a Property /// that is mapped specifically by <c>type="Serializable"</c> and another Property /// whose type is a class that is serializable. /// </summary> [TestFixture] public class BasicSerializableFixture : TestCase { [SetUp] public void SetUp() { ExportSchema( new string[] { "NHSpecific.BasicSerializable.hbm.xml"}, true ); } /// <summary> /// This contains portions of FumTest.CompositeIDs that deal with <c>type="Serializable"</c> /// and replacements Foo.NullBlob, and Foo.Blob. /// </summary> [Test] public void TestCRUD() { ISession s = sessions.OpenSession(); BasicSerializable ser = new BasicSerializable(); SerializableClass serClass = ser.SerializableProperty; s.Save(ser); s.Flush(); s.Close(); s = sessions.OpenSession(); ser = (BasicSerializable)s.Load( typeof(BasicSerializable), ser.Id ); Assert.IsNull( ser.Serial , "should have saved as null" ); ser.Serial = ser.SerializableProperty; s.Flush(); s.Close(); s = sessions.OpenSession(); ser = (BasicSerializable)s.Load( typeof(BasicSerializable), ser.Id ); Assert.IsTrue( ser.Serial is SerializableClass, "should have been a SerializableClass" ); Assert.AreEqual( ser.SerializableProperty, ser.Serial, "SerializablePorperty and Serial should both be 5 and 'serialize me'" ); IDictionary props = new Hashtable(); props["foo"] = "bar"; props["bar"] = "foo"; ser.Serial = props; s.Flush(); props["x"] = "y"; s.Flush(); s.Close(); s = sessions.OpenSession(); ser = (BasicSerializable)s.Load( typeof(BasicSerializable), ser.Id ); props = (IDictionary)ser.Serial; Assert.AreEqual( "bar", props["foo"] ); Assert.AreEqual( "y", props["x"] ); Assert.AreEqual( serClass, ser.SerializableProperty ); ser.SerializableProperty._classString = "modify me"; s.Flush(); s.Close(); s = sessions.OpenSession(); ser = (BasicSerializable)s.Load( typeof(BasicSerializable), ser.Id ); Assert.AreEqual( "modify me", ser.SerializableProperty._classString ); Assert.AreEqual( "bar", props["foo"] ); Assert.AreEqual( "y", props["x"] ); s.Delete(ser); s.Flush(); s.Close(); } } } --- NEW FILE: BasicObjectFixture.cs --- using System; using NHibernate; using NHibernate.DomainModel.NHSpecific; using NUnit.Framework; namespace NHibernate.Test.NHSpecificTest { /// <summary> /// Test mappings of <c>type="Object"</c> /// </summary> /// <remarks> /// Moved that mapping out of ParentChildTest because MySql has a bug with writing /// binary types to the database. So any TestFixture that used <see cref="NHibernate.DomainModel.Parent"/> /// would fail. /// </remarks> [TestFixture] public class BasicObjectFixture : TestCase { [SetUp] public void SetUp() { ExportSchema( new string[] { "NHSpecific.BasicObject.hbm.xml"}, true ); } /// <summary> /// This is the replacement for ParentChildTest.ObjectType() /// </summary> [Test] public void TestCRUD() { ISession s = sessions.OpenSession(); BasicObjectRef any = new BasicObjectRef(); any.Name = "the any"; BasicObject bo = new BasicObject(); bo.Name = "the object"; bo.Any = any; s.Save(any); s.Save(bo); s.Flush(); s.Close(); s = sessions.OpenSession(); bo = (BasicObject)s.Load( typeof(BasicObject), bo.Id ); Assert.IsNotNull( bo.Any , "any should not be null" ); Assert.IsTrue( bo.Any is BasicObjectRef, "any should have been a BasicObjectRef instance" ); any = (BasicObjectRef)s.Load( typeof(BasicObjectRef), any.Id ); Assert.AreSame( any, bo.Any, "any loaded and ref by BasicObject should be the same" ); s.Delete(any); s.Delete(bo); s.Flush(); s.Close(); } } } |