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. |