TSK-1169: refactored daysToWorkingDaysReportConverter, renamed test methods according to the new community of practices convention and deleted duplicate unit tests, switched test framework to assert via assertJ
This commit is contained in:
parent
4a4a11704e
commit
d4350199b9
|
@ -1,197 +0,0 @@
|
|||
package pro.taskana.monitor.internal.preprocessor;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import pro.taskana.common.api.LoggerUtils;
|
||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||
import pro.taskana.common.internal.util.WorkingDaysToDaysConverter;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
|
||||
/**
|
||||
* The DaysToWorkingDaysReportConverter provides a method to convert an age in days into an age in
|
||||
* working days. Before the method convertDaysToWorkingDays() can be used, the
|
||||
* WorkingDaysToDaysConverter has to be initialized. For a list of {@link TimeIntervalColumnHeader}s
|
||||
* the converter creates a "table" with integer that represents the age in days from the largest
|
||||
* lower limit until the smallest upper limit of the timeIntervalColumnHeaders. This table is valid
|
||||
* for a whole day until the converter is initialized with bigger limits.
|
||||
*/
|
||||
public class DaysToWorkingDaysReportConverter {
|
||||
|
||||
private static final Logger LOGGER =
|
||||
LoggerFactory.getLogger(DaysToWorkingDaysReportConverter.class);
|
||||
private List<Integer> positiveDaysToWorkingDays;
|
||||
private List<Integer> negativeDaysToWorkingDays;
|
||||
private WorkingDaysToDaysConverter workingDaysToDaysConverter;
|
||||
|
||||
DaysToWorkingDaysReportConverter(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders,
|
||||
WorkingDaysToDaysConverter workingDaysToDaysConverter) {
|
||||
|
||||
this.workingDaysToDaysConverter = workingDaysToDaysConverter;
|
||||
positiveDaysToWorkingDays =
|
||||
generatePositiveDaysToWorkingDays(
|
||||
columnHeaders, workingDaysToDaysConverter.getReferenceDate());
|
||||
negativeDaysToWorkingDays =
|
||||
generateNegativeDaysToWorkingDays(
|
||||
columnHeaders, workingDaysToDaysConverter.getReferenceDate());
|
||||
}
|
||||
|
||||
public static DaysToWorkingDaysReportConverter initialize(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException {
|
||||
return initialize(columnHeaders, Instant.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the WorkingDaysToDaysConverter for a list of {@link TimeIntervalColumnHeader}s and
|
||||
* a referenceDate. A new table is only created if there are bigger limits or the date has
|
||||
* changed.
|
||||
*
|
||||
* @param columnHeaders a list of {@link TimeIntervalColumnHeader}s that determines the size of
|
||||
* the table
|
||||
* @param referenceDate a {@link Instant} that represents the current day of the table
|
||||
* @return an instance of the WorkingDaysToDaysConverter
|
||||
* @throws InvalidArgumentException thrown if columnHeaders or referenceDate is null
|
||||
*/
|
||||
public static DaysToWorkingDaysReportConverter initialize(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders, Instant referenceDate)
|
||||
throws InvalidArgumentException {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.debug(
|
||||
"Initialize WorkingDaysToDaysConverter with columnHeaders: {}",
|
||||
LoggerUtils.listToString(columnHeaders));
|
||||
}
|
||||
if (columnHeaders == null) {
|
||||
throw new InvalidArgumentException(
|
||||
"TimeIntervalColumnHeaders can´t be used as NULL-Parameter");
|
||||
}
|
||||
if (referenceDate == null) {
|
||||
throw new InvalidArgumentException("ReferenceDate can´t be used as NULL-Parameter");
|
||||
}
|
||||
WorkingDaysToDaysConverter workingDaysToDaysConverter =
|
||||
WorkingDaysToDaysConverter.initialize(referenceDate);
|
||||
|
||||
return new DaysToWorkingDaysReportConverter(columnHeaders, workingDaysToDaysConverter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an integer, that represents the age in days, to the age in working days by using the
|
||||
* table that was created by initialization. If the age in days is beyond the limits of the table,
|
||||
* the integer will be returned unchanged.
|
||||
*
|
||||
* @param ageInDays represents the age in days
|
||||
* @return the age in working days
|
||||
*/
|
||||
public int convertDaysToWorkingDays(int ageInDays) {
|
||||
|
||||
int minDay = -(negativeDaysToWorkingDays.size() - 1);
|
||||
int maxDay = positiveDaysToWorkingDays.size() - 1;
|
||||
|
||||
if (ageInDays >= minDay && ageInDays <= 0) {
|
||||
return negativeDaysToWorkingDays.get(-ageInDays);
|
||||
}
|
||||
if (ageInDays > 0 && ageInDays <= maxDay) {
|
||||
return positiveDaysToWorkingDays.get(ageInDays);
|
||||
}
|
||||
|
||||
return ageInDays;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an integer, that represents the age in working days, to the age in days by using the
|
||||
* table that was created by initialization. Because one age in working days could match to more
|
||||
* than one age in days, the return value is a list of all days that match to the input parameter.
|
||||
* If the age in working days is beyond the limits of the table, the integer will be returned
|
||||
* unchanged.
|
||||
*
|
||||
* @param ageInWorkingDays represents the age in working days
|
||||
* @return a list of age in days
|
||||
*/
|
||||
public ArrayList<Integer> convertWorkingDaysToDays(int ageInWorkingDays) {
|
||||
|
||||
ArrayList<Integer> list = new ArrayList<>();
|
||||
|
||||
int minWorkingDay = negativeDaysToWorkingDays.get(negativeDaysToWorkingDays.size() - 1);
|
||||
int maxWorkingDay = positiveDaysToWorkingDays.get(positiveDaysToWorkingDays.size() - 1);
|
||||
|
||||
if (ageInWorkingDays >= minWorkingDay && ageInWorkingDays < 0) {
|
||||
for (int ageInDays = 0; ageInDays < negativeDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (negativeDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(-ageInDays);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
if (ageInWorkingDays > 0 && ageInWorkingDays <= maxWorkingDay) {
|
||||
for (int ageInDays = 0; ageInDays < positiveDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (positiveDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(ageInDays);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
if (ageInWorkingDays == 0) {
|
||||
list.add(0);
|
||||
for (int ageInDays = 1; ageInDays < positiveDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (positiveDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(ageInDays);
|
||||
}
|
||||
}
|
||||
for (int ageInDays = 1; ageInDays < negativeDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (negativeDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(-ageInDays);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
// If ageInWorkingDays is beyond the limits of the table, the value is returned unchanged.
|
||||
list.add(ageInWorkingDays);
|
||||
return list;
|
||||
}
|
||||
|
||||
protected List<Integer> generateNegativeDaysToWorkingDays(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders, Instant referenceDate) {
|
||||
int minUpperLimit = TimeIntervalColumnHeader.getSmallestUpperLimit(columnHeaders);
|
||||
|
||||
List<Integer> daysToWorkingDays = new ArrayList<>();
|
||||
daysToWorkingDays.add(0);
|
||||
int day = -1;
|
||||
int workingDay = 0;
|
||||
while (workingDay > minUpperLimit) {
|
||||
workingDay -= (workingDaysToDaysConverter.isWorkingDay(day--, referenceDate)) ? 1 : 0;
|
||||
daysToWorkingDays.add(workingDay);
|
||||
}
|
||||
return daysToWorkingDays;
|
||||
}
|
||||
|
||||
protected List<Integer> generatePositiveDaysToWorkingDays(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders, Instant referenceDate) {
|
||||
int maxLowerLimit = TimeIntervalColumnHeader.getLargestLowerLimit(columnHeaders);
|
||||
ArrayList<Integer> daysToWorkingDays = new ArrayList<>();
|
||||
daysToWorkingDays.add(0);
|
||||
|
||||
int day = 1;
|
||||
int workingDay = 0;
|
||||
while (workingDay < maxLowerLimit) {
|
||||
workingDay += (workingDaysToDaysConverter.isWorkingDay(day++, referenceDate)) ? 1 : 0;
|
||||
daysToWorkingDays.add(workingDay);
|
||||
}
|
||||
return daysToWorkingDays;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DaysToWorkingDaysReportConverter [positiveDaysToWorkingDays="
|
||||
+ positiveDaysToWorkingDays
|
||||
+ ", negativeDaysToWorkingDays="
|
||||
+ negativeDaysToWorkingDays
|
||||
+ ", workingDaysToDaysConverter="
|
||||
+ workingDaysToDaysConverter
|
||||
+ "]";
|
||||
}
|
||||
}
|
|
@ -16,13 +16,13 @@ import pro.taskana.monitor.api.reports.item.QueryItemPreprocessor;
|
|||
public class DaysToWorkingDaysReportPreProcessor<I extends AgeQueryItem>
|
||||
implements QueryItemPreprocessor<I> {
|
||||
|
||||
private DaysToWorkingDaysReportConverter instance;
|
||||
private WorkingDaysToDaysReportConverter instance;
|
||||
|
||||
public DaysToWorkingDaysReportPreProcessor(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders, boolean activate)
|
||||
throws InvalidArgumentException {
|
||||
if (activate) {
|
||||
instance = DaysToWorkingDaysReportConverter.initialize(columnHeaders);
|
||||
instance = WorkingDaysToDaysReportConverter.initialize(columnHeaders);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
package pro.taskana.monitor.internal.preprocessor;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import pro.taskana.common.api.LoggerUtils;
|
||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||
import pro.taskana.common.internal.util.WorkingDaysToDaysConverter;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
|
||||
/**
|
||||
* The DaysToWorkingDaysReportConverter provides a method to convert an age in days into an age in
|
||||
* working days. Before the method convertDaysToWorkingDays() can be used, the
|
||||
* WorkingDaysToDaysConverter has to be initialized. For a list of {@link TimeIntervalColumnHeader}s
|
||||
* the converter creates a "table" with integer that represents the age in days from the largest
|
||||
* lower limit until the smallest upper limit of the timeIntervalColumnHeaders. This table is valid
|
||||
* for a whole day until the converter is initialized with bigger limits.
|
||||
*/
|
||||
public class WorkingDaysToDaysReportConverter {
|
||||
|
||||
private static final Logger LOGGER =
|
||||
LoggerFactory.getLogger(WorkingDaysToDaysReportConverter.class);
|
||||
private WorkingDaysToDaysConverter daysToWorkingDaysConverter;
|
||||
private Map<Integer, Integer> cacheDaysToWorkingDays;
|
||||
|
||||
WorkingDaysToDaysReportConverter(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders,
|
||||
WorkingDaysToDaysConverter daysToWorkingDaysConverter) {
|
||||
this.daysToWorkingDaysConverter = daysToWorkingDaysConverter;
|
||||
cacheDaysToWorkingDays =
|
||||
generateDaysToWorkingDays(columnHeaders, daysToWorkingDaysConverter.getReferenceDate());
|
||||
}
|
||||
|
||||
public static WorkingDaysToDaysReportConverter initialize(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException {
|
||||
return initialize(columnHeaders, Instant.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the WorkingDaysToDaysConverter for a list of {@link TimeIntervalColumnHeader}s and
|
||||
* a referenceDate. A new table is only created if there are bigger limits or the date has
|
||||
* changed.
|
||||
*
|
||||
* @param columnHeaders a list of {@link TimeIntervalColumnHeader}s that determines the size of
|
||||
* the table
|
||||
* @param referenceDate a {@link Instant} that represents the current day of the table
|
||||
* @return an instance of the WorkingDaysToDaysConverter
|
||||
* @throws InvalidArgumentException thrown if columnHeaders or referenceDate is null
|
||||
*/
|
||||
public static WorkingDaysToDaysReportConverter initialize(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders, Instant referenceDate)
|
||||
throws InvalidArgumentException {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.debug(
|
||||
"Initialize WorkingDaysToDaysConverter with columnHeaders: {}",
|
||||
LoggerUtils.listToString(columnHeaders));
|
||||
}
|
||||
if (columnHeaders == null) {
|
||||
throw new InvalidArgumentException(
|
||||
"TimeIntervalColumnHeaders can´t be used as NULL-Parameter");
|
||||
}
|
||||
if (referenceDate == null) {
|
||||
throw new InvalidArgumentException("ReferenceDate can´t be used as NULL-Parameter");
|
||||
}
|
||||
WorkingDaysToDaysConverter workingDaysToDaysConverter =
|
||||
WorkingDaysToDaysConverter.initialize(referenceDate);
|
||||
|
||||
return new WorkingDaysToDaysReportConverter(columnHeaders, workingDaysToDaysConverter);
|
||||
}
|
||||
|
||||
public int convertDaysToWorkingDays(int amountOfDays) {
|
||||
return cacheDaysToWorkingDays.getOrDefault(amountOfDays, amountOfDays);
|
||||
}
|
||||
|
||||
public List<Integer> convertWorkingDaysToDays(int amountOfWorkdays) {
|
||||
List<Integer> listOfAllMatchingDays =
|
||||
cacheDaysToWorkingDays.entrySet().stream()
|
||||
.filter(entry -> entry.getValue() == amountOfWorkdays)
|
||||
.map(Entry::getKey)
|
||||
.collect(Collectors.toList());
|
||||
if (listOfAllMatchingDays.isEmpty()) {
|
||||
return Collections.singletonList(amountOfWorkdays);
|
||||
}
|
||||
return listOfAllMatchingDays;
|
||||
}
|
||||
|
||||
protected Map<Integer, Integer> generateDaysToWorkingDays(
|
||||
List<? extends TimeIntervalColumnHeader> columnHeaders, final Instant referenceDate) {
|
||||
HashMap<Integer, Integer> cacheDaysToWorkingDays = new HashMap<>();
|
||||
cacheDaysToWorkingDays.put(0, 0);
|
||||
|
||||
int positiveWorkdayLimit = TimeIntervalColumnHeader.getLargestLowerLimit(columnHeaders);
|
||||
calculateFutureDaysToWorkingDays(cacheDaysToWorkingDays, referenceDate, positiveWorkdayLimit);
|
||||
|
||||
int negativeWorkdayLimit = TimeIntervalColumnHeader.getSmallestUpperLimit(columnHeaders);
|
||||
calculateNegativeDaysToWorkingDays(cacheDaysToWorkingDays, referenceDate, negativeWorkdayLimit);
|
||||
|
||||
return cacheDaysToWorkingDays;
|
||||
}
|
||||
|
||||
private void calculateFutureDaysToWorkingDays(
|
||||
HashMap<Integer, Integer> cacheDaysToWorkingDays, Instant referenceDate, int workdayLimit) {
|
||||
calculateDaysToWorkingDays(cacheDaysToWorkingDays, referenceDate, workdayLimit, 1);
|
||||
}
|
||||
|
||||
private void calculateNegativeDaysToWorkingDays(
|
||||
HashMap<Integer, Integer> cacheDaysToWorkingDays, Instant referenceDate, int workdayLimit) {
|
||||
calculateDaysToWorkingDays(cacheDaysToWorkingDays, referenceDate, workdayLimit, -1);
|
||||
}
|
||||
|
||||
private void calculateDaysToWorkingDays(
|
||||
HashMap<Integer, Integer> cacheDaysToWorkingDays,
|
||||
Instant referenceDate,
|
||||
int workdayLimit,
|
||||
int direction) {
|
||||
int amountOfDays = 0;
|
||||
int amountOfWorkdays = 0;
|
||||
while (Math.abs(amountOfWorkdays) < Math.abs(workdayLimit)) {
|
||||
amountOfDays += direction;
|
||||
amountOfWorkdays +=
|
||||
(daysToWorkingDaysConverter.isWorkingDay(amountOfDays, referenceDate)) ? direction : 0;
|
||||
cacheDaysToWorkingDays.put(amountOfDays, amountOfWorkdays);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DaysToWorkingDaysReportConverter [cacheDaysToWorkingDays="
|
||||
+ cacheDaysToWorkingDays
|
||||
+ ", daysToWorkingDaysConverter="
|
||||
+ daysToWorkingDaysConverter
|
||||
+ "]";
|
||||
}
|
||||
}
|
|
@ -20,7 +20,7 @@ import pro.taskana.monitor.api.reports.TimeIntervalReportBuilder;
|
|||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.monitor.api.reports.item.AgeQueryItem;
|
||||
import pro.taskana.monitor.internal.MonitorMapper;
|
||||
import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportConverter;
|
||||
import pro.taskana.monitor.internal.preprocessor.WorkingDaysToDaysReportConverter;
|
||||
import pro.taskana.task.api.CustomField;
|
||||
import pro.taskana.task.api.TaskState;
|
||||
|
||||
|
@ -194,8 +194,8 @@ abstract class TimeIntervalReportBuilderImpl<
|
|||
|
||||
private List<SelectedItem> convertWorkingDaysToDays(
|
||||
List<SelectedItem> selectedItems, List<H> columnHeaders) throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(columnHeaders);
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(columnHeaders);
|
||||
for (SelectedItem selectedItem : selectedItems) {
|
||||
selectedItem.setLowerAgeLimit(
|
||||
Collections.min(instance.convertWorkingDaysToDays(selectedItem.getLowerAgeLimit())));
|
||||
|
|
|
@ -2,12 +2,10 @@ package pro.taskana.common.internal.util;
|
|||
|
||||
import static java.util.Collections.singletonList;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
import static pro.taskana.common.internal.util.WorkingDaysToDaysConverter.getEasterSunday;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
|
@ -15,7 +13,6 @@ import org.junit.jupiter.api.Test;
|
|||
|
||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportConverter;
|
||||
|
||||
/** Test for the WorkingDaysToDaysConverter. */
|
||||
class WorkingDaysToDaysConverterTest {
|
||||
|
@ -101,262 +98,6 @@ class WorkingDaysToDaysConverterTest {
|
|||
assertEquals(5, days); // 2.5.
|
||||
}
|
||||
|
||||
@Test
|
||||
void testInitializeForDifferentDates() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance1 =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getShortListOfColumnHeaders(), Instant.parse("2018-02-04T00:00:00.000Z"));
|
||||
DaysToWorkingDaysReportConverter instance2 =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getShortListOfColumnHeaders(), Instant.parse("2018-02-05T00:00:00.000Z"));
|
||||
|
||||
assertNotEquals(instance1, instance2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertDaysToWorkingDays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-06T00:00:00.000Z"));
|
||||
|
||||
assertEquals(-16, instance.convertDaysToWorkingDays(-16));
|
||||
assertEquals(-11, instance.convertDaysToWorkingDays(-15));
|
||||
|
||||
assertEquals(-2, instance.convertDaysToWorkingDays(-4));
|
||||
assertEquals(-1, instance.convertDaysToWorkingDays(-3));
|
||||
assertEquals(-1, instance.convertDaysToWorkingDays(-2));
|
||||
assertEquals(-1, instance.convertDaysToWorkingDays(-1));
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(6));
|
||||
|
||||
assertEquals(11, instance.convertDaysToWorkingDays(15));
|
||||
assertEquals(16, instance.convertDaysToWorkingDays(16));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertWorkingDaysToDays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-27T00:00:00.000Z"));
|
||||
|
||||
assertEquals(singletonList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(singletonList(-11), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(Arrays.asList(-8, -9, -10), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(singletonList(-7), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(singletonList(-6), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(singletonList(-5), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(singletonList(-4), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(Arrays.asList(-1, -2, -3), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(singletonList(0), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(singletonList(1), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(singletonList(2), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(Arrays.asList(3, 4, 5), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(singletonList(6), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(singletonList(7), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(singletonList(8), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(singletonList(9), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(Arrays.asList(10, 11, 12), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(singletonList(14), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(singletonList(15), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertWorkingDaysToDaysAtWeekend() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-03-10T00:00:00.000Z"));
|
||||
|
||||
assertEquals(singletonList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(singletonList(-10), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(singletonList(-9), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(singletonList(-8), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(Arrays.asList(-5, -6, -7), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(singletonList(-4), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(singletonList(-3), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(singletonList(-2), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(singletonList(-1), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(Arrays.asList(0, 1), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(singletonList(2), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(singletonList(3), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(singletonList(4), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(singletonList(5), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(Arrays.asList(6, 7, 8), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(singletonList(9), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(singletonList(10), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(singletonList(11), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(Arrays.asList(13, 14, 15), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(singletonList(16), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertWorkingDaysToDaysOnEasterSunday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-04-01T00:00:00.000Z"));
|
||||
|
||||
assertEquals(singletonList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(singletonList(-11), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(singletonList(-10), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(singletonList(-9), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(Arrays.asList(-6, -7, -8), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(singletonList(-5), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(singletonList(-4), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(singletonList(-3), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(Arrays.asList(0, 1, -1, -2), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(singletonList(2), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(singletonList(3), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(singletonList(4), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(Arrays.asList(5, 6, 7), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(singletonList(8), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(singletonList(9), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(singletonList(10), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(singletonList(11), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(Arrays.asList(12, 13, 14), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(singletonList(15), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(singletonList(16), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEasterHolidays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-03-28T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(6));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testWhitsunHolidays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-05-16T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testLabourDayHoliday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-04-26T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testAscensionDayHoliday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-05-07T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDayOfGermanUnityHoliday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-10-01T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testChristmasAndNewYearHolidays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-12-20T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(7));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(8));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(9));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(10));
|
||||
assertEquals(5, instance.convertDaysToWorkingDays(11));
|
||||
assertEquals(5, instance.convertDaysToWorkingDays(12));
|
||||
assertEquals(6, instance.convertDaysToWorkingDays(13));
|
||||
assertEquals(7, instance.convertDaysToWorkingDays(14));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomHolidaysWithDayOfReformationAndAllSaintsDay() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-10-26T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetEasterSunday() {
|
||||
|
||||
|
@ -382,28 +123,4 @@ class WorkingDaysToDaysConverterTest {
|
|||
assertEquals(LocalDate.of(2050, 4, 10), getEasterSunday(2050));
|
||||
assertEquals(LocalDate.of(2100, 3, 28), getEasterSunday(2100));
|
||||
}
|
||||
|
||||
private List<TimeIntervalColumnHeader> getShortListOfColumnHeaders() {
|
||||
List<TimeIntervalColumnHeader> columnHeaders = new ArrayList<>();
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(Integer.MIN_VALUE, -3));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-1, -2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(0));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(1, 2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(3, Integer.MAX_VALUE));
|
||||
return columnHeaders;
|
||||
}
|
||||
|
||||
private List<TimeIntervalColumnHeader> getLargeListOfColumnHeaders() {
|
||||
List<TimeIntervalColumnHeader> columnHeaders = new ArrayList<>();
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(Integer.MIN_VALUE, -11));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-10, -6));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-5, -2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-1));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(0));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(1));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(2, 5));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(6, 10));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(11, Integer.MAX_VALUE));
|
||||
return columnHeaders;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,310 +0,0 @@
|
|||
package pro.taskana.monitor.internal;
|
||||
|
||||
import static java.util.Collections.singletonList;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||
import pro.taskana.common.internal.util.WorkingDaysToDaysConverter;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportConverter;
|
||||
|
||||
/** Test for the DaysToWorkingDaysReportConverter. */
|
||||
class DaysToWorkingDaysReportConverterTest {
|
||||
|
||||
@BeforeAll
|
||||
static void setup() {
|
||||
WorkingDaysToDaysConverter.setGermanPublicHolidaysEnabled(true);
|
||||
LocalDate dayOfReformation = LocalDate.of(2018, 10, 31);
|
||||
LocalDate allSaintsDays = LocalDate.of(2018, 11, 1);
|
||||
WorkingDaysToDaysConverter.setCustomHolidays(Arrays.asList(dayOfReformation, allSaintsDays));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testInitializeForDifferentDates() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance1 =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getShortListOfColumnHeaders(), Instant.parse("2018-02-04T00:00:00.000Z"));
|
||||
DaysToWorkingDaysReportConverter instance2 =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getShortListOfColumnHeaders(), Instant.parse("2018-02-05T00:00:00.000Z"));
|
||||
|
||||
assertNotEquals(instance1, instance2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertDaysToWorkingDays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-06T00:00:00.000Z"));
|
||||
|
||||
assertEquals(-16, instance.convertDaysToWorkingDays(-16));
|
||||
assertEquals(-11, instance.convertDaysToWorkingDays(-15));
|
||||
|
||||
assertEquals(-2, instance.convertDaysToWorkingDays(-4));
|
||||
assertEquals(-1, instance.convertDaysToWorkingDays(-3));
|
||||
assertEquals(-1, instance.convertDaysToWorkingDays(-2));
|
||||
assertEquals(-1, instance.convertDaysToWorkingDays(-1));
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(6));
|
||||
|
||||
assertEquals(11, instance.convertDaysToWorkingDays(15));
|
||||
assertEquals(16, instance.convertDaysToWorkingDays(16));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertWorkingDaysToDays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-27T00:00:00.000Z"));
|
||||
|
||||
assertEquals(singletonList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(singletonList(-11), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(Arrays.asList(-8, -9, -10), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(singletonList(-7), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(singletonList(-6), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(singletonList(-5), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(singletonList(-4), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(Arrays.asList(-1, -2, -3), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(singletonList(0), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(singletonList(1), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(singletonList(2), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(Arrays.asList(3, 4, 5), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(singletonList(6), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(singletonList(7), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(singletonList(8), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(singletonList(9), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(Arrays.asList(10, 11, 12), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(singletonList(14), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(singletonList(15), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertWorkingDaysToDaysAtWeekend() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-03-10T00:00:00.000Z"));
|
||||
|
||||
assertEquals(singletonList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(singletonList(-10), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(singletonList(-9), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(singletonList(-8), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(Arrays.asList(-5, -6, -7), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(singletonList(-4), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(singletonList(-3), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(singletonList(-2), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(singletonList(-1), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(Arrays.asList(0, 1), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(singletonList(2), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(singletonList(3), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(singletonList(4), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(singletonList(5), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(Arrays.asList(6, 7, 8), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(singletonList(9), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(singletonList(10), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(singletonList(11), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(Arrays.asList(13, 14, 15), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(singletonList(16), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConvertWorkingDaysToDaysOnEasterSunday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-04-01T00:00:00.000Z"));
|
||||
|
||||
assertEquals(singletonList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(singletonList(-12), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(singletonList(-11), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(singletonList(-10), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(singletonList(-9), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(Arrays.asList(-6, -7, -8), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(singletonList(-5), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(singletonList(-4), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(singletonList(-3), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(Arrays.asList(0, 1, -1, -2), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(singletonList(2), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(singletonList(3), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(singletonList(4), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(Arrays.asList(5, 6, 7), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(singletonList(8), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(singletonList(9), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(singletonList(10), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(singletonList(11), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(Arrays.asList(12, 13, 14), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(singletonList(15), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(singletonList(16), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(singletonList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(singletonList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEasterHolidays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-03-28T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(6));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testWhitsunHolidays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-05-16T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testLabourDayHoliday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-04-26T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testAscensionDayHoliday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-05-07T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDayOfGermanUnityHoliday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-10-01T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testChristmasAndNewYearHolidays() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-12-20T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(7));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(8));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(9));
|
||||
assertEquals(4, instance.convertDaysToWorkingDays(10));
|
||||
assertEquals(5, instance.convertDaysToWorkingDays(11));
|
||||
assertEquals(5, instance.convertDaysToWorkingDays(12));
|
||||
assertEquals(6, instance.convertDaysToWorkingDays(13));
|
||||
assertEquals(7, instance.convertDaysToWorkingDays(14));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCustomHolidaysWithDayOfReformationAndAllSaintsDay() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysReportConverter instance =
|
||||
DaysToWorkingDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-10-26T00:00:00.000Z"));
|
||||
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(0));
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(1));
|
||||
assertEquals(0, instance.convertDaysToWorkingDays(2));
|
||||
assertEquals(1, instance.convertDaysToWorkingDays(3));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(4));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(5));
|
||||
assertEquals(2, instance.convertDaysToWorkingDays(6));
|
||||
assertEquals(3, instance.convertDaysToWorkingDays(7));
|
||||
}
|
||||
|
||||
private List<TimeIntervalColumnHeader> getShortListOfColumnHeaders() {
|
||||
List<TimeIntervalColumnHeader> columnHeaders = new ArrayList<>();
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(Integer.MIN_VALUE, -3));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-1, -2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(0));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(1, 2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(3, Integer.MAX_VALUE));
|
||||
return columnHeaders;
|
||||
}
|
||||
|
||||
private List<TimeIntervalColumnHeader> getLargeListOfColumnHeaders() {
|
||||
List<TimeIntervalColumnHeader> columnHeaders = new ArrayList<>();
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(Integer.MIN_VALUE, -11));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-10, -6));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-5, -2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-1));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(0));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(1));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(2, 5));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(6, 10));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(11, Integer.MAX_VALUE));
|
||||
return columnHeaders;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,341 @@
|
|||
package pro.taskana.monitor.internal;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||
import pro.taskana.common.internal.util.WorkingDaysToDaysConverter;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.monitor.internal.preprocessor.WorkingDaysToDaysReportConverter;
|
||||
|
||||
/** Test for the DaysToWorkingDaysReportConverter. */
|
||||
class WorkingDaysToDaysReportConverterTest {
|
||||
|
||||
@BeforeAll
|
||||
static void setup() {
|
||||
WorkingDaysToDaysConverter.setGermanPublicHolidaysEnabled(true);
|
||||
LocalDate dayOfReformation = LocalDate.of(2018, 10, 31);
|
||||
LocalDate allSaintsDays = LocalDate.of(2018, 11, 1);
|
||||
WorkingDaysToDaysConverter.setCustomHolidays(Arrays.asList(dayOfReformation, allSaintsDays));
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_AssertNotEqual_When_InitializingDifferentDates() throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance1 =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getShortListOfColumnHeaders(), Instant.parse("2018-02-04T00:00:00.000Z"));
|
||||
WorkingDaysToDaysReportConverter instance2 =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getShortListOfColumnHeaders(), Instant.parse("2018-02-05T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance1).isNotEqualTo(instance2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDays() throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-06T00:00:00.000Z"));
|
||||
|
||||
int oneBelowLimit = -16;
|
||||
int oneAboveLimit = 16;
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(oneBelowLimit)).isEqualTo(oneBelowLimit);
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(-15)).isEqualTo(-11);
|
||||
assertThat(instance.convertDaysToWorkingDays(-4)).isEqualTo(-2);
|
||||
assertThat(instance.convertDaysToWorkingDays(-3)).isEqualTo(-1);
|
||||
assertThat(instance.convertDaysToWorkingDays(-2)).isEqualTo(-1);
|
||||
assertThat(instance.convertDaysToWorkingDays(-1)).isEqualTo(-1);
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(4);
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(15)).isEqualTo(11);
|
||||
assertThat(instance.convertDaysToWorkingDays(oneAboveLimit)).isEqualTo(oneAboveLimit);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDaysUnchanged_When_ConvertingWorkingDaysOutOfNegativeLimit()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-06T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(-999)).containsExactlyInAnyOrder(-999);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDaysUnchanged_When_ConvertingWorkingDaysOutOfPositiveLimit()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-06T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(999)).containsExactlyInAnyOrder(999);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnAllMatchingDays_When_ConvertingWorkingDaysToDays()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-02-27T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(-13)).containsExactlyInAnyOrder(-13);
|
||||
assertThat(instance.convertWorkingDaysToDays(-12)).containsExactlyInAnyOrder(-12);
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(-8)).containsExactlyInAnyOrder(-12);
|
||||
assertThat(instance.convertWorkingDaysToDays(-7)).containsExactlyInAnyOrder(-11);
|
||||
assertThat(instance.convertWorkingDaysToDays(-6)).containsExactlyInAnyOrder(-10, -9, -8);
|
||||
assertThat(instance.convertWorkingDaysToDays(-5)).containsExactlyInAnyOrder(-7);
|
||||
assertThat(instance.convertWorkingDaysToDays(-4)).containsExactlyInAnyOrder(-6);
|
||||
assertThat(instance.convertWorkingDaysToDays(-3)).containsExactlyInAnyOrder(-5);
|
||||
assertThat(instance.convertWorkingDaysToDays(-2)).containsExactlyInAnyOrder(-4);
|
||||
assertThat(instance.convertWorkingDaysToDays(-1)).containsExactlyInAnyOrder(-1, -2, -3);
|
||||
assertThat(instance.convertWorkingDaysToDays(0)).containsExactlyInAnyOrder(0);
|
||||
assertThat(instance.convertWorkingDaysToDays(1)).containsExactlyInAnyOrder(1);
|
||||
assertThat(instance.convertWorkingDaysToDays(2)).containsExactlyInAnyOrder(2);
|
||||
assertThat(instance.convertWorkingDaysToDays(3)).containsExactlyInAnyOrder(3, 4, 5);
|
||||
assertThat(instance.convertWorkingDaysToDays(4)).containsExactlyInAnyOrder(6);
|
||||
assertThat(instance.convertWorkingDaysToDays(5)).containsExactlyInAnyOrder(7);
|
||||
assertThat(instance.convertWorkingDaysToDays(6)).containsExactlyInAnyOrder(8);
|
||||
assertThat(instance.convertWorkingDaysToDays(7)).containsExactlyInAnyOrder(9);
|
||||
assertThat(instance.convertWorkingDaysToDays(8)).containsExactlyInAnyOrder(10, 11, 12);
|
||||
assertThat(instance.convertWorkingDaysToDays(9)).containsExactlyInAnyOrder(13);
|
||||
assertThat(instance.convertWorkingDaysToDays(10)).containsExactlyInAnyOrder(14);
|
||||
assertThat(instance.convertWorkingDaysToDays(11)).containsExactlyInAnyOrder(15);
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(12)).containsExactlyInAnyOrder(12);
|
||||
assertThat(instance.convertWorkingDaysToDays(13)).containsExactlyInAnyOrder(13);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnAllMatchingDays_When_ConvertingWorkingDaysToDaysAtWeekend()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-03-10T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(-13)).containsExactlyInAnyOrder(-13);
|
||||
assertThat(instance.convertWorkingDaysToDays(-12)).containsExactlyInAnyOrder(-12);
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(-8)).containsExactlyInAnyOrder(-10);
|
||||
assertThat(instance.convertWorkingDaysToDays(-7)).containsExactlyInAnyOrder(-9);
|
||||
assertThat(instance.convertWorkingDaysToDays(-6)).containsExactlyInAnyOrder(-8);
|
||||
assertThat(instance.convertWorkingDaysToDays(-5)).containsExactlyInAnyOrder(-5, -6, -7);
|
||||
assertThat(instance.convertWorkingDaysToDays(-4)).containsExactlyInAnyOrder(-4);
|
||||
assertThat(instance.convertWorkingDaysToDays(-3)).containsExactlyInAnyOrder(-3);
|
||||
assertThat(instance.convertWorkingDaysToDays(-2)).containsExactlyInAnyOrder(-2);
|
||||
assertThat(instance.convertWorkingDaysToDays(-1)).containsExactlyInAnyOrder(-1);
|
||||
assertThat(instance.convertWorkingDaysToDays(0)).containsExactlyInAnyOrder(0, 1);
|
||||
assertThat(instance.convertWorkingDaysToDays(1)).containsExactlyInAnyOrder(2);
|
||||
assertThat(instance.convertWorkingDaysToDays(2)).containsExactlyInAnyOrder(3);
|
||||
assertThat(instance.convertWorkingDaysToDays(3)).containsExactlyInAnyOrder(4);
|
||||
assertThat(instance.convertWorkingDaysToDays(4)).containsExactlyInAnyOrder(5);
|
||||
assertThat(instance.convertWorkingDaysToDays(5)).containsExactlyInAnyOrder(6, 7, 8);
|
||||
assertThat(instance.convertWorkingDaysToDays(6)).containsExactlyInAnyOrder(9);
|
||||
assertThat(instance.convertWorkingDaysToDays(7)).containsExactlyInAnyOrder(10);
|
||||
assertThat(instance.convertWorkingDaysToDays(8)).containsExactlyInAnyOrder(11);
|
||||
assertThat(instance.convertWorkingDaysToDays(9)).containsExactlyInAnyOrder(12);
|
||||
assertThat(instance.convertWorkingDaysToDays(10)).containsExactlyInAnyOrder(13, 14, 15);
|
||||
assertThat(instance.convertWorkingDaysToDays(11)).containsExactlyInAnyOrder(16);
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(12)).containsExactlyInAnyOrder(12);
|
||||
assertThat(instance.convertWorkingDaysToDays(13)).containsExactlyInAnyOrder(13);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnAllMatchingDays_When_ConvertingWorkingDaysToDaysOnEasterSunday()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-04-01T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(-13)).containsExactlyInAnyOrder(-13);
|
||||
assertThat(instance.convertWorkingDaysToDays(-12)).containsExactlyInAnyOrder(-12);
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(-8)).containsExactlyInAnyOrder(-12);
|
||||
assertThat(instance.convertWorkingDaysToDays(-7)).containsExactlyInAnyOrder(-11);
|
||||
assertThat(instance.convertWorkingDaysToDays(-6)).containsExactlyInAnyOrder(-10);
|
||||
assertThat(instance.convertWorkingDaysToDays(-5)).containsExactlyInAnyOrder(-9);
|
||||
assertThat(instance.convertWorkingDaysToDays(-4)).containsExactlyInAnyOrder(-6, -7, -8);
|
||||
assertThat(instance.convertWorkingDaysToDays(-3)).containsExactlyInAnyOrder(-5);
|
||||
assertThat(instance.convertWorkingDaysToDays(-2)).containsExactlyInAnyOrder(-4);
|
||||
assertThat(instance.convertWorkingDaysToDays(-1)).containsExactlyInAnyOrder(-3);
|
||||
assertThat(instance.convertWorkingDaysToDays(0)).containsExactlyInAnyOrder(0, 1, -1, -2);
|
||||
assertThat(instance.convertWorkingDaysToDays(1)).containsExactlyInAnyOrder(2);
|
||||
assertThat(instance.convertWorkingDaysToDays(2)).containsExactlyInAnyOrder(3);
|
||||
assertThat(instance.convertWorkingDaysToDays(3)).containsExactlyInAnyOrder(4);
|
||||
assertThat(instance.convertWorkingDaysToDays(4)).containsExactlyInAnyOrder(5, 6, 7);
|
||||
assertThat(instance.convertWorkingDaysToDays(5)).containsExactlyInAnyOrder(8);
|
||||
assertThat(instance.convertWorkingDaysToDays(6)).containsExactlyInAnyOrder(9);
|
||||
assertThat(instance.convertWorkingDaysToDays(7)).containsExactlyInAnyOrder(10);
|
||||
assertThat(instance.convertWorkingDaysToDays(8)).containsExactlyInAnyOrder(11);
|
||||
assertThat(instance.convertWorkingDaysToDays(9)).containsExactlyInAnyOrder(12, 13, 14);
|
||||
assertThat(instance.convertWorkingDaysToDays(10)).containsExactlyInAnyOrder(15);
|
||||
assertThat(instance.convertWorkingDaysToDays(11)).containsExactlyInAnyOrder(16);
|
||||
|
||||
assertThat(instance.convertWorkingDaysToDays(12)).containsExactlyInAnyOrder(12);
|
||||
assertThat(instance.convertWorkingDaysToDays(13)).containsExactlyInAnyOrder(13);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDaysOnEasterHolidays()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-03-28T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDaysOnWhitsunHolidays()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-05-16T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDaysOnLabourDay()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-04-26T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(7)).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDaysOnAscensionDay()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-05-07T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(7)).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDaysOnDayOfGermanUnity()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-10-01T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(7)).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDaysOnChristmasAndNewYearHolidays()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-12-20T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(7)).isEqualTo(3);
|
||||
assertThat(instance.convertDaysToWorkingDays(8)).isEqualTo(4);
|
||||
assertThat(instance.convertDaysToWorkingDays(9)).isEqualTo(4);
|
||||
assertThat(instance.convertDaysToWorkingDays(10)).isEqualTo(4);
|
||||
assertThat(instance.convertDaysToWorkingDays(11)).isEqualTo(5);
|
||||
assertThat(instance.convertDaysToWorkingDays(12)).isEqualTo(5);
|
||||
assertThat(instance.convertDaysToWorkingDays(13)).isEqualTo(6);
|
||||
assertThat(instance.convertDaysToWorkingDays(14)).isEqualTo(7);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_ReturnWorkingDays_When_ConvertingDaysToWorkingDaysOnCustomHoliday()
|
||||
throws InvalidArgumentException {
|
||||
WorkingDaysToDaysReportConverter instance =
|
||||
WorkingDaysToDaysReportConverter.initialize(
|
||||
getLargeListOfColumnHeaders(), Instant.parse("2018-10-26T00:00:00.000Z"));
|
||||
|
||||
assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(0);
|
||||
assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1);
|
||||
assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(6)).isEqualTo(2);
|
||||
assertThat(instance.convertDaysToWorkingDays(7)).isEqualTo(3);
|
||||
}
|
||||
|
||||
private List<TimeIntervalColumnHeader> getShortListOfColumnHeaders() {
|
||||
List<TimeIntervalColumnHeader> columnHeaders = new ArrayList<>();
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(Integer.MIN_VALUE, -3));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-1, -2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(0));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(1, 2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(3, Integer.MAX_VALUE));
|
||||
return columnHeaders;
|
||||
}
|
||||
|
||||
private List<TimeIntervalColumnHeader> getLargeListOfColumnHeaders() {
|
||||
List<TimeIntervalColumnHeader> columnHeaders = new ArrayList<>();
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(Integer.MIN_VALUE, -11));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-10, -6));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-5, -2));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(-1));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(0));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(1));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(2, 5));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(6, 10));
|
||||
columnHeaders.add(new TimeIntervalColumnHeader(11, Integer.MAX_VALUE));
|
||||
return columnHeaders;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue