diff --git a/lib/src/test/java/dev/openfeature/javasdk/internal/ObjectUtilsTest.java b/lib/src/test/java/dev/openfeature/javasdk/internal/ObjectUtilsTest.java new file mode 100644 index 00000000..0133705a --- /dev/null +++ b/lib/src/test/java/dev/openfeature/javasdk/internal/ObjectUtilsTest.java @@ -0,0 +1,87 @@ +package dev.openfeature.javasdk.internal; + +import java.util.*; + +import org.junit.jupiter.api.*; + +import static dev.openfeature.javasdk.internal.ObjectUtils.defaultIfNull; +import static org.assertj.core.api.Assertions.assertThat; + +class ObjectUtilsTest { + + @Nested + class GenericObject { + @Test + @DisplayName("should return default value if null") + void shouldReturnDefaultValueIfNull() { + var defaultValue = "default"; + + var actual = defaultIfNull(null, () -> defaultValue); + + assertThat(actual).isEqualTo(defaultValue); + } + + @Test + @DisplayName("should return given value if not null") + void shouldReturnGivenValueIfNotNull() { + var defaultValue = "default"; + var expectedValue = "expected"; + + var actual = defaultIfNull(expectedValue, () -> defaultValue); + + assertThat(actual).isEqualTo(expectedValue); + } + } + + @Nested + class ListSupport { + + @Test + @DisplayName("should return default list if given one is null") + void shouldReturnDefaultListIfGivenOneIsNull() { + var defaultValue = List.of("default"); + + var actual = defaultIfNull(null, () -> defaultValue); + + assertThat(actual).isEqualTo(defaultValue); + } + + @Test + @DisplayName("should return given list if not null") + void shouldReturnGivenListIfNotNull() { + var defaultValue = List.of("default"); + var expectedValue = List.of("expected"); + + var actual = defaultIfNull(expectedValue, () -> defaultValue); + + assertThat(actual).isEqualTo(expectedValue); + } + } + + @Nested + class MapSupport { + + @Test + @DisplayName("should return default map if given one is null") + void shouldReturnDefaultMapIfGivenOneIsNull() { + var defaultValue = Map.of("key", "default"); + + var actual = defaultIfNull(null, () -> defaultValue); + + assertThat(actual).isEqualTo(defaultValue); + } + + @Test + @DisplayName("should return given map if not null") + void shouldReturnGivenMapIfNotNull() { + var defaultValue = Map.of("key", "default"); + var expectedValue = Map.of("key", "expected"); + + var actual = defaultIfNull(expectedValue, () -> defaultValue); + + assertThat(actual).isEqualTo(expectedValue); + } + } + + +}