From: <fab...@us...> - 2010-07-20 21:23:38
|
Revision: 5026 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5026&view=rev Author: fabiomaulo Date: 2010-07-20 21:23:32 +0000 (Tue, 20 Jul 2010) Log Message: ----------- Test for NH-2234 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/MyType.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Fixture.cs 2010-07-20 21:23:32 UTC (rev 5026) @@ -0,0 +1,29 @@ +using System.Linq; +using NHibernate.Linq; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH2234 +{ + public class SomethingLinq + { + public virtual string Name { get; set; } + public virtual MyUsertype Relation { get; set; } + } + + [TestFixture, Ignore("Not fixed yet.")] + public class Fixture: BugTestCase + { + [Test] + public void CanQueryViaLinq() + { + using (var s = OpenSession()) + { + var qry = from item in s.Query<SomethingLinq>() where item.Relation == MyUserTypes.Value1 select item; + + qry.ToList(); + qry.Executing(q => q.ToList()).NotThrows(); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/Mappings.hbm.xml 2010-07-20 21:23:32 UTC (rev 5026) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH2234"> + + <class name="SomethingLinq"> + <id type="int"> + <generator class="hilo"/> + </id> + <property name="Name"/> + <property name="Relation" type="NHibernate.Test.NHSpecificTest.NH2234.SimpleCustomType, NHibernate.Test"/> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/MyType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/MyType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2234/MyType.cs 2010-07-20 21:23:32 UTC (rev 5026) @@ -0,0 +1,132 @@ +using System.Collections.Generic; +using System.Data; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace NHibernate.Test.NHSpecificTest.NH2234 +{ + public class MyUsertype + { + public MyUsertype(int id, string value) + { + Id = id; + Value = value; + } + + public int Id { get; set; } + public string Value { get; set; } + + public override int GetHashCode() + { + return Id.GetHashCode(); + } + + public override bool Equals(object obj) + { + var mut = obj as MyUsertype; + return mut != null && mut.Id == Id; + } + + public static bool operator ==(MyUsertype left, MyUsertype right) + { + return Equals(left, right); + } + + public static bool operator !=(MyUsertype left, MyUsertype right) + { + return !Equals(left, right); + } + } + + public static class MyUserTypes + { + public static readonly List<MyUsertype> _values = new List<MyUsertype>() + {new MyUsertype(1, "Value 1"), new MyUsertype(2, "Value 2")}; + + + public static MyUsertype Value1 + { + get { return _values[0]; } + } + + public static MyUsertype Value2 + { + get { return _values[1]; } + } + + public static MyUsertype Find(int id) + { + return _values.Find(item => item.Id == id); + } + } + + public class SimpleCustomType : IUserType + { + private static readonly SqlType[] ReturnSqlTypes = { SqlTypeFactory.Int32 }; + + + #region IUserType Members + + public new bool Equals(object x, object y) + { + return x.Equals(y); + } + + public int GetHashCode(object x) + { + return (x == null) ? 0 : x.GetHashCode(); + } + + public SqlType[] SqlTypes + { + get { return ReturnSqlTypes; } + } + + public object DeepCopy(object value) + { + return value; + } + + public void NullSafeSet(IDbCommand cmd, object value, int index) + { + if (value == null) + NHibernateUtil.Int32.NullSafeSet(cmd, null, index, null); + else + NHibernateUtil.Int32.NullSafeSet(cmd, ((MyUsertype)value).Id, index, null); + } + + public System.Type ReturnedType + { + get { return typeof(MyUsertype); } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + int value = (int)NHibernateUtil.Int32.NullSafeGet(rs, names[0], null, owner); + return MyUserTypes.Find(value); + } + + public bool IsMutable + { + get { return false; } + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public object Assemble(object cached, object owner) + { + return cached; + } + + public object Disassemble(object value) + { + return value; + } + + #endregion + } + +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-07-20 19:42:09 UTC (rev 5025) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-07-20 21:23:32 UTC (rev 5026) @@ -750,6 +750,8 @@ <Compile Include="NHSpecificTest\NH2201\Model.cs" /> <Compile Include="NHSpecificTest\NH2230\Domain.cs" /> <Compile Include="NHSpecificTest\NH2230\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2234\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2234\MyType.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -2187,6 +2189,7 @@ <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH2234\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2094\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2092\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2093\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |