From 01d3ce60f92fd5dcb21c9270d26de6fcc61564ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20L=C3=A9vesque?= Date: Thu, 6 Mar 2025 08:58:00 -0500 Subject: [PATCH] feat: Add equals and hashCode to Pagination class --- src/main/java/ca/nexapp/core/Pagination.java | 14 ++++++++ .../java/ca/nexapp/core/PaginationTest.java | 32 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/src/main/java/ca/nexapp/core/Pagination.java b/src/main/java/ca/nexapp/core/Pagination.java index 5827936..e0ecd90 100644 --- a/src/main/java/ca/nexapp/core/Pagination.java +++ b/src/main/java/ca/nexapp/core/Pagination.java @@ -1,5 +1,7 @@ package ca.nexapp.core; +import java.util.Objects; + public class Pagination { private final int page; @@ -37,4 +39,16 @@ public static Pagination offsetted(int offset, int itemPerPage) { int page = offset / itemPerPage + 1; return new Pagination(page, itemPerPage, offset); } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + Pagination that = (Pagination) o; + return page == that.page && itemPerPage == that.itemPerPage && offset == that.offset; + } + + @Override + public int hashCode() { + return Objects.hash(page, itemPerPage, offset); + } } diff --git a/src/test/java/ca/nexapp/core/PaginationTest.java b/src/test/java/ca/nexapp/core/PaginationTest.java index f938fc2..60db3e2 100644 --- a/src/test/java/ca/nexapp/core/PaginationTest.java +++ b/src/test/java/ca/nexapp/core/PaginationTest.java @@ -93,4 +93,36 @@ public void givenAnOffsettedPagination_CanRetrieveASubsetOfACollection() { assertThat(results).containsExactly(1, 2, 3).inOrder(); } + + @Test + public void givenTwoPaginationsWithDifferentPage_TheyAreNotEqual() { + Pagination a = Pagination.paged(1, 10); + Pagination b = Pagination.paged(2, 10); + + assertThat(a).isNotEqualTo(b); + } + + @Test + public void givenTwoPaginationsWithDifferentItemsPerPage_TheyAreNotEqual() { + Pagination a = Pagination.paged(1, 10); + Pagination b = Pagination.paged(1, 20); + + assertThat(a).isNotEqualTo(b); + } + + @Test + public void givenTwoPaginationsWithDifferentOffset_TheyAreNotEqual() { + Pagination a = Pagination.offsetted(0, 10); + Pagination b = Pagination.offsetted(5, 10); + + assertThat(a).isNotEqualTo(b); + } + + @Test + public void givenTwoPaginationsWithSamePageItemsPerPageAndOffset_TheyAreEqual() { + Pagination a = Pagination.offsetted(0, 10); + Pagination b = Pagination.offsetted(0, 10); + + assertThat(a).isEqualTo(b); + } }