@Test public void convert_to_seconds() { assertThat( WorkDuration.createFromValueAndUnit(2, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .toMinutes()) .isEqualTo(2L * ONE_MINUTE); assertThat( WorkDuration.createFromValueAndUnit(2, WorkDuration.UNIT.HOURS, HOURS_IN_DAY) .toMinutes()) .isEqualTo(2L * ONE_HOUR_IN_MINUTES); assertThat( WorkDuration.createFromValueAndUnit(2, WorkDuration.UNIT.DAYS, HOURS_IN_DAY) .toMinutes()) .isEqualTo(2L * ONE_DAY_IN_MINUTES); }
@Test public void add() { // 4h + 5h = 1d 1h WorkDuration result = WorkDuration.createFromValueAndUnit(4, WorkDuration.UNIT.HOURS, HOURS_IN_DAY) .add(WorkDuration.createFromValueAndUnit(5, WorkDuration.UNIT.HOURS, HOURS_IN_DAY)); assertThat(result.days()).isEqualTo(1); assertThat(result.hours()).isEqualTo(1); assertThat(result.minutes()).isEqualTo(0); assertThat(result.hoursInDay()).isEqualTo(HOURS_IN_DAY); // 40 m + 30m = 1h 10m result = WorkDuration.createFromValueAndUnit(40, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .add(WorkDuration.createFromValueAndUnit(30, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY)); assertThat(result.days()).isEqualTo(0); assertThat(result.hours()).isEqualTo(1); assertThat(result.minutes()).isEqualTo(10); assertThat(result.hoursInDay()).isEqualTo(HOURS_IN_DAY); // 10 m + 20m = 30m assertThat( WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .add( WorkDuration.createFromValueAndUnit( 20, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY)) .minutes()) .isEqualTo(30); assertThat( WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .add(null) .minutes()) .isEqualTo(10); }
@Test public void multiply() { // 5h * 2 = 1d 2h WorkDuration result = WorkDuration.createFromValueAndUnit(5, WorkDuration.UNIT.HOURS, HOURS_IN_DAY).multiply(2); assertThat(result.days()).isEqualTo(1); assertThat(result.hours()).isEqualTo(2); assertThat(result.minutes()).isEqualTo(0); assertThat(result.hoursInDay()).isEqualTo(HOURS_IN_DAY); }
@Test public void convert_to_working_long() { assertThat( WorkDuration.createFromValueAndUnit(2, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .toLong()) .isEqualTo(2l); assertThat( WorkDuration.createFromValueAndUnit(4, WorkDuration.UNIT.HOURS, HOURS_IN_DAY).toLong()) .isEqualTo(400l); assertThat( WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.HOURS, HOURS_IN_DAY).toLong()) .isEqualTo(10200l); assertThat( WorkDuration.createFromValueAndUnit(8, WorkDuration.UNIT.HOURS, HOURS_IN_DAY).toLong()) .isEqualTo(10000l); assertThat( WorkDuration.createFromValueAndUnit(2, WorkDuration.UNIT.DAYS, HOURS_IN_DAY).toLong()) .isEqualTo(20000l); }
@Test public void convert_to_working_days() { assertThat( WorkDuration.createFromValueAndUnit(2, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .toWorkingDays()) .isEqualTo(2d / 60d / 8d); assertThat( WorkDuration.createFromValueAndUnit(240, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .toWorkingDays()) .isEqualTo(0.5); assertThat( WorkDuration.createFromValueAndUnit(4, WorkDuration.UNIT.HOURS, HOURS_IN_DAY) .toWorkingDays()) .isEqualTo(0.5); assertThat( WorkDuration.createFromValueAndUnit(8, WorkDuration.UNIT.HOURS, HOURS_IN_DAY) .toWorkingDays()) .isEqualTo(1d); assertThat( WorkDuration.createFromValueAndUnit(16, WorkDuration.UNIT.HOURS, HOURS_IN_DAY) .toWorkingDays()) .isEqualTo(2d); assertThat( WorkDuration.createFromValueAndUnit(2, WorkDuration.UNIT.DAYS, HOURS_IN_DAY) .toWorkingDays()) .isEqualTo(2d); }
@Test public void create_from_value_and_unit() { WorkDuration result = WorkDuration.createFromValueAndUnit(1, WorkDuration.UNIT.DAYS, HOURS_IN_DAY); assertThat(result.days()).isEqualTo(1); assertThat(result.hours()).isEqualTo(0); assertThat(result.minutes()).isEqualTo(0); assertThat(result.hoursInDay()).isEqualTo(HOURS_IN_DAY); assertThat(result.toMinutes()).isEqualTo(ONE_DAY_IN_MINUTES); assertThat( WorkDuration.createFromValueAndUnit(1, WorkDuration.UNIT.DAYS, HOURS_IN_DAY) .toMinutes()) .isEqualTo(ONE_DAY_IN_MINUTES); assertThat( WorkDuration.createFromValueAndUnit(1, WorkDuration.UNIT.HOURS, HOURS_IN_DAY) .toMinutes()) .isEqualTo(ONE_HOUR_IN_MINUTES); assertThat( WorkDuration.createFromValueAndUnit(1, WorkDuration.UNIT.MINUTES, HOURS_IN_DAY) .toMinutes()) .isEqualTo(ONE_MINUTE); }
@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); }