diff --git a/src/main/java/ua/net/uid/utils/helpers/CommonHelper.java b/src/main/java/ua/net/uid/utils/helpers/CommonHelper.java index 9c7af9f..8a5f816 100644 --- a/src/main/java/ua/net/uid/utils/helpers/CommonHelper.java +++ b/src/main/java/ua/net/uid/utils/helpers/CommonHelper.java @@ -109,7 +109,7 @@ T result = null; if (!isEmpty(items)) { for (T item : items) - if (comparator.compare(result, item) < 0) + if (comparator.compare(result, item) > 0) result = item; } return result; @@ -120,7 +120,7 @@ T result = null; if (!isEmpty(items)) { for (T item : items) - if (comparator.compare(result, item) > 0) + if (comparator.compare(result, item) < 0) result = item; } return result; diff --git a/src/test/java/ua/net/uid/utils/helpers/CommonHelperTest.java b/src/test/java/ua/net/uid/utils/helpers/CommonHelperTest.java index 44db5fd..f162761 100644 --- a/src/test/java/ua/net/uid/utils/helpers/CommonHelperTest.java +++ b/src/test/java/ua/net/uid/utils/helpers/CommonHelperTest.java @@ -4,11 +4,18 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; class CommonHelperTest { @@ -73,12 +80,91 @@ assertFalse(CommonHelper.isEmpty(src)); } + @Test + void testIsEmptyObject() { + assertTrue(CommonHelper.isEmpty((Object) null)); + assertTrue(CommonHelper.isEmpty((Object) "")); + assertFalse(CommonHelper.isEmpty((Object) "0")); + assertTrue(CommonHelper.isEmpty((Object) new byte[] {})); + assertFalse(CommonHelper.isEmpty((Object) new int[] {1,2,3})); + assertTrue(CommonHelper.isEmpty((Object) Arrays.asList())); + assertFalse(CommonHelper.isEmpty((Object) Arrays.asList(1,2,3))); + assertTrue(CommonHelper.isEmpty((Object) Collections.emptyMap())); + Map map = new HashMap<>(); + assertTrue(CommonHelper.isEmpty((Object) map)); + map.put("q", 1); + assertFalse(CommonHelper.isEmpty((Object) map)); + } + + @Test + void testCoalesce() { + assertNull(CommonHelper.coalesce()); + assertNull(CommonHelper.coalesce(null, null)); + assertEquals(1, CommonHelper.coalesce(1, null, null)); + assertEquals(2, CommonHelper.coalesce(null, 2, null)); + assertEquals(3, CommonHelper.coalesce(null, null, 3)); + assertEquals(1, CommonHelper.coalesce(1, null, 3)); + } + + @Test + void testCompareNullable() { + assertTrue(CommonHelper.compare(null, null, true) == 0); + assertTrue(CommonHelper.compare(null, null, false) == 0); + assertTrue(CommonHelper.compare(null, 1, false) < 0); + assertTrue(CommonHelper.compare(null, 1, true) > 0); + assertTrue(CommonHelper.compare(1, null, false) > 0); + assertTrue(CommonHelper.compare(1, null, true) < 0); + assertTrue(CommonHelper.compare(1, 1, false) == 0); + assertTrue(CommonHelper.compare(1, 1, true) == 0); + assertTrue(CommonHelper.compare(-1, 1, false) < 0); + assertTrue(CommonHelper.compare(-1, 1, true) < 0); + assertTrue(CommonHelper.compare(1, -1, false) > 0); + assertTrue(CommonHelper.compare(1, -1, true) > 0); + } + + @Test + void testMinComparable() { + assertNull(CommonHelper.min()); + assertNull(CommonHelper.min((Integer) null)); + assertEquals(0, CommonHelper.min(null, 3, 1, 0, 2, 4, null)); + } + + @Test + void testMaxComparable() { + assertNull(CommonHelper.max()); + assertNull(CommonHelper.max((Integer) null)); + assertEquals(4, CommonHelper.max(null, 3, 1, 0, 2, 4, null)); + } + + @Test + void testMinByComparator() { + Comparator comparator = (a, b) -> CommonHelper.compare(a, b, true); + assertNull(CommonHelper.minBy(comparator)); + assertNull(CommonHelper.minBy(comparator, (Integer) null)); + assertEquals(0, CommonHelper.minBy(comparator, null, 3, 1, 0, 2, 4, null)); + } + + @Test + void testMaxByComparator() { + Comparator comparator = (a, b) -> CommonHelper.compare(a, b, false); + assertNull(CommonHelper.maxBy(comparator)); + assertNull(CommonHelper.maxBy(comparator, (Integer) null)); + assertEquals(4, CommonHelper.maxBy(comparator, null, 3, 1, 0, 2, 4, null)); + } + + @Test + void testSetOf() { + Set expected = new HashSet<>(Arrays.asList(3,1,5,7,3)); + Set actual = CommonHelper.setOf(3,1,1,5,7,3,5); + assertEquals(expected, actual); + } + static class AutoCloseableImpl implements AutoCloseable { boolean called = false; @Override public void close() throws Exception { - called = true; + called = true; Map.of(); throw new IOException("test exception"); } }