* BAEL-7212: Lenient converter tests

* BAEL-7212: Extracted provider

* BAEL-7212: Include only one holder

* BAEL-7212: Custom strict converter

* BAEL-7212: Renamed converter

* BAEL-7212: Renamed WeekDays

* BAEL-7212: Added tests for non-conventional weekdays

* BAEL-7212: Added tests for case insensitive converter

* BAEL-7212: Removed strict prefix

* BAEL-7212: Removed lenient prefix

* BAEL-7212: Removed non-conventional prefix

* BAEL-7212: Removed strict prefix

* BAEL-7212: Removed lenient holder

* BAEL-7212: Moved to packages

* BAEL-7212: Removed Application class

* BAEL-7212: Removed interface

* BAEL-7212: Renamed test classes

* BAEL-7212: Renamed WeekDays

* BAEL-7212: Added negative tests

* BAEL-7212: Added other test

* BAEL-7212: Move providers

* BAEL-7212: SpEL conversion

* BAEL-7212: Rename holders
This commit is contained in:
Eugene Kovko 2023-12-29 19:18:06 +01:00 committed by GitHub
parent e316c193a0
commit 62f7a1911f
16 changed files with 665 additions and 0 deletions

View File

@ -0,0 +1,16 @@
package com.baeldung.caseinsensitiveenum.converter;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import org.springframework.core.convert.converter.Converter;
public class CaseInsensitiveWeekDayConverter implements Converter<String, WeekDays> {
@Override
public WeekDays convert(final String source) {
try {
return WeekDays.valueOf(source.trim());
} catch (IllegalArgumentException exception) {
return WeekDays.valueOf(source.trim().toUpperCase());
}
}
}

View File

@ -0,0 +1,15 @@
package com.baeldung.caseinsensitiveenum.converter;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import org.springframework.core.convert.converter.Converter;
public class StrictNullableWeekDayConverter implements Converter<String, WeekDays> {
@Override
public WeekDays convert(final String source) {
try {
return WeekDays.valueOf(source.trim());
} catch (IllegalArgumentException e) {
return null;
}
}
}

View File

@ -0,0 +1,5 @@
package com.baeldung.caseinsensitiveenum.nonconventionalweek;
public enum NonConventionalWeekDays {
Mon$Day, Tues$DAY_, Wednes$day, THURS$day_, Fri$Day$_$, Satur$DAY_, Sun$Day
}

View File

@ -0,0 +1,85 @@
package com.baeldung.caseinsensitiveenum.nonconventionalweek;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class NonConventionalWeekDaysHolder {
@Value("${monday}")
private NonConventionalWeekDays monday;
@Value("${tuesday}")
private NonConventionalWeekDays tuesday;
@Value("${wednesday}")
private NonConventionalWeekDays wednesday;
@Value("${thursday}")
private NonConventionalWeekDays thursday;
@Value("${friday}")
private NonConventionalWeekDays friday;
@Value("${saturday}")
private NonConventionalWeekDays saturday;
@Value("${sunday}")
private NonConventionalWeekDays sunday;
public NonConventionalWeekDays getMonday() {
return monday;
}
public void setMonday(final NonConventionalWeekDays monday) {
this.monday = monday;
}
public NonConventionalWeekDays getTuesday() {
return tuesday;
}
public void setTuesday(final NonConventionalWeekDays tuesday) {
this.tuesday = tuesday;
}
public NonConventionalWeekDays getWednesday() {
return wednesday;
}
public void setWednesday(final NonConventionalWeekDays wednesday) {
this.wednesday = wednesday;
}
public NonConventionalWeekDays getThursday() {
return thursday;
}
public void setThursday(final NonConventionalWeekDays thursday) {
this.thursday = thursday;
}
public NonConventionalWeekDays getFriday() {
return friday;
}
public void setFriday(final NonConventionalWeekDays friday) {
this.friday = friday;
}
public NonConventionalWeekDays getSaturday() {
return saturday;
}
public void setSaturday(final NonConventionalWeekDays saturday) {
this.saturday = saturday;
}
public NonConventionalWeekDays getSunday() {
return sunday;
}
public void setSunday(final NonConventionalWeekDays sunday) {
this.sunday = sunday;
}
}

View File

@ -0,0 +1,85 @@
package com.baeldung.caseinsensitiveenum.week;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class SpELWeekDaysHolder {
@Value("#{'${monday}'.toUpperCase()}")
private WeekDays monday;
@Value("#{'${tuesday}'.toUpperCase()}")
private WeekDays tuesday;
@Value("#{'${wednesday}'.toUpperCase()}")
private WeekDays wednesday;
@Value("#{'${thursday}'.toUpperCase()}")
private WeekDays thursday;
@Value("#{'${friday}'.toUpperCase()}")
private WeekDays friday;
@Value("#{'${saturday}'.toUpperCase()}")
private WeekDays saturday;
@Value("#{'${sunday}'.toUpperCase()}")
private WeekDays sunday;
public WeekDays getMonday() {
return monday;
}
public void setMonday(final WeekDays monday) {
this.monday = monday;
}
public WeekDays getTuesday() {
return tuesday;
}
public void setTuesday(final WeekDays tuesday) {
this.tuesday = tuesday;
}
public WeekDays getWednesday() {
return wednesday;
}
public void setWednesday(final WeekDays wednesday) {
this.wednesday = wednesday;
}
public WeekDays getThursday() {
return thursday;
}
public void setThursday(final WeekDays thursday) {
this.thursday = thursday;
}
public WeekDays getFriday() {
return friday;
}
public void setFriday(final WeekDays friday) {
this.friday = friday;
}
public WeekDays getSaturday() {
return saturday;
}
public void setSaturday(final WeekDays saturday) {
this.saturday = saturday;
}
public WeekDays getSunday() {
return sunday;
}
public void setSunday(final WeekDays sunday) {
this.sunday = sunday;
}
}

View File

@ -0,0 +1,5 @@
package com.baeldung.caseinsensitiveenum.week;
public enum WeekDays {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

View File

@ -0,0 +1,85 @@
package com.baeldung.caseinsensitiveenum.week;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class WeekDaysHolder {
@Value("${monday}")
private WeekDays monday;
@Value("${tuesday}")
private WeekDays tuesday;
@Value("${wednesday}")
private WeekDays wednesday;
@Value("${thursday}")
private WeekDays thursday;
@Value("${friday}")
private WeekDays friday;
@Value("${saturday}")
private WeekDays saturday;
@Value("${sunday}")
private WeekDays sunday;
public WeekDays getMonday() {
return monday;
}
public void setMonday(final WeekDays monday) {
this.monday = monday;
}
public WeekDays getTuesday() {
return tuesday;
}
public void setTuesday(final WeekDays tuesday) {
this.tuesday = tuesday;
}
public WeekDays getWednesday() {
return wednesday;
}
public void setWednesday(final WeekDays wednesday) {
this.wednesday = wednesday;
}
public WeekDays getThursday() {
return thursday;
}
public void setThursday(final WeekDays thursday) {
this.thursday = thursday;
}
public WeekDays getFriday() {
return friday;
}
public void setFriday(final WeekDays friday) {
this.friday = friday;
}
public WeekDays getSaturday() {
return saturday;
}
public void setSaturday(final WeekDays saturday) {
this.saturday = saturday;
}
public WeekDays getSunday() {
return sunday;
}
public void setSunday(final WeekDays sunday) {
this.sunday = sunday;
}
}

View File

@ -0,0 +1,49 @@
package com.baeldung.caseinsensitiveenum;
import static org.assertj.core.api.Assertions.assertThat;
import com.baeldung.caseinsensitiveenum.CaseInsensitiveStringToEnumConverterUnitTest.WeekDayConverterConfiguration;
import com.baeldung.caseinsensitiveenum.converter.CaseInsensitiveWeekDayConverter;
import com.baeldung.caseinsensitiveenum.providers.WeekDayHolderArgumentsProvider;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import com.baeldung.caseinsensitiveenum.week.WeekDaysHolder;
import java.util.function.Function;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
@SpringBootTest(properties = {
"monday=monday",
"tuesday=tuesday",
"wednesday=wednesday",
"thursday=THURSDAY",
"friday=Friday",
"saturday=saturDAY",
"sunday=sUndAy",
}, classes = {WeekDaysHolder.class, WeekDayConverterConfiguration.class})
class CaseInsensitiveStringToEnumConverterUnitTest {
public static class WeekDayConverterConfiguration {
@Bean
public ConversionService conversionService() {
final DefaultConversionService defaultConversionService = new DefaultConversionService();
defaultConversionService.addConverter(new CaseInsensitiveWeekDayConverter());
return defaultConversionService;
}
}
@Autowired
private WeekDaysHolder holder;
@ParameterizedTest
@ArgumentsSource(WeekDayHolderArgumentsProvider.class)
void givenPropertiesWhenInjectEnumThenValueIsNull(
Function<WeekDaysHolder, WeekDays> methodReference, WeekDays expected) {
WeekDays actual = methodReference.apply(holder);
assertThat(actual).isEqualTo(expected);
}
}

View File

@ -0,0 +1,35 @@
package com.baeldung.caseinsensitiveenum;
import static org.assertj.core.api.Assertions.assertThat;
import com.baeldung.caseinsensitiveenum.providers.WeekDayHolderArgumentsProvider;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import com.baeldung.caseinsensitiveenum.week.WeekDaysHolder;
import java.util.function.Function;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest(properties = {
"monday=Mon-Day!",
"tuesday=TuesDAY#",
"wednesday=Wednes@day",
"thursday=THURSday^",
"friday=Fri:Day_%",
"saturday=Satur_DAY*",
"sunday=Sun+Day",
}, classes = WeekDaysHolder.class)
class LenientStringToEnumConverterUnitTest {
@Autowired
private WeekDaysHolder holder;
@ParameterizedTest
@ArgumentsSource(WeekDayHolderArgumentsProvider.class)
void givenPropertiesWhenInjectEnumThenValueIsPresent(
Function<WeekDaysHolder, WeekDays> methodReference, WeekDays expected) {
WeekDays actual = methodReference.apply(holder);
assertThat(actual).isEqualTo(expected);
}
}

View File

@ -0,0 +1,35 @@
package com.baeldung.caseinsensitiveenum;
import static org.assertj.core.api.Assertions.assertThat;
import com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays;
import com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDaysHolder;
import com.baeldung.caseinsensitiveenum.providers.NonConventionalWeekDayHolderArgumentsProvider;
import java.util.function.Function;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest(properties = {
"monday=Mon-Day!",
"tuesday=TuesDAY#",
"wednesday=Wednes@day",
"thursday=THURSday^",
"friday=Fri:Day_%",
"saturday=Satur_DAY*",
"sunday=Sun+Day",
}, classes = NonConventionalWeekDaysHolder.class)
class NonConventionalStringToEnumLenientConverterUnitTest {
@Autowired
private NonConventionalWeekDaysHolder holder;
@ParameterizedTest
@ArgumentsSource(NonConventionalWeekDayHolderArgumentsProvider.class)
void givenPropertiesWhenInjectEnumThenValueIsPresent(
Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays> methodReference, NonConventionalWeekDays expected) {
NonConventionalWeekDays actual = methodReference.apply(holder);
assertThat(actual).isEqualTo(expected);
}
}

View File

@ -0,0 +1,49 @@
package com.baeldung.caseinsensitiveenum;
import static org.assertj.core.api.Assertions.assertThat;
import com.baeldung.caseinsensitiveenum.CaseInsensitiveStringToEnumConverterUnitTest.WeekDayConverterConfiguration;
import com.baeldung.caseinsensitiveenum.converter.StrictNullableWeekDayConverter;
import com.baeldung.caseinsensitiveenum.providers.SpELWeekDayHolderArgumentsProvider;
import com.baeldung.caseinsensitiveenum.week.SpELWeekDaysHolder;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import java.util.function.Function;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
@SpringBootTest(properties = {
"monday=monday",
"tuesday=tuesday",
"wednesday=wednesday",
"thursday=THURSDAY",
"friday=Friday",
"saturday=saturDAY",
"sunday=sUndAy",
}, classes = {SpELWeekDaysHolder.class, WeekDayConverterConfiguration.class})
class SpELCaseInsensitiveStringToEnumConverterUnitTest {
public static class WeekDayConverterConfiguration {
@Bean
public ConversionService conversionService() {
final DefaultConversionService defaultConversionService = new DefaultConversionService();
defaultConversionService.addConverter(new StrictNullableWeekDayConverter());
return defaultConversionService;
}
}
@Autowired
private SpELWeekDaysHolder holder;
@ParameterizedTest
@ArgumentsSource(SpELWeekDayHolderArgumentsProvider.class)
void givenPropertiesWhenInjectEnumThenValueIsNull(
Function<SpELWeekDaysHolder, WeekDays> methodReference, WeekDays expected) {
WeekDays actual = methodReference.apply(holder);
assertThat(actual).isEqualTo(expected);
}
}

View File

@ -0,0 +1,49 @@
package com.baeldung.caseinsensitiveenum;
import static org.assertj.core.api.Assertions.assertThat;
import com.baeldung.caseinsensitiveenum.StrictStringToEnumConverterNegativeUnitTest.WeekDayConverterConfiguration;
import com.baeldung.caseinsensitiveenum.converter.StrictNullableWeekDayConverter;
import com.baeldung.caseinsensitiveenum.providers.WeekDayHolderArgumentsProvider;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import com.baeldung.caseinsensitiveenum.week.WeekDaysHolder;
import java.util.function.Function;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
@SpringBootTest(properties = {
"monday=monday",
"tuesday=tuesday",
"wednesday=wednesday",
"thursday=thursday",
"friday=friday",
"saturday=saturday",
"sunday=sunday",
}, classes = {WeekDaysHolder.class, WeekDayConverterConfiguration.class})
class StrictStringToEnumConverterNegativeUnitTest {
public static class WeekDayConverterConfiguration {
@Bean
public ConversionService conversionService() {
final DefaultConversionService defaultConversionService = new DefaultConversionService();
defaultConversionService.addConverter(new StrictNullableWeekDayConverter());
return defaultConversionService;
}
}
@Autowired
private WeekDaysHolder holder;
@ParameterizedTest
@ArgumentsSource(WeekDayHolderArgumentsProvider.class)
void givenPropertiesWhenInjectEnumThenValueIsNull(
Function<WeekDaysHolder, WeekDays> methodReference, WeekDays ignored) {
WeekDays actual = methodReference.apply(holder);
assertThat(actual).isNull();
}
}

View File

@ -0,0 +1,49 @@
package com.baeldung.caseinsensitiveenum;
import static org.assertj.core.api.Assertions.assertThat;
import com.baeldung.caseinsensitiveenum.StrictStringToEnumConverterNegativeUnitTest.WeekDayConverterConfiguration;
import com.baeldung.caseinsensitiveenum.converter.StrictNullableWeekDayConverter;
import com.baeldung.caseinsensitiveenum.providers.WeekDayHolderArgumentsProvider;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import com.baeldung.caseinsensitiveenum.week.WeekDaysHolder;
import java.util.function.Function;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
@SpringBootTest(properties = {
"monday=MONDAY",
"tuesday=TUESDAY",
"wednesday=WEDNESDAY",
"thursday=THURSDAY",
"friday=FRIDAY",
"saturday=SATURDAY",
"sunday=SUNDAY",
}, classes = {WeekDaysHolder.class, WeekDayConverterConfiguration.class})
class StrictStringToEnumConverterPositiveUnitTest {
public static class WeekDayConverterConfiguration {
@Bean
public ConversionService conversionService() {
final DefaultConversionService defaultConversionService = new DefaultConversionService();
defaultConversionService.addConverter(new StrictNullableWeekDayConverter());
return defaultConversionService;
}
}
@Autowired
private WeekDaysHolder holder;
@ParameterizedTest
@ArgumentsSource(WeekDayHolderArgumentsProvider.class)
void givenPropertiesWhenInjectEnumThenValueIsNull(
Function<WeekDaysHolder, WeekDays> methodReference, WeekDays expected) {
WeekDays actual = methodReference.apply(holder);
assertThat(actual).isEqualTo(expected);
}
}

View File

@ -0,0 +1,35 @@
package com.baeldung.caseinsensitiveenum.providers;
import static com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays.Fri$Day$_$;
import static com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays.Mon$Day;
import static com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays.Satur$DAY_;
import static com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays.Sun$Day;
import static com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays.THURS$day_;
import static com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays.Tues$DAY_;
import static com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays.Wednes$day;
import com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDays;
import com.baeldung.caseinsensitiveenum.nonconventionalweek.NonConventionalWeekDaysHolder;
import java.util.function.Function;
import java.util.stream.Stream;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
public class NonConventionalWeekDayHolderArgumentsProvider implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) {
return Stream.of(
Arguments.of(((Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays>) NonConventionalWeekDaysHolder::getMonday),Mon$Day),
Arguments.of(((Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays>) NonConventionalWeekDaysHolder::getTuesday),Tues$DAY_),
Arguments.of(((Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays>) NonConventionalWeekDaysHolder::getWednesday),Wednes$day),
Arguments.of(((Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays>) NonConventionalWeekDaysHolder::getThursday),THURS$day_),
Arguments.of(((Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays>) NonConventionalWeekDaysHolder::getFriday),Fri$Day$_$),
Arguments.of(((Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays>) NonConventionalWeekDaysHolder::getSaturday),Satur$DAY_),
Arguments.of(((Function<NonConventionalWeekDaysHolder, NonConventionalWeekDays>) NonConventionalWeekDaysHolder::getSunday),Sun$Day)
);
}
}

View File

@ -0,0 +1,34 @@
package com.baeldung.caseinsensitiveenum.providers;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.FRIDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.MONDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.SATURDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.SUNDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.THURSDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.TUESDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.WEDNESDAY;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import com.baeldung.caseinsensitiveenum.week.SpELWeekDaysHolder;
import java.util.function.Function;
import java.util.stream.Stream;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
public class SpELWeekDayHolderArgumentsProvider implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) {
return Stream.of(
Arguments.of(((Function<SpELWeekDaysHolder, WeekDays>) SpELWeekDaysHolder::getMonday), MONDAY),
Arguments.of(((Function<SpELWeekDaysHolder, WeekDays>) SpELWeekDaysHolder::getTuesday), TUESDAY),
Arguments.of(((Function<SpELWeekDaysHolder, WeekDays>) SpELWeekDaysHolder::getWednesday), WEDNESDAY),
Arguments.of(((Function<SpELWeekDaysHolder, WeekDays>) SpELWeekDaysHolder::getThursday), THURSDAY),
Arguments.of(((Function<SpELWeekDaysHolder, WeekDays>) SpELWeekDaysHolder::getFriday), FRIDAY),
Arguments.of(((Function<SpELWeekDaysHolder, WeekDays>) SpELWeekDaysHolder::getSaturday), SATURDAY),
Arguments.of(((Function<SpELWeekDaysHolder, WeekDays>) SpELWeekDaysHolder::getSunday), SUNDAY)
);
}
}

View File

@ -0,0 +1,34 @@
package com.baeldung.caseinsensitiveenum.providers;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.FRIDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.MONDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.SATURDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.SUNDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.THURSDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.TUESDAY;
import static com.baeldung.caseinsensitiveenum.week.WeekDays.WEDNESDAY;
import com.baeldung.caseinsensitiveenum.week.WeekDays;
import com.baeldung.caseinsensitiveenum.week.WeekDaysHolder;
import java.util.function.Function;
import java.util.stream.Stream;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
public class WeekDayHolderArgumentsProvider implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) {
return Stream.of(
Arguments.of(((Function<WeekDaysHolder, WeekDays>) WeekDaysHolder::getMonday), MONDAY),
Arguments.of(((Function<WeekDaysHolder, WeekDays>) WeekDaysHolder::getTuesday), TUESDAY),
Arguments.of(((Function<WeekDaysHolder, WeekDays>) WeekDaysHolder::getWednesday), WEDNESDAY),
Arguments.of(((Function<WeekDaysHolder, WeekDays>) WeekDaysHolder::getThursday), THURSDAY),
Arguments.of(((Function<WeekDaysHolder, WeekDays>) WeekDaysHolder::getFriday), FRIDAY),
Arguments.of(((Function<WeekDaysHolder, WeekDays>) WeekDaysHolder::getSaturday), SATURDAY),
Arguments.of(((Function<WeekDaysHolder, WeekDays>) WeekDaysHolder::getSunday), SUNDAY)
);
}
}