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