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