Advertisement
UniQuet0p1

Untitled

May 14th, 2022
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. package inheritance.pager;
  2.  
  3. import org.junit.Test;
  4.  
  5. import java.lang.reflect.Field;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8. import java.util.List;
  9. import java.util.Random;
  10. import java.util.stream.Collectors;
  11.  
  12. import static org.hamcrest.CoreMatchers.is;
  13. import static org.hamcrest.MatcherAssert.assertThat;
  14. import static org.hamcrest.Matchers.*;
  15.  
  16. public class FilteringPagerTests {
  17.  
  18. @Test
  19. public void simplePagerPresentsDataInPages() {
  20. List<Integer> data = Arrays.asList(
  21. 1, null, null, 2, null, 3, 4);
  22.  
  23. SimplePager simplePager = new SimplePager(data, 3);
  24.  
  25. assertThat(simplePager.getPage(0), contains(1, null, null));
  26. assertThat(simplePager.getPage(1), contains(2, null, 3));
  27. assertThat(simplePager.getPage(2), contains(4));
  28.  
  29. assertThat(simplePager.hasPage(-1), is(false));
  30. assertThat(simplePager.hasPage(3), is(false));
  31. }
  32.  
  33. @Test
  34. public void filteringPagerPresentsFilteredDataInPages() {
  35. List<Integer> data = Arrays.asList(
  36. 1, null, null, 2,
  37. null, 3, 4);
  38.  
  39. SimplePager simplePager = new SimplePager(data, 4);
  40. FilteringPager pager = new FilteringPager(simplePager, 2);
  41.  
  42. assertThat(pager.getNextPage(), contains(1, 2));
  43. assertThat(pager.getCurrentPage(), contains(1, 2));
  44.  
  45. assertThat(pager.getNextPage(), contains(3, 4));
  46. assertThat(pager.getCurrentPage(), contains(3, 4));
  47.  
  48. assertThat(pager.getPreviousPage(), contains(1, 2));
  49. assertThat(pager.getCurrentPage(), contains(1, 2));
  50. }
  51.  
  52. @Test(expected = IllegalStateException.class)
  53. public void throwsWhenNoNextPage() {
  54. SimplePager simplePager = new SimplePager(List.of(), 4);
  55. FilteringPager pager = new FilteringPager(simplePager, 2);
  56.  
  57. pager.getNextPage();
  58. }
  59.  
  60. @Test(expected = IllegalStateException.class)
  61. public void throwsWhenNoCurrentPage() {
  62. SimplePager simplePager = new SimplePager(List.of(), 4);
  63. FilteringPager pager = new FilteringPager(simplePager, 2);
  64.  
  65. pager.getCurrentPage();
  66. }
  67.  
  68. @Test(expected = IllegalStateException.class)
  69. public void throwsWhenNoPreviousPage() {
  70. SimplePager simplePager = new SimplePager(List.of(), 4);
  71. FilteringPager pager = new FilteringPager(simplePager, 2);
  72.  
  73. pager.getPreviousPage();
  74. }
  75.  
  76. @Test
  77. public void pagerHasTheSameBehaviourAsFilteringPagerWithMemory() {
  78. SimplePager simplePager = new SimplePager(getSampleInput(), 4);
  79. FilteringPagerWithMemory memoryPager = new FilteringPagerWithMemory(simplePager, 3);
  80. FilteringPager pager = new FilteringPager(simplePager, 3);
  81.  
  82. while (memoryPager.hasNext()) {
  83. assertThat(pager.getNextPage(), is(memoryPager.getNextPage()));
  84. assertThat(pager.getCurrentPage(), is(memoryPager.getCurrentPage()));
  85. }
  86.  
  87. while (memoryPager.hasPrevious()) {
  88. assertThat(pager.getPreviousPage(), is(memoryPager.getPreviousPage()));
  89. assertThat(pager.getCurrentPage(), is(memoryPager.getCurrentPage()));
  90. }
  91. }
  92.  
  93. @Test
  94. public void shouldNotCallSimplePagerTooOften() {
  95. SimplePagerWithCounter simplePager = new SimplePagerWithCounter(getSampleInput(), 4);
  96. FilteringPager pager = new FilteringPager(simplePager, 3);
  97.  
  98. for (int i = 0; i < 6; i++) {
  99. pager.getNextPage();
  100. pager.getCurrentPage();
  101. }
  102.  
  103. for (int i = 0; i < 5; i++) {
  104. pager.getPreviousPage();
  105. }
  106.  
  107. assertThat(simplePager.getPageRequestCount(), is(lessThan(100)));
  108. }
  109.  
  110. @Test
  111. public void filteringPagerShouldHaveOnlyAllowedFields() {
  112. List<Field> fieldsNotAllowed = Arrays.stream(FilteringPager.class.getDeclaredFields())
  113. .filter(field -> !field.getType().equals(SimplePager.class))
  114. .filter(field -> !field.getType().equals(int.class))
  115. .filter(field -> !field.getType().equals(Integer.class))
  116. .collect(Collectors.toList());
  117.  
  118. assertThat(fieldsNotAllowed, is(empty()));
  119. }
  120.  
  121. private List<Integer> getSampleInput() {
  122. List<Integer> integers = new ArrayList<>();
  123. Random random = new Random(0);
  124. for (int i = 0; i < 100; i++) {
  125. int randNum = random.nextInt(30);
  126. integers.add(randNum < 10 ? randNum : null);
  127. }
  128.  
  129. return integers;
  130. }
  131.  
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement