I'm having a difficult time understanding page, specifically
SetFirstResult() and SetMaxResults()

from what I read on different posts SetFirstResult is the zero-based
index of the record you want to start with. SetMaxResults is the
number of records you want to return.

if this is correct then why do tests:
Should_get_foos_21_through_30
Should_get_foos_31_through_40
fail?

//Foo has 1 property Id which is readonly. The id is assigned via
ctor.

namespace Paging.Spike.Core.Test
{
    [TestFixture]
    public class PagingWithNhibernateSpec
    {
        private ISessionFactory factory;
        private Configuration cfg;
        private ISession session;
        private const int PAGE_SIZE = 10;

        [TestFixtureSetUp]
        public void TestFixtureSetup()
        {
            cfg = new Configuration().Configure();
            factory = cfg.BuildSessionFactory();
        }

        [TestFixtureTearDown]
        public void TestFixtureTeardown()
        {
            factory.Dispose();
        }

        [SetUp]
        public void SetUp()
        {
            session = factory.OpenSession();
            new SchemaExport(cfg).Execute(false, true, false, true,
session.Connection, null);
            using(ITransaction transaction =
session.BeginTransaction())
            {
                for (int i = 1; i <= 100; i++)
                    session.Save(new Foo(i));
                transaction.Commit();
            }
        }

        [TearDown]
        public void TearDown()
        {
            session.Dispose();
        }

        [Test]
        public void Should_get_foos_01_through_10()
        {
            ValidateIdsStartingWithId(1,
GetResultsStartingAtIndex(0));
        }

        [Test]
        public void Should_get_foos_11_through_20()
        {
            ValidateIdsStartingWithId(11,
GetResultsStartingAtIndex(10));
        }

        [Test]
        public void Should_get_foos_21_through_30()
        {
            ValidateIdsStartingWithId(21,
GetResultsStartingAtIndex(20));
        }

        [Test]
        public void Should_get_foos_31_through_40()
        {
            ValidateIdsStartingWithId(31,
GetResultsStartingAtIndex(30));
        }

        private IList<Foo> GetResultsStartingAtIndex(int firstResult)
        {
            return session
                .CreateCriteria(typeof (Foo))
                .SetFirstResult(firstResult)
                .SetMaxResults(PAGE_SIZE)
                .List<Foo>();
        }

        private static void ValidateIdsStartingWithId(int id,
ICollection<Foo> foos)
        {
            foreach (Foo foo in foos)
                Console.WriteLine(foo);

            Assert.AreEqual(PAGE_SIZE, foos.Count);

            foreach (Foo foo in foos)
                Assert.AreEqual(id++, foo.Id);
        }
    }
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to