using System.Linq; using CharlesRiverSync.WebSite.DomainModel.BI; using CharlesRiverSync.WebSite.FluentNHibernateMappings.CI; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; using NHibernate; using NUnit.Framework; namespace CharlesRiverSync.IntegrationTest.WebSite { class NHibernateTest { private static readonly ISessionFactory _sessionFactory = Fluently.Configure().Database(OracleDataClientConfiguration.Oracle10 .ConnectionString(c => c.FromAppSetting("SysDba.ConnectionString"))) .Mappings(m => m.FluentMappings.Add()) .BuildSessionFactory(); [Test] public void TestSkipAndTake_CommonMsLinqBehaviour_ShouldYield20() { var ints = Enumerable.Range(0, 40); Assert.That(ints.Skip(20).Take(20).Count(), Is.EqualTo(20)); } [Test] public void TestSkipAndTake_ShouldYield20_ButWillFailDueToNHBBug() { using (var session = _sessionFactory.OpenSession()) { var jobs = session.QueryOver() .Skip(20) .Take(20) .List(); Assert.That(jobs.Count(), Is.EqualTo(20)); } } [Test] public void TestSkipAndTake_ShouldYield20_WorkAround() { using (var session = _sessionFactory.OpenSession()) { var jobs = session.QueryOver() .Skip(20) .Take(40) .List(); Assert.That(jobs.Count(), Is.EqualTo(20)); } } } }