Skip to content

Commit

Permalink
Initial coverage for InstanceOfAssertFactories
Browse files Browse the repository at this point in the history
  • Loading branch information
scordio committed Mar 2, 2024
1 parent 7e6b238 commit 77bfbd7
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public String getTypeName() {

@Override
public Type getOwnerType() {
return rawClass.getDeclaringClass();
return null;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import static java.util.concurrent.CompletableFuture.completedFuture;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.assertj.core.api.BDDAssertions.from;
import static org.assertj.core.api.BDDAssertions.then;
import static org.assertj.core.api.InstanceOfAssertFactories.ARRAY;
import static org.assertj.core.api.InstanceOfAssertFactories.ARRAY_2D;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_BOOLEAN;
Expand Down Expand Up @@ -125,10 +127,13 @@
import static org.assertj.core.api.InstanceOfAssertFactories.throwable;
import static org.assertj.core.api.InstanceOfAssertFactories.type;
import static org.assertj.core.test.Maps.mapOf;
import static org.junit.jupiter.params.provider.Arguments.arguments;
import static org.mockito.Mockito.mock;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
Expand All @@ -152,6 +157,8 @@
import java.util.OptionalInt;
import java.util.OptionalLong;
import java.util.Spliterator;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
Expand Down Expand Up @@ -181,6 +188,9 @@
import org.assertj.core.util.Sets;
import org.assertj.core.util.Strings;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

/**
* @author Stefano Cordio
Expand Down Expand Up @@ -1287,4 +1297,81 @@ private static class VolatileFieldContainer {

}

@ParameterizedTest
@MethodSource({
"nonParameterizedFactories",
"parameterizedFactories"
})
void getRawClass(InstanceOfAssertFactory<?, ?> underTest, Class<?> rawClass) {
// WHEN
Class<?> result = underTest.getRawClass();
// THEN
then(result).isEqualTo(rawClass);
}

@ParameterizedTest
@MethodSource("nonParameterizedFactories")
void getType_for_non_parameterized_factories(InstanceOfAssertFactory<?, ?> underTest, Class<?> rawClass) {
// WHEN
Type type = underTest.getType();
// THEN
then(type).isEqualTo(rawClass);
}

@ParameterizedTest
@MethodSource("parameterizedFactories")
void getType_for_parameterized_factories(InstanceOfAssertFactory<?, ?> underTest,
Class<?> rawClass,
Class<?>[] actualTypeArguments) {
// WHEN
Type type = underTest.getType();
// THEN
then(type).asInstanceOf(type(ParameterizedType.class))
.returns(actualTypeArguments, from(ParameterizedType::getActualTypeArguments))
.returns(rawClass, from(ParameterizedType::getRawType))
.returns(null, from(ParameterizedType::getOwnerType));
}

static Stream<Arguments> nonParameterizedFactories() {
return Stream.of(arguments(ARRAY, Object[].class),
arguments(ARRAY_2D, Object[][].class),
arguments(ATOMIC_BOOLEAN, AtomicBoolean.class),
arguments(ATOMIC_INTEGER, AtomicInteger.class),
arguments(ATOMIC_INTEGER_ARRAY, AtomicIntegerArray.class),
arguments(ATOMIC_LONG, AtomicLong.class),
arguments(ATOMIC_LONG_ARRAY, AtomicLongArray.class),
arguments(BIG_DECIMAL, BigDecimal.class),
arguments(BIG_INTEGER, BigInteger.class),
arguments(BOOLEAN, Boolean.class),
arguments(BOOLEAN_2D_ARRAY, boolean[][].class),
arguments(BOOLEAN_ARRAY, boolean[].class),
arguments(BYTE, Byte.class),
arguments(BYTE_2D_ARRAY, byte[][].class),
arguments(BYTE_ARRAY, byte[].class),
arguments(CHAR_2D_ARRAY, char[][].class),
arguments(CHAR_ARRAY, char[].class),
arguments(CHAR_SEQUENCE, CharSequence.class),
arguments(CHARACTER, Character.class),
arguments(CLASS, Class.class));
}

static Stream<Arguments> parameterizedFactories() {
return Stream.of(arguments(ATOMIC_INTEGER_FIELD_UPDATER, AtomicIntegerFieldUpdater.class, classes(Object.class)),
arguments(ATOMIC_LONG_FIELD_UPDATER, AtomicLongFieldUpdater.class, classes(Object.class)),
arguments(ATOMIC_MARKABLE_REFERENCE, AtomicMarkableReference.class, classes(Object.class)),
arguments(ATOMIC_REFERENCE, AtomicReference.class, classes(Object.class)),
arguments(ATOMIC_REFERENCE_ARRAY, AtomicReferenceArray.class, classes(Object.class)),
arguments(ATOMIC_REFERENCE_FIELD_UPDATER, AtomicReferenceFieldUpdater.class,
classes(Object.class, Object.class)),
arguments(ATOMIC_REFERENCE_ARRAY, AtomicReferenceArray.class, classes(Object.class)),
arguments(ATOMIC_STAMPED_REFERENCE, AtomicStampedReference.class, classes(Object.class)),
arguments(COLLECTION, Collection.class, classes(Object.class)),
arguments(COMPLETABLE_FUTURE, CompletableFuture.class, classes(Object.class)),
arguments(COMPLETION_STAGE, CompletionStage.class, classes(Object.class)));
}

private static Class<?>[] classes(Class<?>... classes) {
return classes;
}

}

0 comments on commit 77bfbd7

Please sign in to comment.