1   package com.atlassian.user.search.page;
2   
3   import junit.framework.TestCase;
4   
5   import java.util.ArrayList;
6   import java.util.List;
7   
8   import org.apache.log4j.Logger;
9   import com.atlassian.user.impl.ldap.search.page.AbstractLDAPPager;
10  
11  public class TestAbstractLDAPPager extends TestCase
12  {
13      private static final Logger log = Logger.getLogger(TestAbstractLDAPPager.class);
14  
15      private void assertPagerWorks(AbstractLDAPPager pager, int size, boolean callHasNext)
16      {
17          String testDescription = "size == " + size + ", callHasNext == " + callHasNext;
18          for (int i = 0; i < size; ++i)
19          {
20              if (callHasNext)
21                  assertTrue(testDescription + ", i == " + i, pager.hasNext());
22              assertEquals(testDescription + ", i == " + i, new MockSearchResult(i + ""), pager.next());
23          }
24          assertFalse(testDescription, pager.hasNext());
25      }
26  
27      private AbstractLDAPPager buildPager(int size)
28      {
29          final List<String> data = new ArrayList<String>(size);
30          for (int i = 0; i < size; ++i)
31          {
32              data.add(String.valueOf(i));
33          }
34          return new MockLDAPPager(data);
35      }
36  
37      public void testVariousSizesOfPager()
38      {
39          for (int i = 150; i < 1000; i+=97) /* test some weird numbers, not just 100, 110, etc. */
40          {
41              log.info("Testing i = " + i);
42              assertPagerWorks(buildPager(i), i, true);
43              assertPagerWorks(buildPager(i), i, false);
44          }
45      }
46  }