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