### Question:
TimeGranularity implements Granularity<LocalTime> { @Override public Granularity<LocalTime> merge(Granularity<LocalTime> otherGranularity) { return ((TimeGranularity) otherGranularity).granularity.compareTo(granularity) > 0 ? otherGranularity : this; } TimeGranularity(ChronoUnit granularity); static TimeGranularity create(String granularity); @Override Granularity<LocalTime> getFinestGranularity(); @Override boolean isCorrectScale(LocalTime value); @Override Granularity<LocalTime> merge(Granularity<LocalTime> otherGranularity); @Override LocalTime getNext(LocalTime value, int amount); @Override LocalTime getNext(LocalTime value); @Override LocalTime getPrevious(LocalTime value, int amount); @Override LocalTime getPrevious(LocalTime value); @Override LocalTime trimToGranularity(LocalTime value); @Override LocalTime getRandom(LocalTime min, LocalTime max, RandomNumberGenerator randomNumberGenerator); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString(); static final TimeGranularity DEFAULT; }### Answer:
@Test void merge_returnsMoreRestrictiveGranularity() { TimeGranularity granularity1 = new TimeGranularity(ChronoUnit.MINUTES); TimeGranularity granularity2 = new TimeGranularity(ChronoUnit.SECONDS); Assert.assertEquals(granularity1, granularity1.merge(granularity2)); }