Common utilities for java programming
<dependency>
<groupId>io.github.imsejin</groupId>
<artifactId>common-utils</artifactId>
<version>x.y.z</version>
</dependency>
implementation 'io.github.imsejin:common-utils:x.y.z'
List<LocalDate> dates = Arrays.asList(
LocalDate.of(1999, 12, 31), LocalDate.of(2000, 1, 1), LocalDate.of(2001, 1, 2));
Asserts.that(dates)
// You can describe error message on assertion failure.
.describedAs("dates should not be null or empty")
// You can set what exception will be thrown on assertion failure.
.thrownBy(IllegalStateException::new)
// First of all, you have to make sure that variable to be asserted is not null,
// before call the other assertion methods. Otherwise, it might throw NullPointerException.
.isNotNull()
.isNotEmpty()
.hasSize(3)
.is(them -> them.get(2).getYear() == 2001)
.describedAs("dates should not have duplicated elements: '{0}'", dates)
.doesNotHaveDuplicates()
.describedAs("dates should contain '2000-01-01' or '2001-01-01': '{0}'", dates)
.containsAny(LocalDate.of(2000, 1, 1), LocalDate.of(2001, 1, 1))
.describedAs("dates should not have date in leap year: '{0}'", dates)
.anyMatch(LocalDate::isLeapYear)
// Target of assertion is changed from List to Integer.
.asSize()
.isPositive()
// Assertion will fail and throw IllegalStateException on this step.
.isGreaterThan(3);
// OS[LINUX, MAC, AIX, SOLARIS, WINDOWS, OTHER]
OS os = OS.getCurrentOS();
assert os.isCurrentOS();
// -----------------------------------------------------------------------------
// DateType[DATE, TIME, DATE_TIME, ALL, F_DATE, F_TIME, ...]
LocalDateTime dateTime = LocalDateTime.of(LocalDate.of(2000, 1, 1), LocalTime.of(12, 34, 56))
String formatted = dateTime.format(DateType.DATE_TIME.getFormatter());
assert formatted.equals("2000-01-01 12:34:56");
Stopwatch stopwatch = new Stopwatch(TimeUnit.MILLISECONDS);
stopwatch.start("First task");
TimeUnit.SECONDS.sleep(2);
stopwatch.stop();
stopwatch.start("Second task");
TimeUnit.SECONDS.sleep(1);
stopwatch.stop();
stopwatch.getTotalTime(); // About 3000.0 ms
stopwatch.setTimeUnit(TimeUnit.SECONDS);
stopwatch.getTotalTime(); // About 3.0 sec
int[][] numbers = {{0, 1}, null, {2}, {}, {3, 4, 5}};
Integer[][] integers = (Integer[][]) ArrayUtils.wrap(numbers);
int[][] ints = (int[][]) ArrayUtils.unwrap(integers);
assert Objects.deepEquals(ints, numbers);
// -----------------------------------------------------------------------------
List<Character> greekAlphabets = Arrays.asList('Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ');
// [['Α', 'Β', 'Γ'], ['Δ', 'Ε', 'Ζ']]
List<List<Character>> bySize = CollectionUtils.partitionBySize(greekAlphabets, 3);
// [['Α', 'Β'], ['Γ', 'Δ'], ['Ε', 'Ζ']]
List<List<Character>> byCount = CollectionUtils.partitionByCount(greekAlphabets, 3);