### Question:
TimeGranularity implements Granularity<LocalTime> { @Override public LocalTime trimToGranularity(LocalTime value) { return value.truncatedTo(granularity); } 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 trimToGranularity_truncatesTime() { TimeGranularity granularity = new TimeGranularity(ChronoUnit.MINUTES); LocalTime time = LocalTime.ofSecondOfDay(110); LocalTime expected = LocalTime.ofSecondOfDay(60); Assert.assertEquals(expected, granularity.trimToGranularity(time)); }