@Test public void create_from_days_hours_minutes() { WorkDuration workDuration = WorkDuration.create(1, 1, 1, HOURS_IN_DAY); assertThat(workDuration.days()).isEqualTo(1); assertThat(workDuration.hours()).isEqualTo(1); assertThat(workDuration.minutes()).isEqualTo(1); assertThat(workDuration.toMinutes()) .isEqualTo(ONE_DAY_IN_MINUTES + ONE_HOUR_IN_MINUTES + ONE_MINUTE); assertThat(workDuration.hoursInDay()).isEqualTo(HOURS_IN_DAY); }
@Test public void subtract() { // 1d 1h - 5h = 4h WorkDuration result = WorkDuration.create(1, 1, 0, HOURS_IN_DAY) .subtract( WorkDuration.createFromValueAndUnit(5, WorkDuration.UNIT.HOURS, HOURS_IN_DAY)); assertThat(result.days()).isEqualTo(0); assertThat(result.hours()).isEqualTo(4); assertThat(result.minutes()).isEqualTo(0); assertThat(result.hoursInDay()).isEqualTo(HOURS_IN_DAY); // 1h 10m - 30m = 40m result = WorkDuration.create(0, 1, 10, HOURS_IN_DAY) .subtract( WorkDuration.createFromValueAndUnit(30, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY)); assertThat(result.days()).isEqualTo(0); assertThat(result.hours()).isEqualTo(0); assertThat(result.minutes()).isEqualTo(40); assertThat(result.hoursInDay()).isEqualTo(HOURS_IN_DAY); // 30m - 20m = 10m assertThat( WorkDuration.createFromValueAndUnit(30, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .subtract( WorkDuration.createFromValueAndUnit( 20, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY)) .minutes()) .isEqualTo(10); assertThat( WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .subtract(null) .minutes()) .isEqualTo(10); }