public void TestPaging() { GentleSqlFactory sf = Broker.GetSqlFactory(); if( sf.HasCapability( Capability.Paging ) ) { // first verify that data set is ok for test IList lists = MailingList.ListAll; Assert.IsNotNull( lists, "Test case invalid if row count is below 3." ); Assert.IsTrue( lists.Count >= 3, "Test case invalid if row count is below 3." ); // try with 1 row limit SqlBuilder sb = new SqlBuilder( StatementType.Select, typeof(MailingList) ); sb.SetRowLimit( 1 ); SqlResult sr = Broker.Execute( sb.GetStatement( true ) ); // verify result Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 1 was not limited." ); MailingList ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 0 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); // get next result sr = sr.Next(); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 2 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 1 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); // get next result sr = sr.Next(); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 3 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 2 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); // try the previous again sr = sr.Previous(); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 4 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 1 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); //Try Page Numbers.. sr = sr.Page( 2 ); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 5 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 1 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); sr = sr.Page( 1 ); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 6 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 0 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); sr = sr.Next(); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 7 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 1 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); sr = sr.Page( 3 ); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 8 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 2 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); //Test for Page 0 - should return first page sr = sr.Page( 0 ); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set 9 was not limited." ); ml = ObjectFactory.GetInstance( typeof(MailingList), sr ) as MailingList; Assert.AreEqual( (lists[ 0 ] as MailingList).Id, ml.Id, "Wrong row(s) retrieved." ); //Test for invalid page - should return no rows sr = sr.Page( 1 + (lists.Count / sr.Statement.RowLimit) ); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained == 0 ); } }
public void TestRowLimitRetrieval() { GentleSqlFactory sf = Broker.GetSqlFactory(); // first verify that data set is ok for test IList lists = MailingList.ListAll; Assert.IsNotNull( lists, "Test case invalid if row count is below 3." ); Assert.IsTrue( lists.Count >= 3, "Test case invalid if row count is below 3." ); // try with 1 row limit SqlBuilder sb = new SqlBuilder( StatementType.Select, typeof(MailingList) ); sb.SetRowLimit( 1 ); SqlResult sr = Broker.Execute( sb.GetStatement( true ) ); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 1, sr.RowsContained, "Result set was not limited." ); // try again this time with 2 rows sb = new SqlBuilder( StatementType.Select, typeof(MailingList) ); sb.SetRowLimit( 2 ); sr = Broker.Execute( sb.GetStatement( true ) ); Assert.IsTrue( sr.ErrorCode == 0 && sr.RowsContained > 0, "No rows were selected." ); Assert.AreEqual( 2, sr.RowsContained, "Result set was not limited." ); }