From: <aye...@us...> - 2008-07-18 06:00:29
|
Revision: 3638 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3638&view=rev Author: ayenderahien Date: 2008-07-18 06:00:38 +0000 (Fri, 18 Jul 2008) Log Message: ----------- Applying patch from Will Shaver for NH-1291, Example.Create with anonymous objects Adding test project modifications Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-18 05:59:41 UTC (rev 3637) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-18 06:00:38 UTC (rev 3638) @@ -285,6 +285,9 @@ <Compile Include="NHSpecificTest\CriteriaFromHql\Person.cs" /> <Compile Include="NHSpecificTest\NH1077\A.cs" /> <Compile Include="NHSpecificTest\NH1077\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1291AnonExample\Home.cs" /> + <Compile Include="NHSpecificTest\NH1291AnonExample\NH1291AnonExampleFixture.cs" /> + <Compile Include="NHSpecificTest\NH1291AnonExample\Person.cs" /> <Compile Include="NHSpecificTest\NH1098\FilterParameterOrderFixture.cs" /> <Compile Include="NHSpecificTest\NH1098\Model.cs" /> <Compile Include="NHSpecificTest\NH1101\Domain.cs" /> @@ -1276,6 +1279,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1098\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> +<<<<<<< .mine <EmbeddedResource Include="NHSpecificTest\NH1297\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> @@ -1336,6 +1340,68 @@ <EmbeddedResource Include="NHSpecificTest\NH1284\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> +======= + <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> .theirs <Folder Include="Properties\" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> @@ -1354,4 +1420,4 @@ if exist "$(ProjectDir)hibernate.cfg.xml" (copy "$(ProjectDir)hibernate.cfg.xml" "hibernate.cfg.xml") copy /y "..\..\..\NHibernate.DomainModel\ABC.hbm.xml" "ABC.hbm.xml"</PostBuildEvent> </PropertyGroup> -</Project> \ No newline at end of file +</Project> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj 2008-07-18 05:59:41 UTC (rev 3637) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj 2008-07-18 06:00:38 UTC (rev 3638) @@ -282,12 +282,35 @@ <Compile Include="NHSpecificTest\BasicTimeFixture.cs" /> <Compile Include="NHSpecificTest\BugTestCase.cs" /> <Compile Include="NHSpecificTest\CollectionFixture.cs" /> + <Compile Include="NHSpecificTest\NH1077\A.cs" /> + <Compile Include="NHSpecificTest\NH1077\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1101\Domain.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1101\Fixture.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="NHSpecificTest\NH1144\Classes.cs" /> <Compile Include="NHSpecificTest\NH1144\Fixture.cs" /> <Compile Include="NHSpecificTest\CriteriaFromHql\Person.cs" /> <Compile Include="NHSpecificTest\CriteriaFromHql\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1284\Fixture.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1284\Model.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="NHSpecificTest\NH1290\AuxType.cs" /> <Compile Include="NHSpecificTest\NH1290\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1291AnonExample\Home.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1291AnonExample\NH1291AnonExampleFixture.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1291AnonExample\Person.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="NHSpecificTest\NH1301\Domain.cs" /> <Compile Include="NHSpecificTest\NH1301\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1313\A.cs" /> @@ -358,6 +381,21 @@ <Compile Include="NHSpecificTest\NH1332\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1347\A.cs" /> <Compile Include="NHSpecificTest\NH1347\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1355\Category.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1355\CustomVersionType.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1355\UserTypeTimestamp.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1362\Fixture.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH1362\Model.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -368,6 +406,12 @@ <Compile Include="NHSpecificTest\NH1080\Domain.cs" /> <Compile Include="NHSpecificTest\NH1080\Fixture.cs" /> <Compile Include="NHSpecificTest\NH364\Invoice.cs" /> + <Compile Include="NHSpecificTest\NH693\Fixture.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="NHSpecificTest\NH693\Something.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="NHSpecificTest\NH883\Cat.cs" /> <Compile Include="NHSpecificTest\NH883\Fixture.cs" /> <Compile Include="NHSpecificTest\Docs\Associations\BiM21\Address.cs" /> @@ -1249,6 +1293,29 @@ <EmbeddedResource Include="NHSpecificTest\NH1144\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1077\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1101\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1284\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1355\Category.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH1355\CategoryTD.hbm.xml" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1362\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH693\EmptyTableName.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH693\SpaceTableName.hbm.xml" /> + </ItemGroup> + <ItemGroup> <Folder Include="Properties\" /> <Folder Include="Unionsubclass2\" /> </ItemGroup> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-07-19 14:07:02
|
Revision: 3641 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3641&view=rev Author: fabiomaulo Date: 2008-07-19 14:07:03 +0000 (Sat, 19 Jul 2008) Log Message: ----------- Make Test prj compilable in VS2005 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Property Changed: ---------------- trunk/nhibernate/src/NHibernate.Test/ Property changes on: trunk/nhibernate/src/NHibernate.Test ___________________________________________________________________ Modified: svn:ignore - bin obj .#* *.user *.xsx AssemblyInfo.cs hibernate.cfg.xml Debug Release *.aps *.eto [Bb]in [Dd]ebug [Rr]elease + bin obj .#* *.user *.xsx AssemblyInfo.cs hibernate.cfg.xml Debug Release *.aps *.eto [Bb]in [Dd]ebug [Rr]elease *resharper* Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-18 07:32:56 UTC (rev 3640) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-19 14:07:03 UTC (rev 3641) @@ -285,9 +285,6 @@ <Compile Include="NHSpecificTest\CriteriaFromHql\Person.cs" /> <Compile Include="NHSpecificTest\NH1077\A.cs" /> <Compile Include="NHSpecificTest\NH1077\Fixture.cs" /> - <Compile Include="NHSpecificTest\NH1291AnonExample\Home.cs" /> - <Compile Include="NHSpecificTest\NH1291AnonExample\NH1291AnonExampleFixture.cs" /> - <Compile Include="NHSpecificTest\NH1291AnonExample\Person.cs" /> <Compile Include="NHSpecificTest\NH1098\FilterParameterOrderFixture.cs" /> <Compile Include="NHSpecificTest\NH1098\Model.cs" /> <Compile Include="NHSpecificTest\NH1101\Domain.cs" /> @@ -350,6 +347,9 @@ <Compile Include="NHSpecificTest\NH1284\Model.cs" /> <Compile Include="NHSpecificTest\NH1290\AuxType.cs" /> <Compile Include="NHSpecificTest\NH1290\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1291AnonExample\Home.cs" /> + <Compile Include="NHSpecificTest\NH1291AnonExample\NH1291AnonExampleFixture.cs" /> + <Compile Include="NHSpecificTest\NH1291AnonExample\Person.cs" /> <Compile Include="NHSpecificTest\NH1297\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1297\Model.cs" /> <Compile Include="NHSpecificTest\NH1301\Domain.cs"> @@ -1281,7 +1281,6 @@ <EmbeddedResource Include="NHSpecificTest\NH1098\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> -<<<<<<< .mine <EmbeddedResource Include="NHSpecificTest\NH1297\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> @@ -1343,68 +1342,9 @@ <EmbeddedResource Include="NHSpecificTest\NH1284\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> -======= <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> .theirs <Folder Include="Properties\" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> @@ -1423,4 +1363,4 @@ if exist "$(ProjectDir)hibernate.cfg.xml" (copy "$(ProjectDir)hibernate.cfg.xml" "hibernate.cfg.xml") copy /y "..\..\..\NHibernate.DomainModel\ABC.hbm.xml" "ABC.hbm.xml"</PostBuildEvent> </PropertyGroup> -</Project> +</Project> \ 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...> - 2008-07-23 19:01:02
|
Revision: 3657 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3657&view=rev Author: fabiomaulo Date: 2008-07-23 19:01:10 +0000 (Wed, 23 Jul 2008) Log Message: ----------- Port tests from H3.2 (check same behavior) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Any/ trunk/nhibernate/src/NHibernate.Test/Any/Address.cs trunk/nhibernate/src/NHibernate.Test/Any/AnyTypeTest.cs trunk/nhibernate/src/NHibernate.Test/Any/ComplexPropertyValue.cs trunk/nhibernate/src/NHibernate.Test/Any/IPropertyValue.cs trunk/nhibernate/src/NHibernate.Test/Any/IntegerPropertyValue.cs trunk/nhibernate/src/NHibernate.Test/Any/Person.cs trunk/nhibernate/src/NHibernate.Test/Any/Person.hbm.xml trunk/nhibernate/src/NHibernate.Test/Any/Properties.hbm.xml trunk/nhibernate/src/NHibernate.Test/Any/PropertySet.cs trunk/nhibernate/src/NHibernate.Test/Any/StringPropertyValue.cs Added: trunk/nhibernate/src/NHibernate.Test/Any/Address.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/Address.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/Address.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,22 @@ +using Iesi.Collections; + +namespace NHibernate.Test.Any +{ + public class Address + { + private long id; + private ISet lines = new HashedSet(); + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual ISet Lines + { + get { return lines; } + set { lines = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Any/AnyTypeTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/AnyTypeTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/AnyTypeTest.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,53 @@ +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.Any +{ + [TestFixture] + public class AnyTypeTest : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new string[] {"Any.Person.hbm.xml"}; } + } + + protected override string CacheConcurrencyStrategy + { + get { return null; } + } + + [Test] + public void FlushProcessing() + { + //http://opensource.atlassian.com/projects/hibernate/browse/HHH-1663 + ISession session = OpenSession(); + session.BeginTransaction(); + Person person = new Person(); + Address address = new Address(); + person.Data = address; + session.SaveOrUpdate(person); + session.SaveOrUpdate(address); + session.Transaction.Commit(); + session.Close(); + + session = OpenSession(); + session.BeginTransaction(); + person = (Person) session.Load(typeof (Person), person.Id); + person.Name = "makingpersondirty"; + session.Transaction.Commit(); + session.Close(); + + session = OpenSession(); + session.BeginTransaction(); + session.Delete(person); + session.Delete(address); + session.Transaction.Commit(); + session.Close(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Any/ComplexPropertyValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/ComplexPropertyValue.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/ComplexPropertyValue.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,46 @@ +using System.Collections; +using System.Text; + +namespace NHibernate.Test.Any +{ + public class ComplexPropertyValue : IPropertyValue + { + private long id; + private IDictionary subProperties = new Hashtable(); + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual IDictionary SubProperties + { + get { return subProperties; } + set { subProperties = value; } + } + + #region IPropertyValue Members + + public virtual string AsString() + { + return "complex[" + KeyString() + "]"; + } + + #endregion + + private string KeyString() + { + StringBuilder buff = new StringBuilder(); + foreach (object key in subProperties.Keys) + { + if (buff.Length > 0) + { + buff.Append(", "); + } + buff.Append(key.ToString()); + } + return buff.ToString(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Any/IPropertyValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/IPropertyValue.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/IPropertyValue.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.Any +{ + public interface IPropertyValue + { + string AsString(); + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/Any/IPropertyValue.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/Any/IntegerPropertyValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/IntegerPropertyValue.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/IntegerPropertyValue.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,35 @@ +namespace NHibernate.Test.Any +{ + public class IntegerPropertyValue : IPropertyValue + { + private long id; + private int value; + public IntegerPropertyValue() {} + + public IntegerPropertyValue(int value) + { + this.value = value; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual int Value + { + get { return value; } + set { this.value = value; } + } + + #region IPropertyValue Members + + public virtual string AsString() + { + return value.ToString(); + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Any/Person.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/Person.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/Person.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,27 @@ +namespace NHibernate.Test.Any +{ + public class Person + { + private object data; + private long id; + private string name; + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual object Data + { + get { return data; } + set { data = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Any/Person.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/Person.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/Person.hbm.xml 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Any"> + + <class name="Person" table="T_ANY_PERSON"> + <id name="Id" column="ID_"> + <generator class="increment" /> + </id> + <property name="Name" /> + <any name="Data" id-type="long" cascade="none"> + <meta-value value="A" class="Address"/> + <column name="DATATYPE_"/> + <column name="DATAID_"/> + </any> + </class> + + <class name="Address" table="T_ANY_ADDRESS"> + <id name="Id" column="ID_"> + <generator class="increment" /> + </id> + <set name="Lines" table="LINE"> + <key column="ADDRESS" /> + <element type="string" /> + </set> + </class> + +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/Any/Properties.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/Properties.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/Properties.hbm.xml 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Any"> + + <class name="PropertySet" table="T_PROP_SET"> + <id name="Id" column="ID" type="long"> + <generator class="increment"/> + </id> + <property name="Name" column="NAME" type="string"/> + <any name="SomeSpecificProperty" id-type="long" meta-type="string" cascade="all"> + <meta-value value="I" class="IntegerPropertyValue"/> + <meta-value value="S" class="StringPropertyValue"/> + <meta-value value="C" class="ComplexPropertyValue" /> + <column name="S_S_PROP_TYPE"/> + <column name="S_S_PROP_ID"/> + </any> + <map name="GeneralProperties" table="T_GEN_PROPS" lazy="true" cascade="all"> + <key column="PROP_SET_ID"/> + <map-key type="string" column="GEN_PROP_NAME"/> + <many-to-any id-type="long" meta-type="string"> + <meta-value value="I" class="IntegerPropertyValue"/> + <meta-value value="S" class="StringPropertyValue"/> + <column name="PROP_TYPE"/> + <column name="PROP_ID"/> + </many-to-any> + </map> + </class> + + <class name="StringPropertyValue" table="T_CHAR_PROP"> + <id name="Id" column="ID" type="long"> + <generator class="increment"/> + </id> + <property name="Value" column="VAL" not-null="true" type="string"/> + </class> + + <class name="IntegerPropertyValue" table="T_NUM_PROP"> + <id name="Id" column="ID" type="long"> + <generator class="increment"/> + </id> + <property name="Value" column="VAL" not-null="true" type="integer"/> + </class> + + <class name="ComplexPropertyValue" table="T_COMPLEX_PROP"> + <id name="Id" column="ID" type="long"> + <generator class="increment"/> + </id> + <map name="SubProperties" table="T_COMPLEX_SUB_PROPS" lazy="true"> + <key column="PROP_ID" /> + <map-key type="string" column="SUB_PROP_NAME" /> + <element type="string" column="SUB_PROP_VAL" /> + </map> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Any/PropertySet.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/PropertySet.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/PropertySet.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,42 @@ +using System.Collections; + +namespace NHibernate.Test.Any +{ + public class PropertySet + { + private IDictionary generalProperties = new Hashtable(); + private long id; + private string name; + private IPropertyValue someSpecificProperty; + public PropertySet() {} + + public PropertySet(string name) + { + this.name = name; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual IPropertyValue SomeSpecificProperty + { + get { return someSpecificProperty; } + set { someSpecificProperty = value; } + } + + public virtual IDictionary GeneralProperties + { + get { return generalProperties; } + set { generalProperties = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Any/StringPropertyValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Any/StringPropertyValue.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Any/StringPropertyValue.cs 2008-07-23 19:01:10 UTC (rev 3657) @@ -0,0 +1,32 @@ +namespace NHibernate.Test.Any +{ + public class StringPropertyValue: IPropertyValue + { + private long id; + private string value; + + public StringPropertyValue() {} + + public StringPropertyValue(string value) + { + this.value = value; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Value + { + get { return value; } + set { this.value = value; } + } + + public virtual string AsString() + { + return value; + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-23 16:56:12 UTC (rev 3656) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-23 19:01:10 UTC (rev 3657) @@ -65,6 +65,14 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="Any\Address.cs" /> + <Compile Include="Any\AnyTypeTest.cs" /> + <Compile Include="Any\ComplexPropertyValue.cs" /> + <Compile Include="Any\IntegerPropertyValue.cs" /> + <Compile Include="Any\Person.cs" /> + <Compile Include="Any\PropertySet.cs" /> + <Compile Include="Any\IPropertyValue.cs" /> + <Compile Include="Any\StringPropertyValue.cs" /> <Compile Include="AssemblyInfo.cs" /> <Compile Include="Assertions\InheritedAreMarkedSerializable.cs" /> <Compile Include="Assertions\IsSerializable.cs" /> @@ -1368,6 +1376,8 @@ </ItemGroup> <ItemGroup> <EmbeddedResource Include="DynamicEntity\Interceptor\Customer.hbm.xml" /> + <EmbeddedResource Include="Any\Person.hbm.xml" /> + <EmbeddedResource Include="Any\Properties.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> <EmbeddedResource Include="NHSpecificTest\NH1403\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1253\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-07-25 06:15:46
|
Revision: 3663 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3663&view=rev Author: fabiomaulo Date: 2008-07-25 06:15:55 +0000 (Fri, 25 Jul 2008) Log Message: ----------- NH-1408 not an issue in Trunk Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResource.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResourceKey.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DetachedSubCriteriaTest.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Entity.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResource.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResource.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResource.cs 2008-07-25 06:15:55 UTC (rev 3663) @@ -0,0 +1,84 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1408 +{ + public abstract class DbResource : Entity + { + private readonly IList<DbResourceKey> keys = new List<DbResourceKey>(); + private string rawValue; + + protected virtual string RawValue + { + get { return rawValue; } + set { rawValue = value; } + } + + public virtual IEnumerable<DbResourceKey> Keys + { + get { return keys; } + } + + public abstract object Value { get; set; } + + public virtual void AddKey(DbResourceKey key) + { + if (keys.Contains(key)) + { + return; + } + keys.Add(key); + key.Resource = this; + } + } + + internal class StringDbResource : DbResource + { + protected StringDbResource() {} + + public StringDbResource(string key, string language, string value) + { + AddKey(new DbResourceKey(key, language)); + Value = value; + } + + public override object Value + { + get { return RawValue; } + set { RawValue = (string) value; } + } + } + + internal class IntDbResource : DbResource + { + protected IntDbResource() {} + + public IntDbResource(string key, int xml) + { + AddKey(new DbResourceKey(key)); + Value = xml; + } + + public override object Value + { + get { return int.Parse(RawValue); } + set { RawValue = ((int) value).ToString(); } + } + } + + internal class DecimalDbResource : DbResource + { + protected DecimalDbResource() {} + + public DecimalDbResource(string key, decimal xml) + { + AddKey(new DbResourceKey(key)); + Value = xml; + } + + public override object Value + { + get { return decimal.Parse(RawValue); } + set { RawValue = ((decimal) value).ToString(); } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResourceKey.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResourceKey.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DbResourceKey.cs 2008-07-25 06:15:55 UTC (rev 3663) @@ -0,0 +1,37 @@ +namespace NHibernate.Test.NHSpecificTest.NH1408 +{ + public class DbResourceKey : Entity + { + private readonly object[] keys = new object[2]; + private DbResource resource; + + protected DbResourceKey() {} + + public DbResourceKey(string resourceId) : this(resourceId, null) {} + + public DbResourceKey(string resourceId, string language) + { + keys[0] = resourceId; + keys[1] = language; + } + + // used just for hibernate mappings + public virtual object Key0 + { + get { return keys[0]; } + set { keys[0] = value; } + } + + public virtual object Key1 + { + get { return keys[1]; } + set { keys[1] = value; } + } + + public virtual DbResource Resource + { + get { return resource; } + internal set { resource = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DetachedSubCriteriaTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DetachedSubCriteriaTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/DetachedSubCriteriaTest.cs 2008-07-25 06:15:55 UTC (rev 3663) @@ -0,0 +1,26 @@ +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1408 +{ + [TestFixture] + public class DetachedSubCriteriaTest : BugTestCase + { + [Test] + public void Test() + { + DetachedCriteria criteria = DetachedCriteria.For(typeof (DbResource)); + DetachedCriteria keyCriteria = criteria.CreateCriteria("keys"); + keyCriteria.Add(Restrictions.Eq("Key0", "2")); + keyCriteria.Add(Restrictions.Eq("Key1", "en")); + using (ISession session = OpenSession()) + { + ICriteria icriteria = CriteriaTransformer.Clone(criteria).GetExecutableCriteria(session); + icriteria.SetFirstResult(0); + icriteria.SetMaxResults(1); + icriteria.List<DbResource>(); + // should not throw when parse the criteria + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Entity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Entity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Entity.cs 2008-07-25 06:15:55 UTC (rev 3663) @@ -0,0 +1,20 @@ +namespace NHibernate.Test.NHSpecificTest.NH1408 +{ + public abstract class Entity + { + private long oid; + private int version; + + public virtual long Oid + { + get { return oid; } + set { oid = value; } + } + + public virtual int Version + { + get { return version; } + set { version = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml 2008-07-25 06:15:55 UTC (rev 3663) @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1408"> + + <class name="DbResource" table="Resources"> + <cache usage="nonstrict-read-write" /> + <id name="Oid" column="ID"> + <generator class="identity"/> + </id> + <discriminator column="Type" type="String(25)" not-null="true" /> + <version name="Version" column="Version" /> + + <bag name="keys" inverse="true" access="field" lazy="true" optimistic-lock="false" + cascade="all-delete-orphan"> + <key column="ResourceId" /> + <one-to-many class="DbResourceKey" /> + </bag> + + <property name="RawValue" type="StringClob"> + <column name="Value" sql-type="ntext" not-null="true" /> + </property> + + <subclass name="StringDbResource" discriminator-value="string" /> + <subclass name="IntDbResource" discriminator-value="int" /> + <subclass name="DecimalDbResource" discriminator-value="decimal" /> + </class> + + <class name="DbResourceKey" table="ResourceKeys"> + <cache usage="nonstrict-read-write" /> + <id name="Oid" column="ID"> + <generator class="identity"/> + </id> + + <version name="Version" column="Version" /> + + <many-to-one name="Resource" column="ResourceId" class="DbResource" foreign-key="FK_RESOURCEKEYS_TO_RESOURCES" /> + <property name="Key0" column="Key0" type="String(25)" index="RES_KEY0_IDX" /> + <property name="Key1" column="Key1" type="String(25)" index="RES_KEY1_IDX" /> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-25 05:09:20 UTC (rev 3662) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-07-25 06:15:55 UTC (rev 3663) @@ -407,6 +407,10 @@ <Compile Include="NHSpecificTest\NH1403\Person.cs" /> <Compile Include="NHSpecificTest\NH1405\Column.cs" /> <Compile Include="NHSpecificTest\NH1405\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1408\DbResource.cs" /> + <Compile Include="NHSpecificTest\NH1408\DbResourceKey.cs" /> + <Compile Include="NHSpecificTest\NH1408\DetachedSubCriteriaTest.cs" /> + <Compile Include="NHSpecificTest\NH1408\Entity.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1385,6 +1389,7 @@ <EmbeddedResource Include="Any\Person.hbm.xml" /> <EmbeddedResource Include="Any\Properties.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1408\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1393\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1394\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1405\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-08-01 04:25:51
|
Revision: 3694 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3694&view=rev Author: fabiomaulo Date: 2008-08-01 04:26:00 +0000 (Fri, 01 Aug 2008) Log Message: ----------- Included test only to be sure we have the same behavior (in the trunk we have a different implementation of collections and cascade). Same behavior confirmed. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Blog.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Entry.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Mappings.hbm.xml Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Blog.cs (from rev 3693, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Blog.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Blog.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Blog.cs 2008-08-01 04:26:00 UTC (rev 3694) @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1419 +{ + [Serializable] + public class Blog + { + private Guid id; + private string name; + private IList<Entry> entries; + + public Guid ID + { + get { return id; } + set { id = value; } + } + + public string Name + { + get { return name; } + set { name = value; } + } + + public IList<Entry> Entries + { + get { return entries; } + set { entries = value; } + } + + public void AddEntry(Entry entry) + { + if (entries == null) + { + entries = new List<Entry>(); + } + entry.Blog = this; + entries.Add(entry); + } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Blog.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Entry.cs (from rev 3693, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Entry.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Entry.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Entry.cs 2008-08-01 04:26:00 UTC (rev 3694) @@ -0,0 +1,30 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1419 +{ + [Serializable] + public class Entry + { + private Guid id; + private Blog blog; + private string subject; + + public Guid ID + { + get { return id; } + set { id = value; } + } + + public Blog Blog + { + get { return blog; } + set { blog = value; } + } + + public string Subject + { + get { return subject; } + set { subject = value; } + } + } +} Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Entry.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Fixture.cs (from rev 3693, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Fixture.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Fixture.cs 2008-08-01 04:26:00 UTC (rev 3694) @@ -0,0 +1,58 @@ +using NHibernate; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1419 +{ + [TestFixture] + public class Tests : BugTestCase + { + [Test] + public void Bug() + { + using (ISession session = OpenSession()) + { + ITransaction transaction = session.BeginTransaction(); + + Blog blog = new Blog(); + blog.Name = "Test Blog 1"; + + Entry entry = new Entry(); + entry.Subject = "Test Entry 1"; + + blog.AddEntry(entry); + + session.SaveOrUpdate(blog); + + transaction.Commit(); + } + using (ISession session = OpenSession()) + { + ITransaction transaction = session.BeginTransaction(); + session.Delete("from Blog"); + transaction.Commit(); + } + } + + [Test] + public void WithEmptyCollection() + { + using (ISession session = OpenSession()) + { + ITransaction transaction = session.BeginTransaction(); + + Blog blog = new Blog(); + blog.Name = "Test Blog 1"; + + session.SaveOrUpdate(blog); + + transaction.Commit(); + } + using (ISession session = OpenSession()) + { + ITransaction transaction = session.BeginTransaction(); + session.Delete("from Blog"); + transaction.Commit(); + } + } + } +} Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Fixture.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Mappings.hbm.xml (from rev 3693, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Mappings.hbm.xml) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Mappings.hbm.xml 2008-08-01 04:26:00 UTC (rev 3694) @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1419" + default-lazy="false"> + + <class name="Blog" table="Blogs"> + <id name="ID" type="Guid" column="BlogID"> + <generator class="guid" /> + </id> + <property name="Name"/> + <bag name="Entries" cascade="all-delete-orphan" inverse="true" generic="true"> + <key column="BlogID"/> + <one-to-many class="Entry"/> + </bag> + </class> + + <class name ="Entry" table="Entries"> + <id name="ID" type="Guid" column="EntryID"> + <generator class="guid" /> + </id> + <many-to-one name="Blog" class="Blog" column="BlogID"/> + <property name="Subject"/> + </class> +</hibernate-mapping> Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1419/Mappings.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-01 04:22:05 UTC (rev 3693) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-01 04:26:00 UTC (rev 3694) @@ -415,6 +415,9 @@ <Compile Include="NHSpecificTest\NH1408\Entity.cs" /> <Compile Include="NHSpecificTest\NH1413\Foo.cs" /> <Compile Include="NHSpecificTest\NH1413\PagingTest.cs" /> + <Compile Include="NHSpecificTest\NH1419\Blog.cs" /> + <Compile Include="NHSpecificTest\NH1419\Entry.cs" /> + <Compile Include="NHSpecificTest\NH1419\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1393,6 +1396,7 @@ <EmbeddedResource Include="Any\Person.hbm.xml" /> <EmbeddedResource Include="Any\Properties.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1419\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1413\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1304\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1408\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-08-16 06:10:27
|
Revision: 3709 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3709&view=rev Author: fabiomaulo Date: 2008-08-16 06:10:38 +0000 (Sat, 16 Aug 2008) Log Message: ----------- Test for NH-1251 (bug recreated) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs 2008-08-16 05:03:56 UTC (rev 3708) +++ trunk/nhibernate/src/NHibernate.Test/MultiThreadRunner.cs 2008-08-16 06:10:38 UTC (rev 3709) @@ -11,6 +11,7 @@ private readonly Random rnd = new Random(); private bool running; private int timeout = 1000; + private int timeoutBetweenThreadStart = 30; public MultiThreadRunner(int numThreads, ExecuteAction[] actions) { @@ -37,6 +38,12 @@ set { timeout = value; } } + public int TimeoutBetweenThreadStart + { + get { return timeoutBetweenThreadStart; } + set { timeoutBetweenThreadStart = value; } + } + public void Run(T subjectInstance) { running = true; @@ -47,7 +54,7 @@ t[i].Name = i.ToString(); t[i].Start(subjectInstance); if (i > 2) - Thread.Sleep(30); + Thread.Sleep(timeoutBetweenThreadStart); } Thread.Sleep(timeout); Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs 2008-08-16 05:03:56 UTC (rev 3708) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/TypeFactoryFixture.cs 2008-08-16 06:10:38 UTC (rev 3709) @@ -1,4 +1,7 @@ using System; +using System.Threading; +using log4net; +using log4net.Repository.Hierarchy; using NHibernate.Type; using NUnit.Framework; @@ -10,6 +13,13 @@ [TestFixture] public class TypeFactoryFixture { + public TypeFactoryFixture() + { + log4net.Config.XmlConfigurator.Configure(); + } + + private static readonly ILog log = LogManager.GetLogger(typeof(TypeFactoryFixture)); + /// <summary> /// Test that calling GetGuidType multiple times returns the /// exact same GuidType object by reference. @@ -62,5 +72,44 @@ set { _genericLong = value; } } } + + private readonly Random rnd = new Random(); + private int totalCall; + + [Test, Explicit] + public void MultiThreadAccess() + { + ((Logger) log.Logger).Level = log4net.Core.Level.Debug; + MultiThreadRunner<object>.ExecuteAction[] actions = new MultiThreadRunner<object>.ExecuteAction[] + { + delegate(object o) + { + TypeFactory.GetStringType(rnd.Next(1, 50)); + totalCall++; + }, + delegate(object o) + { + TypeFactory.GetBinaryType(rnd.Next(1, 50)); + totalCall++; + }, + delegate(object o) + { + TypeFactory.GetSerializableType(rnd.Next(1, 50)); + totalCall++; + }, + delegate(object o) + { + TypeFactory.GetTypeType(rnd.Next(1, 20)); + totalCall++; + }, + }; + MultiThreadRunner<object> mtr = new MultiThreadRunner<object>(100, actions); + mtr.EndTimeout = 2000; + mtr.TimeoutBetweenThreadStart = 2; + mtr.Run(null); + log.DebugFormat("{0} calls", totalCall); + TypeFactory.GetTypeType(rnd.Next()); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-08-18 19:12:17
|
Revision: 3718 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3718&view=rev Author: fabiomaulo Date: 2008-08-18 19:12:18 +0000 (Mon, 18 Aug 2008) Log Message: ----------- Only specific test about cascade refresh Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Cascade/ trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Job.cs 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,39 @@ +namespace NHibernate.Test.Cascade +{ + public class Job + { + private long id; + private JobBatch batch; + private string processingInstructions; + private int status; + public Job() {} + public Job(JobBatch batch) + { + this.batch = batch; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual JobBatch Batch + { + get { return batch; } + set { batch = value; } + } + + public virtual string ProcessingInstructions + { + get { return processingInstructions; } + set { processingInstructions = value; } + } + + public virtual int Status + { + get { return status; } + set { status = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/Job.hbm.xml 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Cascade"> + + <class name="Job" table="T_JOB"> + <id name="Id" column="JOB_ID"> + <generator class="native"/> + </id> + + <many-to-one name="Batch" class="JobBatch" cascade="none" column="BATCH_ID"/> + + <property name="Status" type="int" column="JOB_STATUS" not-null="true"/> + <property name="ProcessingInstructions" type="string" column="PI" not-null="true"/> + + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.cs 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,42 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Cascade +{ + public class JobBatch + { + private long id; + private DateTime batchDate; + private ISet<Job> jobs = new HashedSet<Job>(); + public JobBatch() {} + public JobBatch(DateTime batchDate) + { + this.batchDate = batchDate; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual DateTime BatchDate + { + get { return batchDate; } + set { batchDate = value; } + } + + public virtual ISet<Job> Jobs + { + get { return jobs; } + set { jobs = value; } + } + + public virtual Job CreateJob() + { + Job job = new Job(this); + jobs.Add(job); + return job; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/JobBatch.hbm.xml 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Cascade"> + + <class name="JobBatch" table="T_JOB_BATCH"> + <id name="Id" column="BATCH_ID"> + <generator class="native"/> + </id> + + <property name="BatchDate" type="timestamp" column="BATCH_DATE" not-null="true"/> + + <set name="Jobs" inverse="true" fetch="select" lazy="true" cascade="all, refresh" generic="true"> + <key column="BATCH_ID"/> + <one-to-many class="Job"/> + </set> + + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Cascade/RefreshFixture.cs 2008-08-18 19:12:18 UTC (rev 3718) @@ -0,0 +1,61 @@ +using System; +using System.Collections; +using System.Data; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.Cascade +{ + [TestFixture] + public class RefreshFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new string[] { "Cascade.Job.hbm.xml", "Cascade.JobBatch.hbm.xml" }; } + } + + [Test] + public void RefreshCascade() + { + ISession session = OpenSession(); + ITransaction txn = session.BeginTransaction(); + + JobBatch batch = new JobBatch(DateTime.Now); + batch.CreateJob().ProcessingInstructions = "Just do it!"; + batch.CreateJob().ProcessingInstructions = "I know you can do it!"; + + // write the stuff to the database; at this stage all job.status values are zero + session.Persist(batch); + session.Flush(); + + // behind the session's back, let's modify the statuses + UpdateStatuses(session); + + // Now lets refresh the persistent batch, and see if the refresh cascaded to the jobs collection elements + session.Refresh(batch); + + foreach (Job job in batch.Jobs) + { + Assert.That(job.Status, Is.EqualTo(1), "Jobs not refreshed!"); + } + + txn.Rollback(); + session.Close(); + } + + private void UpdateStatuses(ISession session) + { + IDbConnection conn = session.Connection; + IDbCommand cmd = conn.CreateCommand(); + cmd.CommandText = "UPDATE T_JOB SET JOB_STATUS = 1"; + cmd.CommandType = CommandType.Text; + session.Transaction.Enlist(cmd); + cmd.ExecuteNonQuery(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 17:27:06 UTC (rev 3717) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 19:12:18 UTC (rev 3718) @@ -79,6 +79,9 @@ <Compile Include="CacheTest\CacheFixture.cs" /> <Compile Include="CacheTest\QueryCacheFixture.cs" /> <Compile Include="CacheTest\TimestamperFixture.cs" /> + <Compile Include="Cascade\Job.cs" /> + <Compile Include="Cascade\JobBatch.cs" /> + <Compile Include="Cascade\RefreshFixture.cs" /> <Compile Include="CfgTest\ConfigurationFixture.cs" /> <Compile Include="CfgTest\ConfigurationSchemaFixture.cs" /> <Compile Include="CfgTest\DefaultNsAssmFixture.cs" /> @@ -1414,6 +1417,8 @@ <EmbeddedResource Include="CompositeId\LineItem.hbm.xml" /> <EmbeddedResource Include="CompositeId\Order.hbm.xml" /> <EmbeddedResource Include="CompositeId\Product.hbm.xml" /> + <EmbeddedResource Include="Cascade\Job.hbm.xml" /> + <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> <EmbeddedResource Include="Extralazy\UserGroup.hbm.xml" /> <EmbeddedResource Include="Naturalid\Immutable\User.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-08-18 19:58:39
|
Revision: 3719 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3719&view=rev Author: fabiomaulo Date: 2008-08-18 19:58:38 +0000 (Mon, 18 Aug 2008) Log Message: ----------- Delete Transients Test Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Deletetransient/ trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/Address.cs 2008-08-18 19:58:38 UTC (rev 3719) @@ -0,0 +1,25 @@ +namespace NHibernate.Test.Deletetransient +{ + public class Address + { + private long id; + private string info; + public Address() {} + public Address(string info) + { + this.info = info; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Info + { + get { return info; } + set { info = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/DeleteTransientEntityTest.cs 2008-08-18 19:58:38 UTC (rev 3719) @@ -0,0 +1,111 @@ +using System.Collections; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.Deletetransient +{ + [TestFixture] + public class DeleteTransientEntityTest : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new string[] {"Deletetransient.Person.hbm.xml"}; } + } + + [Test] + public void TransientEntityDeletionNoCascades() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + s.Delete(new Address()); + t.Commit(); + s.Close(); + } + + [Test] + public void TransientEntityDeletionCascadingToTransientAssociation() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + Person p = new Person(); + p.Addresses.Add(new Address()); + s.Delete(p); + t.Commit(); + s.Close(); + } + + [Test] + public void TransientEntityDeleteCascadingToCircularity() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + Person p1 = new Person(); + Person p2 = new Person(); + p1.Friends.Add(p2); + p2.Friends.Add(p1); + s.Delete(p1); + t.Commit(); + s.Close(); + } + + [Test] + public void TransientEntityDeletionCascadingToDetachedAssociation() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + Address address = new Address(); + address.Info = "123 Main St."; + s.Save(address); + t.Commit(); + s.Close(); + + s = OpenSession(); + t = s.BeginTransaction(); + Person p = new Person(); + p.Addresses.Add(address); + s.Delete(p); + t.Commit(); + s.Close(); + + s = OpenSession(); + t = s.BeginTransaction(); + long count = s.CreateQuery("select count(*) from Address").List<long>()[0]; + Assert.That(count, Is.EqualTo(0L), "delete not cascaded properly across transient entity"); + t.Commit(); + s.Close(); + } + + [Test] + public void TransientEntityDeletionCascadingToPersistentAssociation() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + Address address = new Address(); + address.Info = "123 Main St."; + s.Save(address); + t.Commit(); + s.Close(); + + s = OpenSession(); + t = s.BeginTransaction(); + address = s.Get<Address>(address.Id); + Person p = new Person(); + p.Addresses.Add(address); + s.Delete(p); + t.Commit(); + s.Close(); + + s = OpenSession(); + t = s.BeginTransaction(); + long count = s.CreateQuery("select count(*) from Address").List<long>()[0]; + Assert.That(count, Is.EqualTo(0L), "delete not cascaded properly across transient entity"); + t.Commit(); + s.Close(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.cs 2008-08-18 19:58:38 UTC (rev 3719) @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Deletetransient +{ + public class Person + { + private long id; + private string name; + private ISet<Address> addresses = new HashedSet<Address>(); + private IList<Person> friends = new List<Person>(); + public Person() {} + public Person(string name) + { + this.name = name; + } + + public virtual long Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual ISet<Address> Addresses + { + get { return addresses; } + set { addresses = value; } + } + + public virtual IList<Person> Friends + { + get { return friends; } + set { friends = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Deletetransient/Person.hbm.xml 2008-08-18 19:58:38 UTC (rev 3719) @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Deletetransient"> + + <class name="Person" table="T_PERSON"> + <id name="Id" type="long"> + <generator class="increment"/> + </id> + <property name="Name" type="string"/> + <set name="Addresses" lazy="true" inverse="false" cascade="all"> + <key column="PERSON_ID"/> + <one-to-many class="Address"/> + </set> + <bag name="Friends" lazy="true" inverse="false" cascade="all" table="T_FRIENDS"> + <key column="FRIEND_ID_1"/> + <many-to-many class="Person" column="FRIEND_ID_2"/> + </bag> + </class> + + <class name="Address" table="T_ADDRESS"> + <id name="Id" type="long"> + <generator class="increment"/> + </id> + <property name="Info" type="string"/> + </class> + +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 19:12:18 UTC (rev 3718) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-08-18 19:58:38 UTC (rev 3719) @@ -127,6 +127,9 @@ <Compile Include="Criteria\Student.cs" /> <Compile Include="Criteria\StudentDTO.cs" /> <Compile Include="DebugConnectionProvider.cs" /> + <Compile Include="Deletetransient\Address.cs" /> + <Compile Include="Deletetransient\DeleteTransientEntityTest.cs" /> + <Compile Include="Deletetransient\Person.cs" /> <Compile Include="DialectTest\DB2DialectFixture.cs" /> <Compile Include="DialectTest\DialectFixture.cs" /> <Compile Include="DialectTest\FirebirdDialectFixture.cs" /> @@ -1419,6 +1422,7 @@ <EmbeddedResource Include="CompositeId\Product.hbm.xml" /> <EmbeddedResource Include="Cascade\Job.hbm.xml" /> <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> + <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> <EmbeddedResource Include="Extralazy\UserGroup.hbm.xml" /> <EmbeddedResource Include="Naturalid\Immutable\User.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2008-08-23 12:07:29
|
Revision: 3727 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3727&view=rev Author: tehlike Date: 2008-08-23 12:07:39 +0000 (Sat, 23 Aug 2008) Log Message: ----------- Removed dependency for NMock and Oracle.DataAccess. Fixed the broken test by modifying the mapping location and mapping of some properties. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs trunk/nhibernate/src/NHibernate.Test/TypeParameters/Widget.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj 2008-08-22 05:31:44 UTC (rev 3726) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-3.5.csproj 2008-08-23 12:07:39 UTC (rev 3727) @@ -2,7 +2,7 @@ <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>9.0.30428</ProductVersion> + <ProductVersion>9.0.30729</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{7AEE5B37-C552-4E59-9B6F-88755BCB5070}</ProjectGuid> <OutputType>Library</OutputType> @@ -57,10 +57,6 @@ <SpecificVersion>False</SpecificVersion> <HintPath>..\..\lib\net\2.0\log4net.dll</HintPath> </Reference> - <Reference Include="nmock, Version=1.0.1536.20687, Culture=neutral"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\lib\net\nmock.dll</HintPath> - </Reference> <Reference Include="nunit.core, Version=2.2.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\lib\net\2.0\nunit.core.dll</HintPath> @@ -69,9 +65,6 @@ <SpecificVersion>False</SpecificVersion> <HintPath>..\..\lib\net\2.0\nunit.framework.dll</HintPath> </Reference> - <Reference Include="Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342"> - <Private>True</Private> - </Reference> <Reference Include="System" /> <Reference Include="System.configuration" /> <Reference Include="System.Data" /> Modified: trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs 2008-08-22 05:31:44 UTC (rev 3726) +++ trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs 2008-08-23 12:07:39 UTC (rev 3727) @@ -22,7 +22,6 @@ { return new String[] { - "TypeParameters.Typedef.hbm.xml", "TypeParameters.Widget.hbm.xml" }; } Modified: trunk/nhibernate/src/NHibernate.Test/TypeParameters/Widget.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypeParameters/Widget.hbm.xml 2008-08-22 05:31:44 UTC (rev 3726) +++ trunk/nhibernate/src/NHibernate.Test/TypeParameters/Widget.hbm.xml 2008-08-23 12:07:39 UTC (rev 3727) @@ -8,6 +8,11 @@ <param name="default">2</param> </typedef> + + <typedef name="nullToMinusOne" class="DefaultValueIntegerType"> + <param name="default">-1</param> + </typedef> + <class name="Widget" table="STRANGE_TYPED_OBJECT"> <id name="Id" column="ID"> <generator class="increment"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-09-18 16:38:42
|
Revision: 3768 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3768&view=rev Author: fabiomaulo Date: 2008-09-18 23:38:53 +0000 (Thu, 18 Sep 2008) Log Message: ----------- Test for NH-1488 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs 2008-09-18 23:38:53 UTC (rev 3768) @@ -0,0 +1,96 @@ +namespace NHibernate.Test.NHSpecificTest.NH1488 +{ + public abstract class Category + { + private int id; + private string name; + protected Category() {} + protected Category(string name) + { + this.name = name; + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } + + public class CustomerCategory : Category + { + public CustomerCategory() {} + public CustomerCategory(string name) : base(name) {} + } + public class OtherCategory : Category + { + public OtherCategory() {} + public OtherCategory(string name) : base(name) {} + } + + public class CustomerNoSmart + { + private Category category; + private int id; + private string name; + public CustomerNoSmart() {} + public CustomerNoSmart(string name) + { + this.name = name; + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual Category Category + { + get { return category; } + set { category = value; } + } + } + + public class Customer + { + private CustomerCategory category; + private int id; + private string name; + public Customer() { } + public Customer(string name) + { + this.name = name; + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual CustomerCategory Category + { + get { return category; } + set { category = value; } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs 2008-09-18 23:38:53 UTC (rev 3768) @@ -0,0 +1,69 @@ +using System.Collections; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.NHSpecificTest.NH1488 +{ + // http://jira.nhibernate.org/browse/NH-1488 + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void WorkBut() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(new CustomerNoSmart("Somebody")); + CustomerNoSmart c = new CustomerNoSmart("Somebody else"); + c.Category = new CustomerCategory("User"); + s.Save(c.Category); + s.Save(c); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + IList result = s.CreateQuery("select c.Name, cat.Name from CustomerNoSmart c left outer join c.Category cat").List(); + Assert.That(result.Count, Is.EqualTo(2)); + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from CustomerNoSmart"); + s.Delete("from Category"); + tx.Commit(); + } + } + + [Test, Ignore("Not supported.")] + public void PerhapsBug() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(new Customer("Somebody")); + Customer c = new Customer("Somebody else"); + c.Category = new CustomerCategory("User"); + s.Save(c.Category); + s.Save(c); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + IList result = s.CreateQuery("select c.Name, cat.Name from Customer c left outer join c.Category cat").List(); + Assert.That(result.Count, Is.EqualTo(2), "should return Customers, on left outer join, even empty Category"); + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from Customer"); + s.Delete("from Category"); + tx.Commit(); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml 2008-09-18 23:38:53 UTC (rev 3768) @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1488"> + + <class name="Category" table="Category" abstract="true"> + <id name="Id" column="Id"> + <generator class="native" /> + </id> + <discriminator column="Type" length="1" /> + <property name="Name" not-null="true" /> + <subclass name="CustomerCategory" discriminator-value="C"/> + </class> + + <class name="Customer" table="Customer"> + <id name="Id" column="Id"> + <generator class="native" /> + </id> + <property name="Name" not-null="true" /> + <many-to-one name="Category" lazy="false" column="Category_Id"/> + </class> + + <class name="CustomerNoSmart" table="CustomerNoSmart"> + <id name="Id" column="Id"> + <generator class="native" /> + </id> + <property name="Name" not-null="true" /> + <many-to-one name="Category" lazy="false" column="Category_Id"/> + </class> +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-18 23:26:51 UTC (rev 3767) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-18 23:38:53 UTC (rev 3768) @@ -473,6 +473,8 @@ <Compile Include="NHSpecificTest\NH1483\BaseClass.cs" /> <Compile Include="NHSpecificTest\NH1483\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1483\SubClass.cs" /> + <Compile Include="NHSpecificTest\NH1488\Domain.cs" /> + <Compile Include="NHSpecificTest\NH1488\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1460,6 +1462,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1488\Mappings.hbm.xml" /> <EmbeddedResource Include="Extendshbm\allinone.hbm.xml" /> <EmbeddedResource Include="Extendshbm\allseparateinone.hbm.xml" /> <EmbeddedResource Include="Extendshbm\Customer.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-10-09 22:45:22
|
Revision: 3822 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3822&view=rev Author: fabiomaulo Date: 2008-10-09 22:45:14 +0000 (Thu, 09 Oct 2008) Log Message: ----------- initial test to support Xml entityMode Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Accessors/ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Accessors/XmlAccessorFixture.cs Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Accessors/XmlAccessorFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Accessors/XmlAccessorFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Accessors/XmlAccessorFixture.cs 2008-10-09 22:45:14 UTC (rev 3822) @@ -0,0 +1,119 @@ +using System.Xml; +using NHibernate.Mapping; +using NHibernate.Properties; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.EntityModeTest.Xml.Accessors +{ + [TestFixture, Ignore("Not supported yet.")] + public class XmlAccessorFixture + { + public static XmlElement dom = GenerateTestElement(); + + private static XmlElement GenerateTestElement() + { + const string xml = +@"<company id='123'> + description... + <name>NHForge</name> + <account num='456'/> +</company>"; + + var baseXml = new XmlDocument(); + baseXml.LoadXml(xml); + return baseXml.DocumentElement; + } + + private static XmlElement GenerateRootTestElement() + { + return (new XmlDocument()).CreateElement("company"); + } + + private static Property GenerateAccountIdProperty() + { + var value = new SimpleValue {TypeName = "long"}; + + return new Property {Name = "number", NodeName = "account/@num", Value = value}; + } + + private static Property GenerateTextProperty() + { + var value = new SimpleValue {TypeName = "string"}; + + return new Property {Name = "text", NodeName = ".", Value = value}; + } + + private static Property GenerateNameProperty() + { + var value = new SimpleValue {TypeName = "string"}; + + return new Property {Name = "name", NodeName = "name", Value = value}; + } + + private static Property GenerateIdProperty() + { + var value = new SimpleValue {TypeName = "long"}; + + return new Property {Name = "id", NodeName = "@id", Value = value}; + } + + [Test] + public void CompanyElementGeneration() + { + ISetter idSetter = PropertyAccessorFactory.GetPropertyAccessor(GenerateIdProperty(), EntityMode.Xml).GetSetter(null, + null); + ISetter nameSetter = + PropertyAccessorFactory.GetPropertyAccessor(GenerateNameProperty(), EntityMode.Xml).GetSetter(null, null); + ISetter textSetter = + PropertyAccessorFactory.GetPropertyAccessor(GenerateTextProperty(), EntityMode.Xml).GetSetter(null, null); + ISetter accountIdSetter = + PropertyAccessorFactory.GetPropertyAccessor(GenerateAccountIdProperty(), EntityMode.Xml).GetSetter(null, null); + + XmlNode root = GenerateRootTestElement(); + + idSetter.Set(root, 123L); + textSetter.Set(root, "description..."); + nameSetter.Set(root, "NHForge"); + accountIdSetter.Set(root, 456L); + + //Assert.That(new NodeComparator().Compare(dom, root) == 0); + } + + [Test] + public void LongAttributeExtraction() + { + Property property = GenerateIdProperty(); + IGetter getter = PropertyAccessorFactory.GetPropertyAccessor(property, EntityMode.Xml).GetGetter(null, null); + var id = (long) getter.Get(dom); + Assert.That(id, Is.EqualTo(123L)); + } + + [Test] + public void LongElementAttributeExtraction() + { + Property property = GenerateAccountIdProperty(); + IGetter getter = PropertyAccessorFactory.GetPropertyAccessor(property, EntityMode.Xml).GetGetter(null, null); + var id = (long) getter.Get(dom); + Assert.That(id, Is.EqualTo(456L)); + } + + [Test] + public void StringElementExtraction() + { + Property property = GenerateNameProperty(); + IGetter getter = PropertyAccessorFactory.GetPropertyAccessor(property, EntityMode.Xml).GetGetter(null, null); + var name = (string) getter.Get(dom); + Assert.That(name, Is.EqualTo("NHForge")); + } + + [Test] + public void StringTextExtraction() + { + Property property = GenerateTextProperty(); + IGetter getter = PropertyAccessorFactory.GetPropertyAccessor(property, EntityMode.Xml).GetGetter(null, null); + var name = (string) getter.Get(dom); + Assert.That(name, Is.EqualTo("description...")); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-09 21:42:15 UTC (rev 3821) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-09 22:45:14 UTC (rev 3822) @@ -160,6 +160,7 @@ <Compile Include="DynamicEntity\Tuplizer\TuplizerDynamicEntity.cs" /> <Compile Include="EngineTest\TypedValueFixture.cs" /> <Compile Include="EntityModeTest\Map\Basic\DynamicClassFixture.cs" /> + <Compile Include="EntityModeTest\Xml\Accessors\XmlAccessorFixture.cs" /> <Compile Include="Events\Collections\AbstractCollectionEventFixture.cs" /> <Compile Include="Events\Collections\AbstractParentWithCollection.cs" /> <Compile Include="Events\Collections\Association\AbstractAssociationCollectionEventFixture.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-10-10 04:33:35
|
Revision: 3827 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3827&view=rev Author: fabiomaulo Date: 2008-10-10 04:33:22 +0000 (Fri, 10 Oct 2008) Log Message: ----------- another initial test to support Xml entityMode Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/AB.hbm.xml trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Account.hbm.xml trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Employer.hbm.xml trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/XmlFixture.cs Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/AB.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/AB.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/AB.hbm.xml 2008-10-10 04:33:22 UTC (rev 3827) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> + + <class entity-name="A" table="AX" node="a"> + <id name="aId" type="int" column="aId" node="@id"/> + <property name="x" type="string"/> + <set name="bs" node="." embed-xml="true" cascade="all" inverse="true"> + <key column="aId"/> + <one-to-many class="B"/> + </set> + </class> + + + <class entity-name="B" table="BX" node="b"> + <composite-id> + <key-property name="bId" column="bId" type="int" node="@bId"/> + <key-property name="aId" column="aId" type="int" node="@aId"/> + </composite-id> + <property name="y" type="string" node="."/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Account.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Account.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Account.hbm.xml 2008-10-10 04:33:22 UTC (rev 3827) @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> + + <class entity-name="Customer" node="customer"> + <id name="customerId" type="string" node="@id"/> + <component name="name"> + <property name="first" type="string"/> + <property name="last" type="string"/> + </component> + <property name="address" type="string" node="address"/> + <map name="stuff"> + <key column="customerId"/> + <map-key type="string" column="bar" node="@bar"/> + <element type="string" node="foo" column="foo"/> + </map> + <bag name="morestuff" node="."> + <key column="customerId"/> + <element type="integer" node="amount" column="amount"/> + </bag> + <list name="accounts" cascade="all"> + <key column="customerId2"/> + <list-index column="acctno" base="1"/> + <one-to-many entity-name="Account" node="account"/> + </list> + <many-to-one name="location" node="location/@id" entity-name="Location" embed-xml="false"/> + <property name="description" node="." type="string"/> + <set name="unembedded" embed-xml="false"> + <key column="x"/> + <element type="string" column="y" not-null="true"/> + </set> + </class> + + <class entity-name="Account" node="account"> + <id name="accountId" type="string" node="@id"/> + <many-to-one name="customer" column="customerId" entity-name="Customer" cascade="all" embed-xml="true" /> + <!--not-null="true"--> + <property name="balance" type="big_decimal" node="balance" precision="10" scale="0" /> + </class> + + <class entity-name="Location" node="location"> + <id name="id" node="@id" type="long"> + <generator class="increment"/> + </id> + <property name="address" type="string"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Employer.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Employer.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/Employer.hbm.xml 2008-10-10 04:33:22 UTC (rev 3827) @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> + + <class entity-name="Employer" node="employer"> + <id name="id" node="@id" type="long"> + <generator class="increment"/> + </id> + <property name="name" node="@name" type="string"/> + <set name="employees" node="." cascade="all,delete-orphan" fetch="join" lazy="false"> + <key not-null="true" column="employerId"/> + <one-to-many entity-name="Employee" /> + </set> + </class> + + <class entity-name="Employee" node="employee"> + <id name="id" node="@id" type="long"> + <generator class="increment"/> + </id> + <discriminator column="role" type="string" length="10"/> + <property name="name" node="@name" type="string"/> + <subclass entity-name="Techie" node="techie" /> + <subclass entity-name="Salesdude" node="sales-dude"/> + </class> + + <class entity-name="Department" node="department"> + <id name="id" node="@id" type="long"> + <generator class="increment"/> + </id> + <property name="name" node="@name" type="string"/> + <many-to-one name="manager" entity-name="Employee" cascade="all" fetch="join" lazy="false" embed-xml="true" node="manager" /> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/XmlFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/XmlFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Basic/XmlFixture.cs 2008-10-10 04:33:22 UTC (rev 3827) @@ -0,0 +1,69 @@ +using System.Collections; +using System.Xml; +using NHibernate.Cfg; +using NUnit.Framework; + +namespace NHibernate.Test.EntityModeTest.Xml.Basic +{ + [TestFixture, Ignore("Not supported yet.")] + public class XmlFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + #region Overrides of TestCase + + protected override IList Mappings + { + get + { + return new[] + { + "EntityModeTest.Xml.Basic.Account.hbm.xml", "EntityModeTest.Xml.Basic.AB.hbm.xml", + "EntityModeTest.Xml.Basic.Employer.hbm.xml" + }; + } + } + + #endregion + + protected override void Configure(Configuration configuration) + { + cfg.SetProperty(Environment.DefaultEntityMode, EntityModeHelper.ToString(EntityMode.Xml)); + } + + [Test] + public void CompositeId() + { + const string xml = +@"<a id='1'> + <x>foo bar</x> + <b bId='1' aId='1>foo foo</b> + <b bId='2' aId='1>bar bar</b> +</a>"; + + XmlElement a=null; + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + s.Persist("A", a); + t.Commit(); + s.Close(); + + s = OpenSession(); + t = s.BeginTransaction(); + //a = (XmlElement)s.CreateCriteria("A").UniqueResult(); + Assert.AreEqual(a.GetElementsByTagName("b").Count, 2); + Print(a); + //s.Delete("A", a); + t.Commit(); + s.Close(); + } + + public static void Print(XmlElement elt) + { + //XMLHelper.dump( elt ); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 00:13:56 UTC (rev 3826) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 04:33:22 UTC (rev 3827) @@ -161,6 +161,7 @@ <Compile Include="EngineTest\TypedValueFixture.cs" /> <Compile Include="EntityModeTest\Map\Basic\DynamicClassFixture.cs" /> <Compile Include="EntityModeTest\Xml\Accessors\XmlAccessorFixture.cs" /> + <Compile Include="EntityModeTest\Xml\Basic\XmlFixture.cs" /> <Compile Include="Events\Collections\AbstractCollectionEventFixture.cs" /> <Compile Include="Events\Collections\AbstractParentWithCollection.cs" /> <Compile Include="Events\Collections\Association\AbstractAssociationCollectionEventFixture.cs" /> @@ -1488,6 +1489,9 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="EntityModeTest\Xml\Basic\AB.hbm.xml" /> + <EmbeddedResource Include="EntityModeTest\Xml\Basic\Account.hbm.xml" /> + <EmbeddedResource Include="EntityModeTest\Xml\Basic\Employer.hbm.xml" /> <EmbeddedResource Include="SqlTest\MSSQLIdentityInsertWithStoredProcs.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1508\Mappings.hbm.xml" /> <EmbeddedResource Include="GenericTest\OrderedSetGeneric\OrderedSetFixture.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-10-10 13:56:58
|
Revision: 3831 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3831&view=rev Author: fabiomaulo Date: 2008-10-10 13:56:51 +0000 (Fri, 10 Oct 2008) Log Message: ----------- another test to support Xml entityMode Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.cs trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.hbm.xml trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarPart.cs trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarType.cs trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/XmlManyToOneFixture.cs Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.cs 2008-10-10 13:56:51 UTC (rev 3831) @@ -0,0 +1,21 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.EntityModeTest.Xml.Many2One +{ + [Serializable] + public class Car + { + private ISet<CarPart> carParts = new HashedSet<CarPart>(); + + public virtual long Id { get; set; } + public virtual string Model { get; set; } + public virtual CarType CarType { get; set; } + + public ISet<CarPart> CarParts + { + get { return carParts; } + set { carParts = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/Car.hbm.xml 2008-10-10 13:56:51 UTC (rev 3831) @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.EntityModeTest.Xml.Many2One"> + + <class name="Car" lazy="false" node="car"> + <id name="Id" node="@id" type="long"> + <generator class="increment"/> + </id> + <property name="Model" type="string" node="model"/> + <many-to-one name="CarType" node="carType" class="CarType"/> + <set name="CarParts" node="." cascade="all" generic="true"> + <key column="car" not-null="true"/> + <one-to-many class="CarPart" node="carPart" embed-xml="false"/> + </set> + </class> + + <class name="CarType" lazy="true" node="carType"> + <id name="Id" node="@id" type="long"> + <generator class="increment"/> + </id> + <property name="TypeName" type="string" node="typeName"/> + </class> + + <class name="CarPart" node="carPart"> + <id name="Id" node="@id" type="long"> + <generator class="increment"/> + </id> + <property name="PartName" type="string" node="partName"/> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarPart.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarPart.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarPart.cs 2008-10-10 13:56:51 UTC (rev 3831) @@ -0,0 +1,11 @@ +using System; + +namespace NHibernate.Test.EntityModeTest.Xml.Many2One +{ + [Serializable] + public class CarPart + { + public virtual long Id { get; set; } + public virtual string PartName { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/CarType.cs 2008-10-10 13:56:51 UTC (rev 3831) @@ -0,0 +1,11 @@ +using System; + +namespace NHibernate.Test.EntityModeTest.Xml.Many2One +{ + [Serializable] + public class CarType + { + public virtual long Id { get; set; } + public virtual string TypeName { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/XmlManyToOneFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/XmlManyToOneFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Xml/Many2One/XmlManyToOneFixture.cs 2008-10-10 13:56:51 UTC (rev 3831) @@ -0,0 +1,106 @@ +using System.Collections; +using System.Xml; +using NUnit.Framework; + +namespace NHibernate.Test.EntityModeTest.Xml.Many2One +{ + [TestFixture] + public class XmlManyToOneFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] {"EntityModeTest.Xml.Many2One.Car.hbm.xml"}; } + } + + [Test] + public void XmlManyToOne() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + var carType = new CarType {TypeName = "Type 1"}; + s.Save(carType); + + var car1 = new Car {CarType = carType, Model = "Model 1"}; + s.Save(car1); + + var car2 = new Car {CarType = carType, Model = "Model 2"}; + s.Save(car2); + + t.Commit(); + s.Close(); + + s = OpenSession(); + ISession xmlSession = s.GetSession(EntityMode.Xml); + t = s.BeginTransaction(); + + IList list = xmlSession.CreateQuery("from Car c join fetch c.carType order by c.model asc").List(); + + var expectedResults = new[] + { + "<car id=\"" + car1.Id + "\"><model>Model 1</model><carType id=\"" + carType.Id + + "\"><typeName>Type 1</typeName></carType></car>", + "<car id=\"" + car2.Id + "\"><model>Model 2</model><carType id=\"" + carType.Id + + "\"><typeName>Type 1</typeName></carType></car>" + }; + + for (int i = 0; i < list.Count; i++) + { + var element = (XmlElement) list[i]; + + //print(element); + Assert.That(element.InnerXml.Equals(expectedResults[i])); + } + + s.Delete("from CarType"); + s.Delete("from Car"); + + t.Commit(); + s.Close(); + } + + [Test] + public void XmlOneToMany() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + var carType = new CarType {TypeName = "Type 1"}; + s.Save(carType); + + var car = new Car {CarType = carType, Model = "Model 1"}; + s.Save(car); + + var carPart1 = new CarPart {PartName = "chassis"}; + car.CarParts.Add(carPart1); + + t.Commit(); + s.Close(); + + s = OpenSession(); + ISession xmlSession = s.GetSession(EntityMode.Xml); + t = s.BeginTransaction(); + + var element = (XmlElement) xmlSession.CreateQuery("from Car c join fetch c.carParts").UniqueResult(); + + string expectedResult = "<car id=\"" + car.Id + "\"><carPart>" + carPart1.Id + + "</carPart><model>Model 1</model><carType id=\"" + carType.Id + + "\"><typeName>Type 1</typeName></carType></car>"; + + //print(element); + Assert.That(element.InnerXml.Equals(expectedResult)); + + s.Delete("from CarPart"); + s.Delete("from CarType"); + s.Delete("from Car"); + + t.Commit(); + s.Close(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 12:31:10 UTC (rev 3830) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 13:56:51 UTC (rev 3831) @@ -162,6 +162,10 @@ <Compile Include="EntityModeTest\Map\Basic\DynamicClassFixture.cs" /> <Compile Include="EntityModeTest\Xml\Accessors\XmlAccessorFixture.cs" /> <Compile Include="EntityModeTest\Xml\Basic\XmlFixture.cs" /> + <Compile Include="EntityModeTest\Xml\Many2One\Car.cs" /> + <Compile Include="EntityModeTest\Xml\Many2One\CarPart.cs" /> + <Compile Include="EntityModeTest\Xml\Many2One\CarType.cs" /> + <Compile Include="EntityModeTest\Xml\Many2One\XmlManyToOneFixture.cs" /> <Compile Include="Events\Collections\AbstractCollectionEventFixture.cs" /> <Compile Include="Events\Collections\AbstractParentWithCollection.cs" /> <Compile Include="Events\Collections\Association\AbstractAssociationCollectionEventFixture.cs" /> @@ -1489,6 +1493,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <Content Include="EntityModeTest\Xml\Many2One\Car.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Xml\Basic\AB.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Xml\Basic\Account.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Xml\Basic\Employer.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-10-10 16:20:32
|
Revision: 3833 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3833&view=rev Author: fabiomaulo Date: 2008-10-10 16:20:24 +0000 (Fri, 10 Oct 2008) Log Message: ----------- another test to support Xml entityMode Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/MultiRepresentationFixture.cs 2008-10-10 16:20:24 UTC (rev 3833) @@ -0,0 +1,189 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Xml; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.EntityModeTest.Multi +{ + [TestFixture, Ignore("Not supported yet.")] + public class MultiRepresentationFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new[] {"EntityModeTest.Multi.Stock.hbm.xml", "EntityModeTest.Multi.Valuation.hbm.xml"}; } + } + + private class TestData + { + private readonly ISessionFactory sessions; + public long stockId; + + public TestData(ISessionFactory factory) + { + sessions = factory; + } + + public void Create() + { + ISession session = sessions.OpenSession(); + session.BeginTransaction(); + var stock = new Stock {TradeSymbol = "NHForge"}; + var valuation = new Valuation {Stock = stock, ValuationDate = DateTime.Now, Value = 200.0D}; + stock.CurrentValuation = valuation; + stock.Valuations.Add(valuation); + + session.Save(stock); + session.Save(valuation); + + session.Transaction.Commit(); + session.Close(); + + stockId = stock.Id; + } + + public void Destroy() + { + ISession session = sessions.OpenSession(); + session.BeginTransaction(); + IList<Stock> stocks = session.CreateQuery("from Stock").List<Stock>(); + foreach (Stock stock in stocks) + { + stock.CurrentValuation = null; + session.Flush(); + foreach (Valuation valuation in stock.Valuations) + { + session.Delete(valuation); + } + session.Delete(stock); + } + session.Transaction.Commit(); + session.Close(); + } + } + + [Test] + public void PocoRetreival() + { + var testData = new TestData(sessions); + testData.Create(); + + ISession session = OpenSession(); + ITransaction txn = session.BeginTransaction(); + + var stock = session.Get<Stock>(1); + Assert.That(stock.Id, Is.EqualTo(1L)); + + txn.Commit(); + session.Close(); + + testData.Destroy(); + } + + [Test] + public void XmlHQL() + { + var testData = new TestData(sessions); + testData.Create(); + + ISession session = OpenSession(); + ITransaction txn = session.BeginTransaction(); + ISession xml = session.GetSession(EntityMode.Xml); + + IList result = xml.CreateQuery("from Stock").List(); + + Assert.That(result.Count, Is.EqualTo(1L)); + var element = (XmlElement) result[0]; + Assert.That(element.Attributes["id"], Is.EqualTo(testData.stockId)); + + Console.WriteLine("**** XML: ****************************************************"); + //prettyPrint( element ); + Console.WriteLine("**************************************************************"); + + txn.Rollback(); + session.Close(); + + testData.Destroy(); + } + + [Test] + public void XmlRetreival() + { + var testData = new TestData(sessions); + testData.Create(); + + ISession session = OpenSession(); + ITransaction txn = session.BeginTransaction(); + ISession xml = session.GetSession(EntityMode.Xml); + + object rtn = xml.Get(typeof (Stock).FullName, testData.stockId); + var element = (XmlElement) rtn; + + Assert.That(element.Attributes["id"], Is.EqualTo(testData.stockId)); + + Console.WriteLine("**** XML: ****************************************************"); + //prettyPrint( element ); + Console.WriteLine("**************************************************************"); + + XmlNode currVal = element.GetElementsByTagName("currentValuation")[0]; + + Console.WriteLine("**** XML: ****************************************************"); + //prettyPrint( currVal ); + Console.WriteLine("**************************************************************"); + + txn.Rollback(); + session.Close(); + + testData.Destroy(); + } + + [Test] + public void XmlSave() + { + var testData = new TestData(sessions); + testData.Create(); + + ISession pojos = OpenSession(); + ITransaction txn = pojos.BeginTransaction(); + ISession xml = pojos.GetSession(EntityMode.Xml); + + var domDoc = new XmlDocument(); + XmlElement stock = domDoc.CreateElement("stock"); + domDoc.AppendChild(stock); + XmlElement tradeSymbol = domDoc.CreateElement("tradeSymbol"); + tradeSymbol.InnerText = "Microsoft"; + stock.AppendChild(tradeSymbol); + + XmlElement cval = domDoc.CreateElement("currentValuation"); + XmlElement val = domDoc.CreateElement("valuation"); + stock.AppendChild(cval); + //val.appendContent(stock); TODO + XmlElement valuationDate = domDoc.CreateElement("valuationDate"); + tradeSymbol.InnerText = DateTime.Now.ToString(); + val.AppendChild(valuationDate); + + XmlElement value = domDoc.CreateElement("value"); + tradeSymbol.InnerText = "121.00"; + val.AppendChild(value); + + xml.Save(typeof (Stock).FullName, stock); + xml.Flush(); + + txn.Rollback(); + pojos.Close(); + + Assert.That(!pojos.IsOpen); + Assert.That(!xml.IsOpen); + + //prettyPrint( stock ); + + testData.Destroy(); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.cs 2008-10-10 16:20:24 UTC (rev 3833) @@ -0,0 +1,21 @@ +using Iesi.Collections.Generic; + +namespace NHibernate.Test.EntityModeTest.Multi +{ + public class Stock + { + private ISet<Valuation> valuations = new HashedSet<Valuation>(); + + public virtual long Id { get; set; } + + public virtual string TradeSymbol { get; set; } + + public virtual Valuation CurrentValuation { get; set; } + + public virtual ISet<Valuation> Valuations + { + get { return valuations; } + set { valuations = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Stock.hbm.xml 2008-10-10 16:20:24 UTC (rev 3833) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.EntityModeTest.Multi"> + + <class table="STOCK" name="Stock" node="stock"> + + <id name="Id" column="STOCK_ID" node="@id"> + <generator class="increment"/> + </id> + + <property name="TradeSymbol" type="string" column="SYMBOL"/> + + <many-to-one name="CurrentValuation" class="Valuation" column="CURR_VAL_ID" cascade="all" /> + + <set name="Valuations" cascade="all" lazy="true"> + <key column="STOCK_ID"/> + <one-to-many class="Valuation"/> + </set> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.cs 2008-10-10 16:20:24 UTC (rev 3833) @@ -0,0 +1,15 @@ +using System; + +namespace NHibernate.Test.EntityModeTest.Multi +{ + public class Valuation + { + public virtual long Id { get; set; } + + public virtual Stock Stock { get; set; } + + public virtual DateTime ValuationDate { get; set; } + + public virtual double Value { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EntityModeTest/Multi/Valuation.hbm.xml 2008-10-10 16:20:24 UTC (rev 3833) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.EntityModeTest.Multi"> + + <class table="STOCK_VAL" name="Valuation" node="valuation"> + + <id name="Id" column="VAL_ID" node="@id"> + <generator class="increment"/> + </id> + + <many-to-one name="Stock" embed-xml="false" + class="Stock" column="STOCK_ID" cascade="none" /> + + <property name="ValuationDate" type="date" column="DT"/> + <property name="Value" type="double" column="VAL"/> + + </class> + +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 13:58:37 UTC (rev 3832) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-10 16:20:24 UTC (rev 3833) @@ -160,6 +160,9 @@ <Compile Include="DynamicEntity\Tuplizer\TuplizerDynamicEntity.cs" /> <Compile Include="EngineTest\TypedValueFixture.cs" /> <Compile Include="EntityModeTest\Map\Basic\DynamicClassFixture.cs" /> + <Compile Include="EntityModeTest\Multi\MultiRepresentationFixture.cs" /> + <Compile Include="EntityModeTest\Multi\Stock.cs" /> + <Compile Include="EntityModeTest\Multi\Valuation.cs" /> <Compile Include="EntityModeTest\Xml\Accessors\XmlAccessorFixture.cs" /> <Compile Include="EntityModeTest\Xml\Basic\XmlFixture.cs" /> <Compile Include="EntityModeTest\Xml\Many2One\Car.cs" /> @@ -1493,7 +1496,9 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> - <Content Include="EntityModeTest\Xml\Many2One\Car.hbm.xml" /> + <EmbeddedResource Include="EntityModeTest\Multi\Stock.hbm.xml" /> + <EmbeddedResource Include="EntityModeTest\Multi\Valuation.hbm.xml" /> + <EmbeddedResource Include="EntityModeTest\Xml\Many2One\Car.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Xml\Basic\AB.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Xml\Basic\Account.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Xml\Basic\Employer.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2008-10-11 20:24:52
|
Revision: 3846 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3846&view=rev Author: tehlike Date: 2008-10-11 20:24:43 +0000 (Sat, 11 Oct 2008) Log Message: ----------- Adding test to see if Criteria supports Polymorphic queries(see if NH-1033 is an issue) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Animal.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Reptile.cs Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Animal.cs (from rev 3835, trunk/nhibernate/src/NHibernate.Test/Criteria/Animal.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Animal.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Animal.cs 2008-10-11 20:24:43 UTC (rev 3846) @@ -0,0 +1,19 @@ +using System; +namespace NHibernate.Test.NHSpecificTest.NH1033 +{ + public class Animal + { + public virtual long Id + { + get; + set; + } + + public virtual string SerialNumber + { + get; + set; + } + + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Animal.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Fixture.cs 2008-10-11 20:24:43 UTC (rev 3846) @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NHibernate.Criterion; +using NUnit.Framework; +using System.Collections; +namespace NHibernate.Test.NHSpecificTest.NH1033 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + using(var session=OpenSession()) + { + using (var tran = session.BeginTransaction()) + { + + var animal0 = new Animal(); + var animal1 = new Reptile(); + + animal0.SerialNumber = "00001"; + + animal1.SerialNumber = "00002"; + animal1.BodyTemperature = 34; + + session.Save(animal0); + session.Save(animal1); + tran.Commit(); + } + } + } + protected override void OnTearDown() + { + using (var session = OpenSession()) + using (var tran = session.BeginTransaction()) + { + session.Delete("from Animal"); + session.Delete("from Reptile"); + tran.Commit(); + } + } + + [Test] + public void CanUseClassConstraint() + { + using(ISession session=OpenSession()) + { + var crit = session + .CreateCriteria(typeof (Animal), "a") + .Add(Property + .ForName("a.class") + .Eq(typeof(Animal))); + var results = crit.List<Animal>(); + Assert.AreEqual(1,results.Count); + Assert.AreEqual(typeof(Animal), NHibernateUtil.GetClass(results[0])); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Mappings.hbm.xml 2008-10-11 20:24:43 UTC (rev 3846) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1033"> + + <class name="Animal"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="SerialNumber"/> + + <joined-subclass name="Reptile"> + <key column="animal"/> + <property name="BodyTemperature"/> + </joined-subclass> + </class> + +</hibernate-mapping> \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Reptile.cs (from rev 3835, trunk/nhibernate/src/NHibernate.Test/Criteria/Reptile.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Reptile.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Reptile.cs 2008-10-11 20:24:43 UTC (rev 3846) @@ -0,0 +1,14 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1033 +{ + public class Reptile : Animal + { + + public virtual float BodyTemperature + { + get; + set; + } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1033/Reptile.cs ___________________________________________________________________ Added: svn:mergeinfo + Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-11 19:17:21 UTC (rev 3845) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-11 20:24:43 UTC (rev 3846) @@ -373,6 +373,9 @@ <Compile Include="NHSpecificTest\CollectionFixture.cs" /> <Compile Include="NHSpecificTest\CriteriaFromHql\Fixture.cs" /> <Compile Include="NHSpecificTest\CriteriaFromHql\Person.cs" /> + <Compile Include="NHSpecificTest\NH1033\Animal.cs" /> + <Compile Include="NHSpecificTest\NH1033\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1033\Reptile.cs" /> <Compile Include="NHSpecificTest\NH1077\A.cs" /> <Compile Include="NHSpecificTest\NH1077\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1098\FilterParameterOrderFixture.cs" /> @@ -1497,6 +1500,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1033\Mappings.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Multi\Stock.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Multi\Valuation.hbm.xml" /> <EmbeddedResource Include="EntityModeTest\Xml\Many2One\Car.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-10-19 20:25:26
|
Revision: 3866 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3866&view=rev Author: fabiomaulo Date: 2008-10-19 20:25:16 +0000 (Sun, 19 Oct 2008) Log Message: ----------- Test for NH-662 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Domain.cs 2008-10-19 20:25:16 UTC (rev 3866) @@ -0,0 +1,20 @@ +namespace NHibernate.Test.NHSpecificTest.NH662 +{ + public class Base + { + public virtual int Id { get; set; } + public virtual string Description { get; set; } + protected virtual void Foo() + { + // Some logic. + } + } + + public class Derived : Base + { + protected override void Foo() + { + // Some other logic + } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Domain.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Fixture.cs 2008-10-19 20:25:16 UTC (rev 3866) @@ -0,0 +1,38 @@ +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.NHSpecificTest.NH662 +{ + [TestFixture, Ignore("Not supported.")] + public class Fixture: BugTestCase + { + [Test] + public void UseDerivedClass() + { + object savedId; + var d = new Derived {Description = "something"}; + + using (ISession s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + savedId = s.Save(d); + tx.Commit(); + } + + using (ISession s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + d = s.Load<Derived>(savedId); + Assert.That(d.Description, Is.EqualTo("something")); + tx.Commit(); + } + + using (ISession s = OpenSession()) + using (var tx = s.BeginTransaction()) + { + s.Delete(d); + tx.Commit(); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH662/Mappings.hbm.xml 2008-10-19 20:25:16 UTC (rev 3866) @@ -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.NH662"> + + <class name="Base"> + <id name="Id" column="Id"> + <generator class="native" /> + </id> + <property name="Description"/> + </class> + +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-18 22:18:15 UTC (rev 3865) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-19 20:25:16 UTC (rev 3866) @@ -523,6 +523,8 @@ <Compile Include="NHSpecificTest\NH1080\Domain.cs" /> <Compile Include="NHSpecificTest\NH1080\Fixture.cs" /> <Compile Include="NHSpecificTest\NH364\Invoice.cs" /> + <Compile Include="NHSpecificTest\NH662\Domain.cs" /> + <Compile Include="NHSpecificTest\NH662\Fixture.cs" /> <Compile Include="NHSpecificTest\NH693\Fixture.cs" /> <Compile Include="NHSpecificTest\NH693\Something.cs" /> <Compile Include="NHSpecificTest\NH883\Cat.cs" /> @@ -1505,6 +1507,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH662\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1495\Mappings.hbm.xml" /> <EmbeddedResource Include="ProjectionFixtures\Mapping.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1033\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-10-25 17:23:30
|
Revision: 3878 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3878&view=rev Author: fabiomaulo Date: 2008-10-25 17:23:21 +0000 (Sat, 25 Oct 2008) Log Message: ----------- Some other tests about entity-name usage Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynamesWithColl.hbm.xml trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesWithColl.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs 2008-10-25 14:05:25 UTC (rev 3877) +++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs 2008-10-25 17:23:21 UTC (rev 3878) @@ -105,6 +105,18 @@ } [Test] + public void JoinedSubclassAndEntityNamesOnlyWithCollection() + { + Configuration cfg = new Configuration(); + + cfg.AddResource(BaseForMappings + "Extendshbm.entitynamesWithColl.hbm.xml", typeof(ExtendsFixture).Assembly); + + cfg.BuildMappings(); + Assert.That(cfg.GetClassMapping("EntityHasName"), Is.Not.Null); + Assert.That(cfg.GetClassMapping("EntityCompany"), Is.Not.Null); + } + + [Test] public void EntityNamesWithPackageFailureExpected() { Configuration cfg = new Configuration(); @@ -117,6 +129,18 @@ } [Test] + public void EntityNamesWithPackageWithCollection() + { + Configuration cfg = new Configuration(); + cfg.AddResource(BaseForMappings + "Extendshbm.packageentitynamesWithColl.hbm.xml", typeof(ExtendsFixture).Assembly); + + cfg.BuildMappings(); + + Assert.That(cfg.GetClassMapping("EntityHasName"), Is.Not.Null); + Assert.That(cfg.GetClassMapping("EntityCompany"), Is.Not.Null); + } + + [Test] public void EntityNamesWithPackageFailureExpectedDiffFiles() { Configuration cfg = new Configuration(); Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynamesWithColl.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynamesWithColl.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynamesWithColl.hbm.xml 2008-10-25 17:23:21 UTC (rev 3878) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> + + <class lazy="true" entity-name="EntityHasName" table="F5_ENTITY_HASNAME"> + <id name="id" column="ID" type="long"> + <generator class="native"/> + </id> + <property name="attrName" type="string"> + <column name="NAME"/> + </property> + </class> + <joined-subclass lazy="true" entity-name="EntityCompany" table="F5_ENTITY_COMPANY" extends="EntityHasName"> + <key column="REF_ID"/> + <many-to-one name="parent" entity-name="EntityHasName"/> + <set name="childs" > + <key column="familyId" /> + <one-to-many entity-name="EntityHasName"/> + </set> + </joined-subclass> +</hibernate-mapping> Property changes on: trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynamesWithColl.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesWithColl.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesWithColl.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesWithColl.hbm.xml 2008-10-25 17:23:21 UTC (rev 3878) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Extendshbm"> + + <class lazy="true" entity-name="EntityHasName" table="F5_ENTITY_HASNAME"> + <id name="id" column="ID" type="long"> + <generator class="native"/> + </id> + <property name="attrName" type="string"> + <column name="NAME"/> + </property> + </class> + <joined-subclass lazy="true" entity-name="EntityCompany" table="F5_ENTITY_COMPANY" extends="EntityHasName"> + <key column="REF_ID"/> + <many-to-one name="parent" entity-name="EntityHasName"/> + <set name="childs" > + <key column="familyId" /> + <one-to-many entity-name="EntityHasName"/> + </set> + </joined-subclass> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml 2008-10-25 14:05:25 UTC (rev 3877) +++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml 2008-10-25 17:23:21 UTC (rev 3878) @@ -6,5 +6,9 @@ <joined-subclass lazy="true" entity-name="EntityCompany" table="F5_ENTITY_COMPANY" extends="EntityHasName"> <key column="REF_ID"/> <many-to-one name="parent" entity-name="EntityHasName"/> + <set name="childs" > + <key column="familyId" /> + <one-to-many entity-name="EntityHasName"/> + </set> </joined-subclass> </hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-25 14:05:25 UTC (rev 3877) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-25 17:23:21 UTC (rev 3878) @@ -1513,6 +1513,8 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="Extendshbm\packageentitynamesWithColl.hbm.xml" /> + <EmbeddedResource Include="Extendshbm\entitynamesWithColl.hbm.xml" /> <EmbeddedResource Include="Extendshbm\packageentitynamesf1.hbm.xml" /> <EmbeddedResource Include="Extendshbm\packageentitynamesf2.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1090\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2008-11-02 22:55:55
|
Revision: 3887 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3887&view=rev Author: tehlike Date: 2008-11-02 22:55:51 +0000 (Sun, 02 Nov 2008) Log Message: ----------- Adding tests supporting NH-1478 is not an issue. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1447/Person.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Person.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1447/Person.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1447/Person.cs 2008-11-02 22:39:13 UTC (rev 3886) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1447/Person.cs 2008-11-02 22:55:51 UTC (rev 3887) @@ -12,10 +12,10 @@ } - public Person(string name, bool isPerfect) + public Person(string name, bool wantsNewsLetter) { this.Name = name; - this.WantsNewsletter = isPerfect; + this.WantsNewsletter = wantsNewsLetter; } public virtual int Id Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Fixture.cs 2008-11-02 22:55:51 UTC (rev 3887) @@ -0,0 +1,69 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1478 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnTearDown() + { + base.OnTearDown(); + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Person"); + tx.Commit(); + } + } + } + + protected override void OnSetUp() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + Person e1 = new Person("Tuna Toksoz","Born in Istanbul :Turkey"); + Person e2 = new Person("Tuna Toksoz", "Born in Istanbul :Turkiye"); + s.Save(e1); + s.Save(e2); + tx.Commit(); + } + } + } + + [Test] + public void TestIfColonInStringIsNotInterpretedAsParameterInSQL() + { + using (ISession session=OpenSession()) + { + + + IList lst = session.CreateSQLQuery("select Biography from Person where Biography='Born in Istanbul :Turkey'") + .AddScalar("Biography", NHibernateUtil.String).List(); + Assert.AreEqual(1,lst.Count); + } + + } + + [Test] + public void TestIfColonInStringIsNotInterpretedAsParameterInHQL() + { + using (ISession session = OpenSession()) + { + + + IList lst = session.CreateSQLQuery("select p.Biography from Person p where p.Biography='Born in Istanbul :Turkey'") + .List(); + Assert.AreEqual(1, lst.Count); + } + + } + + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Mappings.hbm.xml 2008-11-02 22:55:51 UTC (rev 3887) @@ -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.NH1478"> + + <class name="Person" lazy="false"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="Name"/> + <property name="Biography"/> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Person.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Person.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1478/Person.cs 2008-11-02 22:55:51 UTC (rev 3887) @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1478 +{ + public class Person + { + public Person() + { + + } + + public Person(string name, string bio) + { + this.Name = name; + this.Biography = bio; + } + + public virtual int Id + { + get; + set; + } + + public virtual string Name + { + get; + set; + } + public virtual string Biography + { + get; + set; + } + + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-02 22:39:13 UTC (rev 3886) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-02 22:55:51 UTC (rev 3887) @@ -496,6 +496,8 @@ <Compile Include="NHSpecificTest\NH1447\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1447\Person.cs" /> <Compile Include="NHSpecificTest\NH1464\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1478\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1478\Person.cs" /> <Compile Include="NHSpecificTest\NH1483\BaseClass.cs" /> <Compile Include="NHSpecificTest\NH1483\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1483\SubClass.cs" /> @@ -1513,6 +1515,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1478\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1447\Mappings.hbm.xml" /> <EmbeddedResource Include="TypesTest\EnumCharClass.hbm.xml" /> <EmbeddedResource Include="Extendshbm\packageentitynamesWithColl.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-11-08 15:58:16
|
Revision: 3898 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3898&view=rev Author: fabiomaulo Date: 2008-11-08 15:58:07 +0000 (Sat, 08 Nov 2008) Log Message: ----------- Fix NH-1551 (better coverage for Oracle; by Jaroslav Mart?\195?\161sek) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/GeneratedTest/PartiallyGeneratedComponentTest.cs trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithCachingTest.cs trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithoutCachingTest.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1039/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1413/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH364/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH940/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs Modified: trunk/nhibernate/src/NHibernate.Test/GeneratedTest/PartiallyGeneratedComponentTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/GeneratedTest/PartiallyGeneratedComponentTest.cs 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/GeneratedTest/PartiallyGeneratedComponentTest.cs 2008-11-08 15:58:07 UTC (rev 3898) @@ -21,7 +21,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) { - return dialect is MsSql2000Dialect || dialect is FirebirdDialect; + return dialect is MsSql2000Dialect || dialect is FirebirdDialect || dialect is Oracle9Dialect; } [Test] Modified: trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithCachingTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithCachingTest.cs 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithCachingTest.cs 2008-11-08 15:58:07 UTC (rev 3898) @@ -17,7 +17,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) { - return dialect is MsSql2000Dialect; + return dialect is MsSql2000Dialect || dialect is Oracle9Dialect; } } } Modified: trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithoutCachingTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithoutCachingTest.cs 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/GeneratedTest/TriggerGeneratedValuesWithoutCachingTest.cs 2008-11-08 15:58:07 UTC (rev 3898) @@ -17,7 +17,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) { - return dialect is MsSql2000Dialect; + return dialect is MsSql2000Dialect || dialect is Oracle9Dialect; } protected override string CacheConcurrencyStrategy Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1039/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1039/Mappings.hbm.xml 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1039/Mappings.hbm.xml 2008-11-08 15:58:07 UTC (rev 3898) @@ -13,7 +13,7 @@ <dynamic-component name="Properties"> <set name="Phones" table="NH1039_Phone"> <key column="PersonId"/> - <element column="Number" type="string"/> + <element column="`Number`" type="string"/> </set> </dynamic-component> </class> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1408/Mappings.hbm.xml 2008-11-08 15:58:07 UTC (rev 3898) @@ -6,7 +6,7 @@ <class name="DbResource" table="Resources"> <cache usage="nonstrict-read-write" /> <id name="Oid" column="ID"> - <generator class="identity"/> + <generator class="native"/> </id> <discriminator column="Type" type="String(25)" not-null="true" /> <version name="Version" column="Version" /> @@ -27,7 +27,7 @@ <class name="DbResourceKey" table="ResourceKeys"> <cache usage="nonstrict-read-write" /> <id name="Oid" column="ID"> - <generator class="identity"/> + <generator class="native"/> </id> <version name="Version" column="Version" /> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1413/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1413/Mappings.hbm.xml 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1413/Mappings.hbm.xml 2008-11-08 15:58:07 UTC (rev 3898) @@ -5,7 +5,7 @@ <class name="Foo" table="XFoos"> <id name="Oid" column="ID"> - <generator class="identity"/> + <generator class="native"/> </id> <version name="Version" column="Version" /> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH364/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH364/Mappings.hbm.xml 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH364/Mappings.hbm.xml 2008-11-08 15:58:07 UTC (rev 3898) @@ -37,7 +37,7 @@ <id name="Id"> <generator class="native"/> </id> - <property name="Number"/> + <property name="Number" column="`Number`"/> <idbag name="Items" table="InvoiceItem364" lazy="true" access="field.pascalcase-underscore"> <collection-id column="Id" type="Int32"> <generator class="native"/> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Fixture.cs 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Fixture.cs 2008-11-08 15:58:07 UTC (rev 3898) @@ -2,6 +2,7 @@ using System.Data; using Iesi.Collections.Generic; using NHibernate; +using NHibernate.Dialect; using NHibernate.SqlTypes; using NHibernate.UserTypes; using NUnit.Framework; @@ -11,6 +12,12 @@ [TestFixture] public class Fixture : BugTestCase { + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is MsSql2000Dialect; + } + [Test] public void CaseInsensitiveId() { Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Mappings.hbm.xml 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH732/Mappings.hbm.xml 2008-11-08 15:58:07 UTC (rev 3898) @@ -15,7 +15,7 @@ </class> <class name="UserToRole"> <id name="Id"> - <generator class="identity"/> + <generator class="native"/> </id> <many-to-one class="User" column="UserName" name="User"/> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH940/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH940/Mappings.hbm.xml 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH940/Mappings.hbm.xml 2008-11-08 15:58:07 UTC (rev 3898) @@ -2,7 +2,7 @@ <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="NHibernate.Test.NHSpecificTest.NH940" assembly="NHibernate.Test"> <class name="A"> - <id name="Id" column="uid" type="Int64"> + <id name="Id" column="`uid`" type="Int64"> <generator class="increment"/> </id> @@ -10,7 +10,7 @@ </class> <class name="B"> - <id name="Id" column="uid" type="Int64"> + <id name="Id" column="`uid`" type="Int64"> <generator class="increment"/> </id> </class> Modified: trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs 2008-11-08 15:24:29 UTC (rev 3897) +++ trunk/nhibernate/src/NHibernate.Test/TypeParameters/TypeParameterTest.cs 2008-11-08 15:58:07 UTC (rev 3898) @@ -70,7 +70,7 @@ "Default value should have been mapped to null"); Assert.IsTrue(reader.GetValue(reader.GetOrdinal("VALUE_TWO")) == DBNull.Value, "Default value should have been mapped to null"); - Assert.AreEqual(reader.GetInt32(reader.GetOrdinal("VALUE_THREE")), 5, + Assert.AreEqual(Convert.ToInt32(reader.GetValue(reader.GetOrdinal("VALUE_THREE"))), 5, "Non-Default value should not be changed"); Assert.IsTrue(reader.GetValue(reader.GetOrdinal("VALUE_FOUR")) == DBNull.Value, "Default value should have been mapped to null"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-11-12 02:40:25
|
Revision: 3907 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3907&view=rev Author: fabiomaulo Date: 2008-11-12 02:40:14 +0000 (Wed, 12 Nov 2008) Log Message: ----------- Tests for session.Merge Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Operations/ trunk/nhibernate/src/NHibernate.Test/Operations/AbstractOperationTestCase.cs trunk/nhibernate/src/NHibernate.Test/Operations/Address.cs trunk/nhibernate/src/NHibernate.Test/Operations/Competition.cs trunk/nhibernate/src/NHibernate.Test/Operations/Competition.hbm.xml trunk/nhibernate/src/NHibernate.Test/Operations/Competitor.cs trunk/nhibernate/src/NHibernate.Test/Operations/Employee.cs trunk/nhibernate/src/NHibernate.Test/Operations/Employer.cs trunk/nhibernate/src/NHibernate.Test/Operations/Employer.hbm.xml trunk/nhibernate/src/NHibernate.Test/Operations/MergeFixture.cs trunk/nhibernate/src/NHibernate.Test/Operations/Node.cs trunk/nhibernate/src/NHibernate.Test/Operations/Node.hbm.xml trunk/nhibernate/src/NHibernate.Test/Operations/NumberedNode.cs trunk/nhibernate/src/NHibernate.Test/Operations/OneToOne.hbm.xml trunk/nhibernate/src/NHibernate.Test/Operations/OptLockEntity.hbm.xml trunk/nhibernate/src/NHibernate.Test/Operations/Person.cs trunk/nhibernate/src/NHibernate.Test/Operations/PersonalDetails.cs trunk/nhibernate/src/NHibernate.Test/Operations/TimestampedEntity.cs trunk/nhibernate/src/NHibernate.Test/Operations/VersionedEntity.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-10 17:47:28 UTC (rev 3906) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-12 02:40:14 UTC (rev 3907) @@ -767,6 +767,19 @@ <Compile Include="Ondelete\ParentChildFixture.cs" /> <Compile Include="Ondelete\Person.cs" /> <Compile Include="Ondelete\Salesperson.cs" /> + <Compile Include="Operations\AbstractOperationTestCase.cs" /> + <Compile Include="Operations\Address.cs" /> + <Compile Include="Operations\Competition.cs" /> + <Compile Include="Operations\Competitor.cs" /> + <Compile Include="Operations\Employee.cs" /> + <Compile Include="Operations\Employer.cs" /> + <Compile Include="Operations\MergeFixture.cs" /> + <Compile Include="Operations\Node.cs" /> + <Compile Include="Operations\NumberedNode.cs" /> + <Compile Include="Operations\Person.cs" /> + <Compile Include="Operations\PersonalDetails.cs" /> + <Compile Include="Operations\TimestampedEntity.cs" /> + <Compile Include="Operations\VersionedEntity.cs" /> <Compile Include="ProjectionFixtures\Key.cs" /> <Compile Include="ProjectionFixtures\Fixture.cs" /> <Compile Include="ProjectionFixtures\NodeType.cs" /> @@ -1520,6 +1533,11 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="Operations\Competition.hbm.xml" /> + <EmbeddedResource Include="Operations\Employer.hbm.xml" /> + <EmbeddedResource Include="Operations\Node.hbm.xml" /> + <EmbeddedResource Include="Operations\OneToOne.hbm.xml" /> + <EmbeddedResource Include="Operations\OptLockEntity.hbm.xml" /> <EmbeddedResource Include="Subclass\EnumDiscriminator\EnumDiscriminator.hbm.xml" /> <EmbeddedResource Include="Generatedkeys\Select\MyEntity.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1478\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/Operations/AbstractOperationTestCase.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/AbstractOperationTestCase.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/AbstractOperationTestCase.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,58 @@ +using System.Collections; +using NHibernate.Cfg; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.Operations +{ + public abstract class AbstractOperationTestCase : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get + { + return new[] + { + "Operations.Node.hbm.xml", "Operations.Employer.hbm.xml", "Operations.OptLockEntity.hbm.xml", + "Operations.OneToOne.hbm.xml", "Operations.Competition.hbm.xml" + }; + } + } + + protected override string CacheConcurrencyStrategy + { + get { return null; } + } + + protected override void Configure(Configuration configuration) + { + configuration.SetProperty(Environment.GenerateStatistics, "true"); + configuration.SetProperty(Environment.BatchSize, "0"); + } + + protected void ClearCounts() + { + sessions.Statistics.Clear(); + } + + protected void AssertInsertCount(long expected) + { + Assert.That(sessions.Statistics.EntityInsertCount, Is.EqualTo(expected), "unexpected insert count"); + } + + protected void AssertUpdateCount(int expected) + { + Assert.That(sessions.Statistics.EntityUpdateCount, Is.EqualTo(expected), "unexpected update count"); + } + + protected void AssertDeleteCount(int expected) + { + Assert.That(sessions.Statistics.EntityDeleteCount, Is.EqualTo(expected), "unexpected delete count"); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Address.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Address.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Address.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,21 @@ +namespace NHibernate.Test.Operations +{ + public class Address + { + private Person resident; + public virtual long Id { get; set; } + public virtual string StreetAddress { get; set; } + public virtual string City { get; set; } + public virtual string Country { get; set; } + + public virtual Person Resident + { + get { return resident; } + set + { + resident = value; + resident.Address = this; + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Competition.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Competition.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Competition.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.Operations +{ + public class Competition + { + public Competition() + { + Competitors = new List<Competitor>(); + } + public virtual int Id { get; set; } + public virtual IList<Competitor> Competitors { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Competition.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Competition.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Competition.hbm.xml 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Operations"> + + <class name="Competition"> + <id name="Id"> + <generator class="native"/> + </id> + <list name="Competitors" table="COMPET_ION_OR" cascade="persist,merge,delete"> + <key column="TION_ID"/> + <list-index column="INDEX_COL"/> + <many-to-many class="Competitor" column="TOR_ID" /> + </list> + </class> + + <class name="Competitor"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Name"/> + </class> + +</hibernate-mapping> + Added: trunk/nhibernate/src/NHibernate.Test/Operations/Competitor.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Competitor.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Competitor.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,8 @@ +namespace NHibernate.Test.Operations +{ + public class Competitor + { + public virtual int Id { get; set; } + public virtual string Name { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Employee.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Employee.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Employee.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.Operations +{ + public class Employee + { + public virtual int Id { get; set; } + public virtual ICollection<Employer> Employers { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Employer.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Employer.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Employer.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.Operations +{ + public class Employer + { + public virtual int Id { get; set; } + public virtual ICollection<Employee> Employees { get; set; } + public virtual int Vers { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Employer.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Employer.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Employer.hbm.xml 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Operations"> + + <class name="Employer" polymorphism="explicit"> + <id name="Id"> + <generator class="native"/> + </id> + <version column="vers" name="Vers"/> + <bag name="Employees" cascade="persist,merge" table="EMPLOYER_EMPLOYEE"> + <key column="EMPER_ID"/> + <many-to-many class="Employee" column="EMPEE_ID" /> + </bag> + </class> + + <class name="Employee" polymorphism="explicit"> + <id name="Id"> + <generator class="native"/> + </id> + <bag name="Employers" inverse="true" cascade="persist,merge,save-update" table="EMPLOYER_EMPLOYEE"> + <key column="EMPEE_ID"/> + <many-to-many class="Employer" column="EMPER_ID" /> + </bag> + </class> + +</hibernate-mapping> + Added: trunk/nhibernate/src/NHibernate.Test/Operations/MergeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/MergeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/MergeFixture.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,705 @@ +using System.Collections.Generic; +using NHibernate.Criterion; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.Operations +{ + [TestFixture] + public class MergeFixture : AbstractOperationTestCase + { + protected override void OnTearDown() + { + Cleanup(); + } + + private void Cleanup() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from NumberedNode where parent is not null"); + s.Delete("from NumberedNode"); + + s.Delete("from Node where parent is not null"); + s.Delete("from Node"); + + s.Delete("from VersionedEntity where parent is not null"); + s.Delete("from VersionedEntity"); + s.Delete("from TimestampedEntity"); + + s.Delete("from Competitor"); + s.Delete("from Competition"); + + s.Delete("from Employer"); + + tx.Commit(); + } + } + } + + [Test] + public void DeleteAndMerge() + { + using (ISession s = OpenSession()) + { + s.BeginTransaction(); + var jboss = new Employer(); + s.Persist(jboss); + s.Transaction.Commit(); + s.Clear(); + + s.BeginTransaction(); + var otherJboss = s.Get<Employer>(jboss.Id); + s.Delete(otherJboss); + s.Transaction.Commit(); + s.Clear(); + jboss.Vers = 1; + s.BeginTransaction(); + s.Merge(jboss); + s.Transaction.Commit(); + } + } + + [Test] + public void MergeBidiForeignKeyOneToOne() + { + Person p; + Address a; + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + p = new Person {Name = "steve"}; + a = new Address {StreetAddress = "123 Main", City = "Austin", Country = "US", Resident = p}; + s.Persist(a); + s.Persist(p); + tx.Commit(); + } + } + + ClearCounts(); + + p.Address.StreetAddress = "321 Main"; + + using (ISession s = OpenSession()) + { + using (s.BeginTransaction()) + { + p = (Person) s.Merge(p); + s.Transaction.Commit(); + } + } + + AssertInsertCount(0); + AssertUpdateCount(0); // no cascade + AssertDeleteCount(0); + + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete(a); + s.Delete(p); + tx.Commit(); + } + } + } + + [Test, Ignore("Need some more investigation about id sync.")] + public void MergeBidiPrimayKeyOneToOne() + { + Person p; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + p = new Person {Name = "steve"}; + new PersonalDetails {SomePersonalDetail = "I have big feet", Person = p}; + s.Persist(p); + tx.Commit(); + } + + ClearCounts(); + + p.Details.SomePersonalDetail = p.Details.SomePersonalDetail + " and big hands too"; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + p = (Person) s.Merge(p); + tx.Commit(); + } + + AssertInsertCount(0); + AssertUpdateCount(1); + AssertDeleteCount(0); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete(p); + tx.Commit(); + } + } + + [Test] + public void MergeDeepTree() + { + ClearCounts(); + + ISession s = OpenSession(); + ITransaction tx = s.BeginTransaction(); + var root = new Node {Name = "root"}; + var child = new Node {Name = "child"}; + var grandchild = new Node {Name = "grandchild"}; + root.AddChild(child); + child.AddChild(grandchild); + s.Merge(root); + tx.Commit(); + s.Close(); + + AssertInsertCount(3); + AssertUpdateCount(0); + ClearCounts(); + + grandchild.Description = "the grand child"; + var grandchild2 = new Node {Name = "grandchild2"}; + child.AddChild(grandchild2); + + s = OpenSession(); + tx = s.BeginTransaction(); + s.Merge(root); + tx.Commit(); + s.Close(); + + AssertInsertCount(1); + AssertUpdateCount(1); + ClearCounts(); + + var child2 = new Node {Name = "child2"}; + var grandchild3 = new Node {Name = "grandchild3"}; + child2.AddChild(grandchild3); + root.AddChild(child2); + + s = OpenSession(); + tx = s.BeginTransaction(); + s.Merge(root); + tx.Commit(); + s.Close(); + + AssertInsertCount(2); + AssertUpdateCount(0); + ClearCounts(); + + s = OpenSession(); + tx = s.BeginTransaction(); + s.Delete(grandchild); + s.Delete(grandchild2); + s.Delete(grandchild3); + s.Delete(child); + s.Delete(child2); + s.Delete(root); + tx.Commit(); + s.Close(); + } + + [Test] + public void MergeDeepTreeWithGeneratedId() + { + ClearCounts(); + + NumberedNode root; + NumberedNode child; + NumberedNode grandchild; + using (ISession s = OpenSession()) + { + ITransaction tx = s.BeginTransaction(); + root = new NumberedNode("root"); + child = new NumberedNode("child"); + grandchild = new NumberedNode("grandchild"); + root.AddChild(child); + child.AddChild(grandchild); + root = (NumberedNode) s.Merge(root); + tx.Commit(); + } + + AssertInsertCount(3); + AssertUpdateCount(0); + ClearCounts(); + + IEnumerator<NumberedNode> rit = root.Children.GetEnumerator(); + rit.MoveNext(); + child = rit.Current; + IEnumerator<NumberedNode> cit = child.Children.GetEnumerator(); + cit.MoveNext(); + grandchild = cit.Current; + grandchild.Description = "the grand child"; + var grandchild2 = new NumberedNode("grandchild2"); + child.AddChild(grandchild2); + + using (ISession s = OpenSession()) + { + ITransaction tx = s.BeginTransaction(); + root = (NumberedNode) s.Merge(root); + tx.Commit(); + } + + AssertInsertCount(1); + AssertUpdateCount(1); + ClearCounts(); + + sessions.Evict(typeof (NumberedNode)); + + var child2 = new NumberedNode("child2"); + var grandchild3 = new NumberedNode("grandchild3"); + child2.AddChild(grandchild3); + root.AddChild(child2); + + using (ISession s = OpenSession()) + { + ITransaction tx = s.BeginTransaction(); + root = (NumberedNode) s.Merge(root); + tx.Commit(); + } + + AssertInsertCount(2); + AssertUpdateCount(0); + ClearCounts(); + + using (ISession s = OpenSession()) + { + ITransaction tx = s.BeginTransaction(); + s.Delete("from NumberedNode where name like 'grand%'"); + s.Delete("from NumberedNode where name like 'child%'"); + s.Delete("from NumberedNode"); + tx.Commit(); + } + } + + [Test] + public void MergeManaged() + { + ISession s = OpenSession(); + ITransaction tx = s.BeginTransaction(); + var root = new NumberedNode("root"); + s.Persist(root); + tx.Commit(); + + ClearCounts(); + + tx = s.BeginTransaction(); + var child = new NumberedNode("child"); + root.AddChild(child); + Assert.That(s.Merge(root), Is.SameAs(root)); + IEnumerator<NumberedNode> rit = root.Children.GetEnumerator(); + rit.MoveNext(); + NumberedNode mergedChild = rit.Current; + Assert.That(mergedChild, Is.Not.SameAs(child)); + Assert.That(s.Contains(mergedChild)); + Assert.That(! s.Contains(child)); + Assert.That(root.Children.Count, Is.EqualTo(1)); + Assert.That(root.Children.Contains(mergedChild)); + //assertNotSame( mergedChild, s.Merge(child) ); //yucky :( + tx.Commit(); + + AssertInsertCount(1); + AssertUpdateCount(0); + + Assert.That(root.Children.Count, Is.EqualTo(1)); + Assert.That(root.Children.Contains(mergedChild)); + + tx = s.BeginTransaction(); + Assert.That(s.CreateCriteria(typeof (NumberedNode)).SetProjection(Projections.RowCount()).UniqueResult(), + Is.EqualTo(2)); + tx.Rollback(); + s.Close(); + } + + [Test] + public void MergeManyToManyWithCollectionDeference() + { + // setup base data... + ISession s = OpenSession(); + ITransaction tx = s.BeginTransaction(); + var competition = new Competition(); + competition.Competitors.Add(new Competitor {Name = "Name"}); + competition.Competitors.Add(new Competitor()); + competition.Competitors.Add(new Competitor()); + s.Persist(competition); + tx.Commit(); + s.Close(); + + // the competition graph is now detached: + // 1) create a new List reference to represent the competitors + s = OpenSession(); + tx = s.BeginTransaction(); + var newComp = new List<Competitor>(); + Competitor originalCompetitor = competition.Competitors[0]; + originalCompetitor.Name = "Name2"; + newComp.Add(originalCompetitor); + newComp.Add(new Competitor()); + // 2) set that new List reference unto the Competition reference + competition.Competitors = newComp; + // 3) attempt the merge + var competition2 = (Competition) s.Merge(competition); + tx.Commit(); + s.Close(); + + Assert.That(!(competition == competition2)); + Assert.That(!(competition.Competitors == competition2.Competitors)); + Assert.That(competition2.Competitors.Count, Is.EqualTo(2)); + + s = OpenSession(); + tx = s.BeginTransaction(); + competition = s.Get<Competition>(competition.Id); + Assert.That(competition.Competitors.Count, Is.EqualTo(2)); + s.Delete(competition); + tx.Commit(); + s.Close(); + } + + [Test] + public void MergeStaleVersionFails() + { + ISession s = OpenSession(); + s.BeginTransaction(); + var entity = new VersionedEntity {Id = "entity", Name = "entity"}; + s.Persist(entity); + s.Transaction.Commit(); + s.Close(); + + // make the detached 'entity' reference stale... + s = OpenSession(); + s.BeginTransaction(); + var entity2 = s.Get<VersionedEntity>(entity.Id); + entity2.Name = "entity-name"; + s.Transaction.Commit(); + s.Close(); + + // now try to reattch it + s = OpenSession(); + s.BeginTransaction(); + try + { + s.Merge(entity); + s.Transaction.Commit(); + Assert.Fail("was expecting staleness error"); + } + catch (StaleObjectStateException) + { + // expected outcome... + } + finally + { + s.Transaction.Rollback(); + s.Close(); + Cleanup(); + } + } + + [Test] + public void MergeTree() + { + ClearCounts(); + + ISession s = OpenSession(); + ITransaction tx = s.BeginTransaction(); + var root = new Node {Name = "root"}; + var child = new Node {Name = "child"}; + root.AddChild(child); + s.Persist(root); + tx.Commit(); + s.Close(); + + AssertInsertCount(2); + ClearCounts(); + + root.Description = "The root node"; + child.Description = "The child node"; + + var secondChild = new Node {Name = "second child"}; + + root.AddChild(secondChild); + + s = OpenSession(); + tx = s.BeginTransaction(); + s.Merge(root); + tx.Commit(); + s.Close(); + + AssertInsertCount(1); + AssertUpdateCount(2); + } + + [Test] + public void MergeTreeWithGeneratedId() + { + ClearCounts(); + + ISession s = OpenSession(); + ITransaction tx = s.BeginTransaction(); + var root = new NumberedNode("root"); + var child = new NumberedNode("child"); + root.AddChild(child); + s.Persist(root); + tx.Commit(); + s.Close(); + + AssertInsertCount(2); + ClearCounts(); + + root.Description = "The root node"; + child.Description = "The child node"; + + var secondChild = new NumberedNode("second child"); + + root.AddChild(secondChild); + + s = OpenSession(); + tx = s.BeginTransaction(); + s.Merge(root); + tx.Commit(); + s.Close(); + + AssertInsertCount(1); + AssertUpdateCount(2); + } + + [Test] + public void NoExtraUpdatesOnMerge() + { + ISession s = OpenSession(); + s.BeginTransaction(); + var node = new Node {Name = "test"}; + s.Persist(node); + s.Transaction.Commit(); + s.Close(); + + ClearCounts(); + + // node is now detached, but we have made no changes. so attempt to merge it + // into this new session; this should cause no updates... + s = OpenSession(); + s.BeginTransaction(); + node = (Node) s.Merge(node); + s.Transaction.Commit(); + s.Close(); + + AssertUpdateCount(0); + AssertInsertCount(0); + + /////////////////////////////////////////////////////////////////////// + // as a control measure, now update the node while it is detached and + // make sure we get an update as a result... + node.Description = "new description"; + s = OpenSession(); + s.BeginTransaction(); + node = (Node) s.Merge(node); + s.Transaction.Commit(); + s.Close(); + AssertUpdateCount(1); + AssertInsertCount(0); + /////////////////////////////////////////////////////////////////////// + } + + [Test] + public void NoExtraUpdatesOnMergeVersioned() + { + ISession s = OpenSession(); + s.BeginTransaction(); + var entity = new VersionedEntity {Id = "entity", Name = "entity"}; + s.Persist(entity); + s.Transaction.Commit(); + s.Close(); + + ClearCounts(); + + // entity is now detached, but we have made no changes. so attempt to merge it + // into this new session; this should cause no updates... + s = OpenSession(); + s.BeginTransaction(); + var mergedEntity = (VersionedEntity) s.Merge(entity); + s.Transaction.Commit(); + s.Close(); + + AssertUpdateCount(0); + AssertInsertCount(0); + Assert.That(entity.Version, Is.EqualTo(mergedEntity.Version), "unexpected version increment"); + + /////////////////////////////////////////////////////////////////////// + // as a control measure, now update the node while it is detached and + // make sure we get an update as a result... + entity.Name = "new name"; + s = OpenSession(); + s.BeginTransaction(); + entity = (VersionedEntity) s.Merge(entity); + s.Transaction.Commit(); + s.Close(); + AssertUpdateCount(1); + AssertInsertCount(0); + /////////////////////////////////////////////////////////////////////// + } + + [Test] + public void NoExtraUpdatesOnMergeVersionedWithCollection() + { + ISession s = OpenSession(); + s.BeginTransaction(); + var parent = new VersionedEntity {Id = "parent", Name = "parent"}; + var child = new VersionedEntity {Id = "child", Name = "child"}; + parent.Children.Add(child); + child.Parent = parent; + s.Persist(parent); + s.Transaction.Commit(); + s.Close(); + + ClearCounts(); + + // parent is now detached, but we have made no changes. so attempt to merge it + // into this new session; this should cause no updates... + s = OpenSession(); + s.BeginTransaction(); + var mergedParent = (VersionedEntity) s.Merge(parent); + s.Transaction.Commit(); + s.Close(); + + AssertUpdateCount(0); + AssertInsertCount(0); + Assert.That(parent.Version, Is.EqualTo(mergedParent.Version), "unexpected parent version increment"); + IEnumerator<VersionedEntity> it = mergedParent.Children.GetEnumerator(); + it.MoveNext(); + VersionedEntity mergedChild = it.Current; + Assert.That(child.Version, Is.EqualTo(mergedChild.Version), "unexpected child version increment"); + + /////////////////////////////////////////////////////////////////////// + // as a control measure, now update the node while it is detached and + // make sure we get an update as a result... + mergedParent.Name = "new name"; + mergedParent.Children.Add(new VersionedEntity {Id = "child2", Name = "new child"}); + s = OpenSession(); + s.BeginTransaction(); + parent = (VersionedEntity) s.Merge(mergedParent); + s.Transaction.Commit(); + s.Close(); + AssertUpdateCount(1); + AssertInsertCount(1); + /////////////////////////////////////////////////////////////////////// + } + + [Test] + public void NoExtraUpdatesOnMergeWithCollection() + { + ISession s = OpenSession(); + s.BeginTransaction(); + var parent = new Node {Name = "parent"}; + var child = new Node {Name = "child"}; + parent.Children.Add(child); + child.Parent = parent; + s.Persist(parent); + s.Transaction.Commit(); + s.Close(); + + ClearCounts(); + + // parent is now detached, but we have made no changes. so attempt to merge it + // into this new session; this should cause no updates... + s = OpenSession(); + s.BeginTransaction(); + parent = (Node) s.Merge(parent); + s.Transaction.Commit(); + s.Close(); + + AssertUpdateCount(0); + AssertInsertCount(0); + + /////////////////////////////////////////////////////////////////////// + // as a control measure, now update the node while it is detached and + // make sure we get an update as a result... + IEnumerator<Node> it = parent.Children.GetEnumerator(); + it.MoveNext(); + it.Current.Description = "child's new description"; + parent.Children.Add(new Node {Name = "second child"}); + s = OpenSession(); + s.BeginTransaction(); + parent = (Node) s.Merge(parent); + s.Transaction.Commit(); + s.Close(); + AssertUpdateCount(1); + AssertInsertCount(1); + /////////////////////////////////////////////////////////////////////// + } + + [Test] + public void PersistThenMergeInSameTxnWithTimestamp() + { + ISession s = OpenSession(); + ITransaction tx = s.BeginTransaction(); + var entity = new TimestampedEntity {Id = "test", Name = "test"}; + s.Persist(entity); + s.Merge(new TimestampedEntity {Id = "test", Name = "test-2"}); + + try + { + // control operation... + s.SaveOrUpdate(new TimestampedEntity {Id = "test", Name = "test-3"}); + Assert.Fail("saveOrUpdate() should fail here"); + } + catch (NonUniqueObjectException) + { + // expected behavior + } + + tx.Commit(); + s.Close(); + } + + [Test] + public void PersistThenMergeInSameTxnWithVersion() + { + ISession s = OpenSession(); + ITransaction tx = s.BeginTransaction(); + var entity = new VersionedEntity {Id = "test", Name = "test"}; + s.Persist(entity); + s.Merge(new VersionedEntity {Id = "test", Name = "test-2"}); + + try + { + // control operation... + s.SaveOrUpdate(new VersionedEntity {Id = "test", Name = "test-3"}); + Assert.Fail("saveOrUpdate() should fail here"); + } + catch (NonUniqueObjectException) + { + // expected behavior + } + + tx.Commit(); + s.Close(); + } + + [Test] + public void RecursiveMergeTransient() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + var jboss = new Employer(); + var gavin = new Employee(); + jboss.Employees = new List<Employee> {gavin}; + s.Merge(jboss); + s.Flush(); + jboss = s.CreateQuery("from Employer e join fetch e.Employees").UniqueResult<Employer>(); + Assert.That(NHibernateUtil.IsInitialized(jboss.Employees)); + Assert.That(jboss.Employees.Count, Is.EqualTo(1)); + s.Clear(); + IEnumerator<Employee> it = jboss.Employees.GetEnumerator(); + it.MoveNext(); + + s.Merge(it.Current); + tx.Commit(); + } + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Node.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Node.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Node.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,43 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Operations +{ + public class Node + { + private ISet<Node> cascadingChildren = new HashedSet<Node>(); + private ISet<Node> children = new HashedSet<Node>(); + private DateTime created = DateTime.Now; + + public virtual string Name { get; set; } + + public virtual string Description { get; set; } + + public virtual DateTime Created + { + get { return created; } + set { created = value; } + } + + public virtual Node Parent { get; set; } + + public virtual ISet<Node> Children + { + get { return children; } + set { children = value; } + } + + public virtual ISet<Node> CascadingChildren + { + get { return cascadingChildren; } + set { cascadingChildren = value; } + } + + public virtual Node AddChild(Node child) + { + children.Add(child); + child.Parent = this; + return this; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/Node.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Node.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Node.hbm.xml 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Operations"> + + <class name="Node" polymorphism="explicit"> + <id name="Name"> + <generator class="assigned"/> + </id> + <property name="Description"/> + <many-to-one name="Parent"/> + <property name="Created" not-null="true"/> + <set name="Children" inverse="true" cascade="persist,merge,save-update,evict"> + <key column="parent"/> + <one-to-many class="Node"/> + </set> + <set name="CascadingChildren" inverse="false" cascade="persist,merge,save-update,evict,delete"> + <key column="CASC_PARENT"/> + <one-to-many class="Node"/> + </set> + </class> + + <class name="NumberedNode" polymorphism="explicit"> + <id name="Id" unsaved-value="0"> + <generator class="native"/> + </id> + <property name="Name"> + <column name="name" index="iname" not-null="true"/> + </property> + <property name="Description"/> + <property name="Created" not-null="true"/> + <many-to-one name="Parent" class="NumberedNode"/> + <set name="Children" inverse="true" cascade="persist,merge,save-update" access="field.camelcase"> + <key column="parent"/> + <one-to-many class="NumberedNode"/> + </set> + </class> + +</hibernate-mapping> + Added: trunk/nhibernate/src/NHibernate.Test/Operations/NumberedNode.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/NumberedNode.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/NumberedNode.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Operations +{ + public class NumberedNode + { + private readonly ISet<NumberedNode> children = new HashedSet<NumberedNode>(); + + protected NumberedNode() {} + + public NumberedNode(string name) + { + Name = name; + Created = DateTime.Now; + } + + public virtual long Id { get; set; } + public virtual string Name { get; set; } + public virtual NumberedNode Parent { get; set; } + + public virtual ICollection<NumberedNode> Children + { + get { return children; } + } + + public virtual string Description { get; set; } + public virtual DateTime Created { get; set; } + + public virtual NumberedNode AddChild(NumberedNode child) + { + children.Add(child); + child.Parent = this; + return this; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/OneToOne.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/OneToOne.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/OneToOne.hbm.xml 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!-- + Mappings demonstrating bidirectional one-to-one mappings for testing + with various operations. + + Person -> Address is modeled as a bidirectional one to one based on FK. + Person -> Details is modeled as a bidirectional one to one based on PK. +--> + +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Operations"> + + <class name="Person" table="OPS_PERSON"> + <id name="Id" column="ID" type="long"> + <generator class="increment"/> + </id> + <property name="Name" column="NAME" type="string"/> + <one-to-one name="Address" class="Address" property-ref="Resident" /> + <one-to-one name="Details" class="PersonalDetails" cascade="all" /> + </class> + + <class name="Address" table="OPS_ADDRESS"> + <id name="Id" column="ID" type="long"> + <generator class="increment"/> + </id> + <property name="StreetAddress" column="STREET" type="string" /> + <property name="City" column="CITY" type="string" /> + <property name="Country" column="CTRY" type="string" /> + <many-to-one name="Resident" column="RESIDENT" class="Person" /> + </class> + + <class name="PersonalDetails" table="OPS_PERS_DETAIL"> + <id name="Id" column="ID" type="long"> + <generator class="increment"/> + </id> + <property name="SomePersonalDetail" column="SOME_DETAIL" type="string"/> + <one-to-one name="Person" class="Person" constrained="true" /> + </class> + +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/OptLockEntity.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/OptLockEntity.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/OptLockEntity.hbm.xml 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Operations"> + + <class name="VersionedEntity" table="V_ENTITY"> + <id name="Id" column="ID" type="string"> + <generator class="assigned"/> + </id> + <version name="Version" column="VERS" type="long" /> + <property name="Name" column="NAME" type="string" /> + <many-to-one name="Parent" class="VersionedEntity"/> + <set name="Children" inverse="true" cascade="persist,merge,save-update,evict,delete"> + <key column="parent"/> + <one-to-many class="VersionedEntity"/> + </set> + </class> + + <class name="TimestampedEntity" table="T_ENTITY"> + <id name="Id" column="ID" type="string"> + <generator class="assigned"/> + </id> + <timestamp name="Timestamp" column="TS" /> + <property name="Name" column="NAME" type="string" /> + </class> + +</hibernate-mapping> + Added: trunk/nhibernate/src/NHibernate.Test/Operations/Person.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/Person.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/Person.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,10 @@ +namespace NHibernate.Test.Operations +{ + public class Person + { + public virtual long Id { get; set; } + public virtual string Name { get; set; } + public virtual Address Address { get; set; } + public virtual PersonalDetails Details { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/PersonalDetails.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/PersonalDetails.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/PersonalDetails.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,19 @@ +namespace NHibernate.Test.Operations +{ + public class PersonalDetails + { + private Person person; + public virtual long Id { get; set; } + public virtual string SomePersonalDetail { get; set; } + + public virtual Person Person + { + get { return person; } + set + { + person = value; + person.Details = this; + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/TimestampedEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/TimestampedEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/TimestampedEntity.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,11 @@ +using System; + +namespace NHibernate.Test.Operations +{ + public class TimestampedEntity + { + public virtual string Id { get; set; } + public virtual string Name { get; set; } + public virtual DateTime Timestamp { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/Operations/VersionedEntity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Operations/VersionedEntity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Operations/VersionedEntity.cs 2008-11-12 02:40:14 UTC (rev 3907) @@ -0,0 +1,18 @@ +using Iesi.Collections.Generic; + +namespace NHibernate.Test.Operations +{ + public class VersionedEntity + { + public VersionedEntity() + { + Children = new HashedSet<VersionedEntity>(); + } + + public virtual string Id { get; set; } + public virtual string Name { get; set; } + public virtual long Version { get; set; } + public virtual VersionedEntity Parent { get; set; } + public virtual ISet<VersionedEntity> Children { get; set; } + } +} \ 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: <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. |
From: <te...@us...> - 2008-11-17 13:59:27
|
Revision: 3914 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3914&view=rev Author: tehlike Date: 2008-11-17 13:59:23 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Relocating tests for SchemaUpdate. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/1_Version.hbm.xml trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/2_Version.hbm.xml trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/Version.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/ Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/SchemaUpdate/ Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-16 22:37:57 UTC (rev 3913) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-17 13:59:23 UTC (rev 3914) @@ -818,8 +818,8 @@ <Compile Include="QueryTest\PositionalParametersFixture.cs" /> <Compile Include="QueryTest\QueryParametersFixture.cs" /> <Compile Include="ReflectionOptimizerTest\LcgFixture.cs" /> - <Compile Include="SchemaUpdate\MigrationFixture.cs" /> - <Compile Include="SchemaUpdate\Version.cs" /> + <Compile Include="Tools\hbm2ddl\SchemaUpdate\MigrationFixture.cs" /> + <Compile Include="Tools\hbm2ddl\SchemaUpdate\Version.cs" /> <Compile Include="SecondLevelCacheTest\AnotherItem.cs" /> <Compile Include="SecondLevelCacheTest\Item.cs" /> <Compile Include="SecondLevelCacheTest\SecondLevelCacheTest.cs" /> @@ -1396,8 +1396,8 @@ <EmbeddedResource Include="NHSpecificTest\NH995\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> - <EmbeddedResource Include="SchemaUpdate\1_Version.hbm.xml" /> - <EmbeddedResource Include="SchemaUpdate\2_Version.hbm.xml" /> + <EmbeddedResource Include="Tools\hbm2ddl\SchemaUpdate\1_Version.hbm.xml" /> + <EmbeddedResource Include="Tools\hbm2ddl\SchemaUpdate\2_Version.hbm.xml" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="BulkManipulation\Vehicle.hbm.xml" /> Property changes on: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate ___________________________________________________________________ Added: svn:mergeinfo + Modified: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/1_Version.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SchemaUpdate/1_Version.hbm.xml 2008-11-14 15:53:37 UTC (rev 3910) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/1_Version.hbm.xml 2008-11-17 13:59:23 UTC (rev 3914) @@ -1,6 +1,6 @@ <?xml version="1.0"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" - namespace="NHibernate.Test.SchemaUpdate" + namespace="NHibernate.Test.Tools.hbm2ddl.SchemaUpdate" assembly="NHibernate.Test"> <class name="Version"> Modified: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/2_Version.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SchemaUpdate/2_Version.hbm.xml 2008-11-14 15:53:37 UTC (rev 3910) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/2_Version.hbm.xml 2008-11-17 13:59:23 UTC (rev 3914) @@ -1,6 +1,6 @@ <?xml version="1.0"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" - namespace="NHibernate.Test.SchemaUpdate" + namespace="NHibernate.Test.Tools.hbm2ddl.SchemaUpdate" assembly="NHibernate.Test"> <class name="Version"> Modified: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SchemaUpdate/MigrationFixture.cs 2008-11-14 15:53:37 UTC (rev 3910) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs 2008-11-17 13:59:23 UTC (rev 3914) @@ -5,7 +5,7 @@ using NHibernate.Tool.hbm2ddl; using NUnit.Framework; -namespace NHibernate.Test.SchemaUpdate +namespace NHibernate.Test.Tools.hbm2ddl.SchemaUpdate { [TestFixture] public class MigrationFixture @@ -13,8 +13,8 @@ [Test] public void SimpleColumnAddition() { - String resource2 = "NHibernate.Test.SchemaUpdate.2_Version.hbm.xml"; - String resource1 = "NHibernate.Test.SchemaUpdate.1_Version.hbm.xml"; + String resource2 = "NHibernate.Test.Tools.hbm2ddl.SchemaUpdate.2_Version.hbm.xml"; + String resource1 = "NHibernate.Test.Tools.hbm2ddl.SchemaUpdate.1_Version.hbm.xml"; Configuration v1cfg = TestConfigurationHelper.GetDefaultConfiguration(); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource1)) Modified: trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/Version.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SchemaUpdate/Version.cs 2008-11-14 15:53:37 UTC (rev 3910) +++ trunk/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/Version.cs 2008-11-17 13:59:23 UTC (rev 3914) @@ -1,4 +1,4 @@ -namespace NHibernate.Test.SchemaUpdate +namespace NHibernate.Test.Tools.hbm2ddl.SchemaUpdate { public class Version { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-11-17 21:54:08
|
Revision: 3917 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3917&view=rev Author: fabiomaulo Date: 2008-11-17 21:54:06 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Test for NH-1556 (fixed in some moment on trunk but the test is useful for others matters involved with NsSQL2005 dialect) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Claim.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Patient.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Product.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/ProductIdentifier.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Claim.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Claim.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Claim.cs 2008-11-17 21:54:06 UTC (rev 3917) @@ -0,0 +1,43 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1556 +{ + public class Claim + { + private Guid id; + private DateTime lastFilled; + private ProductIdentifier productIdentifier; + private Patient patient; + + protected Claim() + { + } + + public Claim(Patient patient, DateTime lastFilled, ProductIdentifier productIdentifier) + { + this.patient = patient; + this.lastFilled = lastFilled; + this.productIdentifier = productIdentifier; + } + + public virtual Guid Id + { + get { return id; } + } + + public virtual DateTime LastFilled + { + get { return lastFilled; } + } + + public virtual ProductIdentifier ProductIdentifier + { + get { return productIdentifier; } + } + + public virtual Patient Patient + { + get { return patient; } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Fixture.cs 2008-11-17 21:54:06 UTC (rev 3917) @@ -0,0 +1,86 @@ +using System; +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1556 +{ + [TestFixture] + public class Fixture : BugTestCase + { + private Patient patient; + + protected override void OnSetUp() + { + var prozac = new Product("Prozac"); + var prozacId1 = new ProductIdentifier("12345-2345-11", prozac); + var prozacId2 = new ProductIdentifier("12345-2345-12", prozac); + + var warfarin = new Product("Warfarin"); + var warfarinId3 = new ProductIdentifier("12345-4321-13", warfarin); + + patient = new Patient("John", "Doe"); + + var prozacClaim1 = new Claim(patient, new DateTime(2000, 1, 1), prozacId1); + var prozacClaim2 = new Claim(patient, new DateTime(2001, 1, 1), prozacId2); + var warfarinClaim1 = new Claim(patient, new DateTime(2000, 4, 1), warfarinId3); + + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Save(prozac); + session.Save(warfarin); + session.Save(patient); + session.Save(prozacClaim1); + session.Save(prozacClaim2); + session.Save(warfarinClaim1); + + tx.Commit(); + } + } + } + + protected override void OnTearDown() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Claim"); + session.Delete("from Patient"); + session.Delete("from ProductIdentifier"); + session.Delete("from Product"); + tx.Commit(); + } + } + } + + [Test] + public void CanOrderByAggregate() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + var loadedPatient = session.Get<Patient>(patient.Id); + + IList list = + session.CreateQuery( + @"select p.Id, p.ProductName, max(c.LastFilled), count(c.Id) +from Claim as c +from c.ProductIdentifier.Product as p +where c.Patient = :patient +group by p.Id, p.ProductName +order by max(c.LastFilled) asc, p.ProductName") + .SetParameter("patient", loadedPatient).SetFirstResult(0).SetMaxResults(2).List(); + + Assert.AreEqual(2, list.Count); + Assert.AreEqual(new DateTime(2000, 4, 1), ((object[]) list[0])[2]); + Assert.AreEqual(new DateTime(2001, 1, 1), ((object[]) list[1])[2]); + Assert.AreEqual(1, ((object[]) list[0])[3]); + Assert.AreEqual(2, ((object[]) list[1])[3]); + } + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Mappings.hbm.xml 2008-11-17 21:54:06 UTC (rev 3917) @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + default-access="nosetter.camelcase" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1556"> + + <class name="Claim" table="Claims"> + <id name="Id" column="Id" type="System.Guid"> + <generator class="guid.comb" /> + </id> + <property type="System.DateTime" not-null="true" name="LastFilled" column="[LastFilled]" /> + <many-to-one name="ProductIdentifier" cascade="none" column="ProductIdentifierId" not-null="true" class="ProductIdentifier" /> + <many-to-one name="Patient" cascade="none" column="PatientId" not-null="true" class="Patient" /> + </class> + + <class name="Patient" table="Patients"> + <id name="Id" column="Id" type="System.Int64"> + <generator class="native" /> + </id> + <property type="System.String" not-null="true" name="FirstName" column="[FirstName]" /> + <property type="System.String" not-null="true" name="LastName" column="[LastName]" /> + </class> + + <class name="ProductIdentifier" table="ProductIdentifier"> + <id name="Id" column="Id" type="System.Int64"> + <generator class="native" /> + </id> + <property type="System.String" not-null="true" name="IdentifierField" column="[IdentifierField]" /> + <many-to-one name="Product" cascade="none" column="ProductId" class="Product" /> + </class> + + <class name="Product" table="Product"> + <id name="Id" column="Id" type="System.Int64"> + <generator class="native" /> + </id> + <property type="System.String" not-null="true" name="ProductName" column="[ProductName]" unique="true" /> + <bag name="ProductIdentifiers" inverse="true" lazy="true" cascade="all"> + <key column="ProductId" /> + <one-to-many class="ProductIdentifier" /> + </bag> + </class> + +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Patient.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Patient.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Patient.cs 2008-11-17 21:54:06 UTC (rev 3917) @@ -0,0 +1,34 @@ +namespace NHibernate.Test.NHSpecificTest.NH1556 +{ + public class Patient + { + private long id; + private string firstName; + private string lastName; + + protected Patient() + { + } + + public Patient(string firstName, string lastName) + { + this.firstName = firstName; + this.lastName = lastName; + } + + public virtual long Id + { + get { return id; } + } + + public virtual string FirstName + { + get { return firstName; } + } + + public virtual string LastName + { + get { return lastName; } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Product.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Product.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/Product.cs 2008-11-17 21:54:06 UTC (rev 3917) @@ -0,0 +1,40 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1556 +{ + public class Product + { + protected Product() + { + productIdentifiers = new List<ProductIdentifier>(); + } + + public Product(string productName) : this() + { + this.productName = productName; + } + + private long id; + public virtual long Id + { + get { return id; } + } + + private string productName; + public virtual string ProductName + { + get { return productName; } + } + + private IList<ProductIdentifier> productIdentifiers; + public virtual IList<ProductIdentifier> ProductIdentifiers + { + get { return productIdentifiers; } + } + + public virtual void AddIdentifier(ProductIdentifier productIdentifier) + { + productIdentifiers.Add(productIdentifier); + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/ProductIdentifier.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/ProductIdentifier.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1556/ProductIdentifier.cs 2008-11-17 21:54:06 UTC (rev 3917) @@ -0,0 +1,34 @@ +namespace NHibernate.Test.NHSpecificTest.NH1556 +{ + public class ProductIdentifier + { + protected ProductIdentifier() + { + } + + public ProductIdentifier(string identifierField, Product product) + { + this.identifierField = identifierField; + this.product = product; + this.product.AddIdentifier(this); + } + + private long id; + public virtual long Id + { + get { return id; } + } + + private string identifierField; + public virtual string IdentifierField + { + get { return identifierField; } + } + + private Product product; + public virtual Product Product + { + get { return product; } + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-17 21:34:20 UTC (rev 3916) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-17 21:54:06 UTC (rev 3917) @@ -519,6 +519,11 @@ <Compile Include="NHSpecificTest\NH1508\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1508\Person.cs" /> <Compile Include="NHSpecificTest\NH1515\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1556\Claim.cs" /> + <Compile Include="NHSpecificTest\NH1556\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1556\Patient.cs" /> + <Compile Include="NHSpecificTest\NH1556\Product.cs" /> + <Compile Include="NHSpecificTest\NH1556\ProductIdentifier.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1537,6 +1542,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1556\Mappings.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaValidator\2_Version.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaValidator\1_Version.hbm.xml" /> <EmbeddedResource Include="TypesTest\GenericEnumStringClass.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2008-11-25 13:30:21
|
Revision: 3924 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3924&view=rev Author: fabiomaulo Date: 2008-11-25 13:30:17 +0000 (Tue, 25 Nov 2008) Log Message: ----------- Test for NH-1587 (only test because there are some existing failing tests to fix) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/A.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/A.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/A.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/A.cs 2008-11-25 13:30:17 UTC (rev 3924) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.NHSpecificTest.NH1587 +{ + public class A + { + public virtual string Description { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Fixture.cs 2008-11-25 13:30:17 UTC (rev 3924) @@ -0,0 +1,37 @@ +using log4net.Config; +using log4net.Core; +using NHibernate.Cfg; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1587 +{ + [TestFixture] + public class Fixture + { + [Test, Ignore("Not fixed yet")] + public void Bug() + { + XmlConfigurator.Configure(); + var cfg = new Configuration(); + if (TestConfigurationHelper.hibernateConfigFile != null) + cfg.Configure(TestConfigurationHelper.hibernateConfigFile); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH1587.Mappings.hbm.xml", GetType().Assembly); + cfg.Configure(); + + bool useOptimizer= false; + using (var ls = new LogSpy("NHibernate.Tuple.Entity.PocoEntityTuplizer")) + { + cfg.BuildSessionFactory(); + foreach (LoggingEvent loggingEvent in ls.Appender.GetEvents()) + { + if (((string)(loggingEvent.MessageObject)).StartsWith("Create Instantiator using optimizer")) + { + useOptimizer = true; + break; + } + } + } + Assert.That(useOptimizer); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Mappings.hbm.xml 2008-11-25 13:30:17 UTC (rev 3924) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1587"> + <class name="A"> + <id type="int"> + <generator class="native"/> + </id> + <property name="Description"/> + </class> +</hibernate-mapping> Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1587/Mappings.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-24 19:56:59 UTC (rev 3923) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-25 13:30:17 UTC (rev 3924) @@ -524,6 +524,8 @@ <Compile Include="NHSpecificTest\NH1556\Patient.cs" /> <Compile Include="NHSpecificTest\NH1556\Product.cs" /> <Compile Include="NHSpecificTest\NH1556\ProductIdentifier.cs" /> + <Compile Include="NHSpecificTest\NH1587\A.cs" /> + <Compile Include="NHSpecificTest\NH1587\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1542,6 +1544,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1587\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1556\Mappings.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaValidator\2_Version.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaValidator\1_Version.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2008-11-26 04:19:52
|
Revision: 3930 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3930&view=rev Author: ayenderahien Date: 2008-11-26 04:19:41 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Adding passing tests from Adrian Alexander for NH-298 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298 ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs 2008-11-26 04:19:41 UTC (rev 3930) @@ -0,0 +1,42 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH298 { + + public class Category { + private int id; + private string name; + private IList<Category> subCategories; + private Category parentCategory; + + public int Id { + get { return id; } + set { id = value; } + } + + public string Name { + get { return name; } + set { name = value; } + } + + public IList<Category> SubCategories { + get { return subCategories; } + private set { subCategories = value; } + } + + public Category ParentCategory { + get { return parentCategory; } + set { parentCategory = value; } + } + + public Category( int id, string name, Category parent ) { + this.id = id; + this.name = name; + subCategories = new List<Category>(); + parentCategory = parent; + } + + protected Category() : this( 0, "Unknown Category", null ) { } + + public override string ToString() { return name; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs 2008-11-26 04:19:41 UTC (rev 3930) @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using NHibernate.Dialect; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH298 { + + [TestFixture] + public class IndexedBidirectionalOneToManyTest : BugTestCase { + + protected override void OnSetUp() { + base.OnSetUp(); + using ( ISession session = this.OpenSession() ) { + Category root = new Category( 1, "Root", null ); + root.SubCategories.Add( new Category( 2, "First", root ) ); + root.SubCategories.Add( new Category( 3, "Second", root ) ); + root.SubCategories.Add( new Category( 4, "Third", root ) ); + + session.Save( root ); + session.Flush(); + } + } + + protected override void OnTearDown() { + base.OnTearDown(); + using ( ISession session = this.OpenSession() ) { + session.Delete( "from System.Object" ); + //session.CreateSQLQuery( "delete from Category" ).List(); + session.Flush(); + } + } + + [Test] + public void SubItemMovesCorrectly() { + Category root1 = null, itemToMove = null; + + using ( ISession session = this.OpenSession() ) { + root1 = session.Get<Category>( 1 ); + itemToMove = root1.SubCategories[1]; //get the middle item + root1.SubCategories.Remove( itemToMove ); //remove the middle item + root1.SubCategories.Add( itemToMove ); //re-add it to the end + + session.Update( root1 ); + session.Flush(); + } + + using ( ISession session = this.OpenSession() ) { + Category root2 = session.Get<Category>( 1 ); + Assert.AreEqual( root1.SubCategories.Count, root2.SubCategories.Count ); + Assert.AreEqual( root1.SubCategories[1].Id, root2.SubCategories[1].Id ); + Assert.AreEqual( root1.SubCategories[2].Id, root2.SubCategories[2].Id ); + Assert.AreEqual( itemToMove.Id, root1.SubCategories[2].Id ); + } + } + + [Test] + public void RemoveAtWorksCorrectly() { + Category root1 = null; + + using ( ISession session = this.OpenSession() ) { + root1 = session.Get<Category>( 1 ); + root1.SubCategories.RemoveAt( 1 ); + + session.Update( root1 ); + session.Flush(); + } + + using ( ISession session = this.OpenSession() ) { + Category root2 = session.Get<Category>( 1 ); + Assert.AreEqual( root1.SubCategories.Count, root2.SubCategories.Count ); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml 2008-11-26 04:19:41 UTC (rev 3930) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" ?> + +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH298"> + + <class name="Category" lazy="false"> + <id name="Id"><generator class="assigned"/></id> + <property name="Name"/> + <list name="SubCategories" cascade="all"> + <key column="ParentCategoryID"/> + <index column="PositionInList"/> + <one-to-many class="Category"/> + </list> + <many-to-one name="ParentCategory" column="ParentCategoryID" insert="false" update="false"/> + </class> + +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-25 22:10:57 UTC (rev 3929) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-26 04:19:41 UTC (rev 3930) @@ -535,6 +535,8 @@ <Compile Include="NHSpecificTest\NH1054\NH1054Fixture.cs" /> <Compile Include="NHSpecificTest\NH1080\Domain.cs" /> <Compile Include="NHSpecificTest\NH1080\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH298\Category.cs" /> + <Compile Include="NHSpecificTest\NH298\IndexedBidirectionalOneToManyTest.cs" /> <Compile Include="NHSpecificTest\NH364\Invoice.cs" /> <Compile Include="NHSpecificTest\NH662\Domain.cs" /> <Compile Include="NHSpecificTest\NH662\Fixture.cs" /> @@ -1544,6 +1546,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH298\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1587\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1556\Mappings.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaValidator\2_Version.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |