### Question:
Duration extends Number implements Comparable<Duration> { public Components getComponents() { if (this.components == null) { BigDecimal bigSeconds = new BigDecimal(this.durationInNanos).divide(new BigDecimal(1000000000)); int minutes = bigSeconds.intValue() / 60; double dMinutes = minutes; double seconds = bigSeconds.doubleValue() - dMinutes * 60; int hours = minutes / 60; minutes = minutes - (hours * 60); this.components = new Components(hours, minutes, seconds); } return this.components; } Duration( long nanos );  Duration( long duration,
                     TimeUnit unit ); @Override double doubleValue(); @Override float floatValue(); @Override int intValue(); @Override long longValue(); BigDecimal toBigDecimal(); Duration add( long duration,
                         TimeUnit unit ); Duration subtract( long duration,
                              TimeUnit unit ); Duration add( Duration duration ); Duration subtract( Duration duration ); Duration multiply( long scale ); Duration divide( long denominator ); double divide( Duration duration ); int compareTo( Duration that ); long getDuratinInNanoseconds(); BigDecimal getDurationInMicroseconds(); BigDecimal getDurationInMilliseconds(); BigDecimal getDurationInSeconds(); Components getComponents(); long getDuration( TimeUnit unit ); @Override String toString();  }### Answer:
@Test public void shouldBeEmptyWhenInitialized() { assertEquals(0, this.duration.getComponents().getHours()); assertEquals(0, this.duration.getComponents().getMinutes()); assertEquals(0.0d, this.duration.getComponents().getSeconds(), 0.00001d); }
@Test public void shouldHaveComponentsWhenInitialized() { assertNotNull(this.duration.getComponents()); }