package com.lassekoskela.time; import static com.lassekoskela.time.DurationBuilder.newDuration; import static java.lang.Math.random; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; public class DurationTest { @Test public void knowsItsDurationInMilliseconds() { long millis = (long) (random() * 10000); assertEquals(millis, new Duration(millis).inMillis()); } @Test public void knowsItsDurationInSeconds() throws Exception { assertEquals(0.1, new Duration(100).inSeconds(), 0.01); assertEquals(1.0, new Duration(1000).inSeconds(), 0.01); assertEquals(1.5, new Duration(1500).inSeconds(), 0.01); } @Test public void printsNicely() throws Exception { Duration d = newDuration().hours(1).minutes(23).seconds(45).millis(678) .build(); assertEquals("1h 23m 45s 678ms", d.toString()); } @Test public void printsNicelySkippingZerosInTheMiddle() throws Exception { Duration d = newDuration().hours(1).millis(678).build(); assertEquals("1h 678ms", d.toString()); } @Test public void calculatesPercentageOfAnotherDuration() throws Exception { Duration d = new Duration(300); assertEquals(30.0, d.percentageOf(1000), 0.001); assertEquals(25.0, d.percentageOf(new Duration(1200)), 0.001); } @Test public void equals() throws Exception { Duration d = new Duration(500); assertTrue(d.equals(d)); assertTrue(d.equals(new Duration(500))); assertFalse(d.equals(new Duration(300))); assertFalse(d.equals(new Duration(500) { // subclass })); } }