From: <te...@us...> - 2008-11-15 19:45:04
|
Revision: 3911 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3911&view=rev Author: tehlike Date: 2008-11-15 19:44:59 +0000 (Sat, 15 Nov 2008) Log Message: ----------- Test added to illustrate the use of EnumStringType<T> class (NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-14 15:53:37 UTC (rev 3910) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-15 19:44:59 UTC (rev 3911) @@ -911,6 +911,8 @@ <Compile Include="TypesTest\EnumCharTypeFixture.cs" /> <Compile Include="TypesTest\EnumStringClass.cs" /> <Compile Include="TypesTest\EnumStringTypeFixture.cs" /> + <Compile Include="TypesTest\GenericEnumStringClass.cs" /> + <Compile Include="TypesTest\GenericEnumStringTypeFixture.cs" /> <Compile Include="TypesTest\GuidClass.cs" /> <Compile Include="TypesTest\GuidTypeFixture.cs" /> <Compile Include="TypesTest\Int16TypeFixture.cs" /> @@ -1533,6 +1535,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="TypesTest\GenericEnumStringClass.hbm.xml" /> <EmbeddedResource Include="Operations\Competition.hbm.xml" /> <EmbeddedResource Include="Operations\Employer.hbm.xml" /> <EmbeddedResource Include="Operations\Node.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.cs 2008-11-15 19:44:59 UTC (rev 3911) @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.TypesTest +{ + public class GenericEnumStringClass + { + public virtual int Id + { + get; + set; + } + + public virtual SampleEnum EnumValue + { + get; + set; + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.hbm.xml 2008-11-15 19:44:59 UTC (rev 3911) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> + + <class name="NHibernate.Test.TypesTest.GenericEnumStringClass, NHibernate.Test" table="bc_estr"> + <id name="Id" column="id"> + <generator class="assigned" /> + </id> + + <property name="EnumValue" type="NHibernate.Type.EnumStringType`1[[NHibernate.Test.TypesTest.SampleEnum, NHibernate.Test]], NHibernate" column="enumc"/> + </class> +</hibernate-mapping> Property changes on: trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringClass.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs 2008-11-15 19:44:59 UTC (rev 3911) @@ -0,0 +1,93 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; + +namespace NHibernate.Test.TypesTest +{ + [TestFixture] + public class GenericEnumStringTypeFixture : TypeFixtureBase + { + protected override string TypeName + { + get { return "GenericEnumString"; } + } + + protected override void OnSetUp() + { + GenericEnumStringClass basic = new GenericEnumStringClass(); + basic.Id = 1; + basic.EnumValue = SampleEnum.Dimmed; + + GenericEnumStringClass basic2 = new GenericEnumStringClass(); + basic2.Id = 2; + basic2.EnumValue = SampleEnum.On; + + ISession s = OpenSession(); + s.Save(basic); + s.Save(basic2); + s.Flush(); + s.Close(); + } + + protected override void OnTearDown() + { + ISession s = OpenSession(); + s.Delete("from GenericEnumStringClass"); + s.Flush(); + s.Close(); + } + + + [Test] + public void ReadFromLoad() + { + ISession s = OpenSession(); + + GenericEnumStringClass basic = (GenericEnumStringClass)s.Load(typeof(GenericEnumStringClass), 1); + Assert.AreEqual(SampleEnum.Dimmed, basic.EnumValue); + + GenericEnumStringClass basic2 = (GenericEnumStringClass)s.Load(typeof(GenericEnumStringClass), 2); + Assert.AreEqual(SampleEnum.On, basic2.EnumValue); + + s.Close(); + } + + [Test] + public void ReadFromQuery() + { + ISession s = OpenSession(); + + IQuery q = s.CreateQuery("from GenericEnumStringClass as esc where esc.EnumValue=:enumValue"); + q.SetParameter("enumValue", SampleEnum.On, new SampleEnumType()); + IList results = q.List(); + + Assert.AreEqual(1, results.Count, "only 1 was 'On'"); + + q.SetParameter("enumValue", SampleEnum.Off, new SampleEnumType()); + results = q.List(); + + Assert.AreEqual(0, results.Count, "should not be any in the 'Off' status"); + + s.Close(); + + // it will also be possible to query based on a string value + // since that is what is in the db + s = OpenSession(); + + q = s.CreateQuery("from GenericEnumStringClass as esc where esc.EnumValue=:stringValue"); + q.SetString("stringValue", "On"); + results = q.List(); + + Assert.AreEqual(1, results.Count, "only 1 was 'On' string"); + + q.SetString("stringValue", "Off"); + results = q.List(); + + Assert.AreEqual(0, results.Count, "should not be any in the 'Off' string"); + + s.Close(); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |