Skip to content

Commit

Permalink
Fix missing configuration for MatcherAssert soft assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
scordio committed Jan 7, 2024
1 parent 2b2e5c9 commit 0521edf
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -443,13 +443,6 @@ static <T> InstanceOfAssertFactory<T, ObjectAssert<T>> type(Class<T> type) {
*/
InstanceOfAssertFactory<Object[], ObjectArrayAssert<Object>> ARRAY = array(Object[].class);

/**
* {@link InstanceOfAssertFactory} for an two-dimensional array of {@link Object}.
*
* @see #array(Class)
*/
InstanceOfAssertFactory<Object[][], Object2DArrayAssert<Object>> ARRAY_2D = array2D(Object[][].class);

/**
* {@link InstanceOfAssertFactory} for an array of elements.
*
Expand All @@ -464,7 +457,14 @@ static <ELEMENT> InstanceOfAssertFactory<ELEMENT[], ObjectArrayAssert<ELEMENT>>
}

/**
* {@link InstanceOfAssertFactory} for an two-dimensional array of elements.
* {@link InstanceOfAssertFactory} for a two-dimensional array of {@link Object}.
*
* @see #array(Class)
*/
InstanceOfAssertFactory<Object[][], Object2DArrayAssert<Object>> ARRAY_2D = array2D(Object[][].class);

/**
* {@link InstanceOfAssertFactory} for a two-dimensional array of elements.
*
* @param <ELEMENT> the element type.
* @param arrayType the element type instance.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import java.util.function.IntPredicate;
import java.util.function.LongPredicate;
import java.util.function.Predicate;
import java.util.regex.Matcher;

import net.bytebuddy.implementation.bind.annotation.FieldValue;
import net.bytebuddy.implementation.bind.annotation.RuntimeType;
Expand Down Expand Up @@ -163,6 +164,7 @@ private static Class actualClass(Object currentAssert) {
if (currentAssert instanceof LongAssert) return Long.class;
if (currentAssert instanceof LongPredicateAssert) return LongPredicate.class;
if (currentAssert instanceof MapAssert) return Map.class;
if (currentAssert instanceof MatcherAssert) return Matcher.class;
if (currentAssert instanceof ObjectAssert) return Object.class;
if (currentAssert instanceof OffsetDateTimeAssert) return OffsetDateTime.class;
if (currentAssert instanceof OffsetTimeAssert) return OffsetTime.class;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
import static org.assertj.core.api.InstanceOfAssertFactories.LONG_PREDICATE;
import static org.assertj.core.api.InstanceOfAssertFactories.LONG_STREAM;
import static org.assertj.core.api.InstanceOfAssertFactories.MAP;
import static org.assertj.core.api.InstanceOfAssertFactories.MATCHER;
import static org.assertj.core.api.InstanceOfAssertFactories.OFFSET_DATE_TIME;
import static org.assertj.core.api.InstanceOfAssertFactories.OFFSET_TIME;
import static org.assertj.core.api.InstanceOfAssertFactories.OPTIONAL;
Expand All @@ -99,6 +100,7 @@
import static org.assertj.core.api.InstanceOfAssertFactories.URL_TYPE;
import static org.assertj.core.api.InstanceOfAssertFactories.ZONED_DATE_TIME;
import static org.assertj.core.api.InstanceOfAssertFactories.array;
import static org.assertj.core.api.InstanceOfAssertFactories.array2D;
import static org.assertj.core.api.InstanceOfAssertFactories.atomicIntegerFieldUpdater;
import static org.assertj.core.api.InstanceOfAssertFactories.atomicLongFieldUpdater;
import static org.assertj.core.api.InstanceOfAssertFactories.atomicMarkableReference;
Expand All @@ -121,7 +123,6 @@
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.assertj.core.util.Lists.list;
import static org.mockito.Mockito.mock;

import java.io.ByteArrayInputStream;
Expand Down Expand Up @@ -168,11 +169,13 @@
import java.util.function.IntPredicate;
import java.util.function.LongPredicate;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import java.util.stream.Stream;

import org.assertj.core.util.Lists;
import org.assertj.core.util.Strings;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -321,6 +324,16 @@ void optional_long_factory_should_allow_optional_long_assertions() {
result.isPresent();
}

@Test
void matcher_factory_should_allow_matcher_assertions() {
// GIVEN
Object value = Pattern.compile("a*").matcher("aaa");
// WHEN
MatcherAssert result = assertThat(value).asInstanceOf(MATCHER);
// THEN
result.matches();
}

@Test
void big_decimal_factory_should_allow_big_decimal_assertions() {
// GIVEN
Expand Down Expand Up @@ -641,6 +654,16 @@ void array_factory_should_allow_array_assertions() {
result.containsExactly(0, "");
}

@Test
void array_typed_factory_should_allow_array_typed_assertions() {
// GIVEN
Object value = new Integer[] { 0, 1 };
// WHEN
ObjectArrayAssert<Integer> result = assertThat(value).asInstanceOf(array(Integer[].class));
// THEN
result.containsExactly(0, 1);
}

@Test
void array_2d_factory_should_allow_2d_array_assertions() {
// GIVEN
Expand All @@ -652,13 +675,13 @@ void array_2d_factory_should_allow_2d_array_assertions() {
}

@Test
void array_typed_factory_should_allow_array_typed_assertions() {
void array_2d_typed_factory_should_allow_2d_array_typed_assertions() {
// GIVEN
Object value = new Integer[] { 0, 1 };
Object value = new Integer[][] { { 0, 1 }, { 2, 3 } };
// WHEN
ObjectArrayAssert<Integer> result = assertThat(value).asInstanceOf(array(Integer[].class));
Object2DArrayAssert<Integer> result = assertThat(value).asInstanceOf(array2D(Integer[][].class));
// THEN
result.containsExactly(0, 1);
result.hasDimensions(2, 2);
}

@Test
Expand Down Expand Up @@ -1055,7 +1078,7 @@ void string_factory_should_allow_string_assertions() {
@Test
void iterable_factory_should_allow_iterable_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie");
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie");
// WHEN
IterableAssert<Object> result = assertThat(value).asInstanceOf(ITERABLE);
// THEN
Expand All @@ -1065,7 +1088,7 @@ void iterable_factory_should_allow_iterable_assertions() {
@Test
void iterable_typed_factory_should_allow_iterable_typed_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie");
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie");
// WHEN
IterableAssert<String> result = assertThat(value).asInstanceOf(iterable(String.class));
// THEN
Expand All @@ -1075,7 +1098,7 @@ void iterable_typed_factory_should_allow_iterable_typed_assertions() {
@Test
void iterator_factory_should_allow_iterator_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie").iterator();
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie").iterator();
// WHEN
IteratorAssert<Object> result = assertThat(value).asInstanceOf(ITERATOR);
// THEN
Expand All @@ -1085,7 +1108,7 @@ void iterator_factory_should_allow_iterator_assertions() {
@Test
void iterator_typed_factory_should_allow_iterator_typed_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie").iterator();
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie").iterator();
// WHEN
IteratorAssert<String> result = assertThat(value).asInstanceOf(iterator(String.class));
// THEN
Expand All @@ -1095,7 +1118,7 @@ void iterator_typed_factory_should_allow_iterator_typed_assertions() {
@Test
void collection_factory_should_allow_collection_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie");
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie");
// WHEN
AbstractCollectionAssert<?, Collection<?>, Object, ObjectAssert<Object>> result = assertThat(value).asInstanceOf(COLLECTION);
// THEN
Expand All @@ -1105,7 +1128,7 @@ void collection_factory_should_allow_collection_assertions() {
@Test
void collection_typed_factory_should_allow_collection_typed_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie");
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie");
// WHEN
AbstractCollectionAssert<?, Collection<? extends String>, String, ObjectAssert<String>> result = assertThat(value).asInstanceOf(collection(String.class));
// THEN
Expand All @@ -1115,7 +1138,7 @@ void collection_typed_factory_should_allow_collection_typed_assertions() {
@Test
void list_factory_should_allow_list_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie");
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie");
// WHEN
ListAssert<Object> result = assertThat(value).asInstanceOf(LIST);
// THEN
Expand All @@ -1125,7 +1148,7 @@ void list_factory_should_allow_list_assertions() {
@Test
void list_typed_factory_should_allow_typed_list_assertions() {
// GIVEN
Object value = list("Homer", "Marge", "Bart", "Lisa", "Maggie");
Object value = Lists.list("Homer", "Marge", "Bart", "Lisa", "Maggie");
// WHEN
ListAssert<String> result = assertThat(value).asInstanceOf(list(String.class));
// THEN
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_INTEGER;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_INTEGER_ARRAY;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_INTEGER_FIELD_UPDATER;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_LONG;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_LONG_ARRAY;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_LONG_FIELD_UPDATER;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_MARKABLE_REFERENCE;
import static org.assertj.core.api.InstanceOfAssertFactories.ATOMIC_REFERENCE;
Expand All @@ -39,6 +41,7 @@
import static org.assertj.core.api.InstanceOfAssertFactories.CHAR_ARRAY;
import static org.assertj.core.api.InstanceOfAssertFactories.CHAR_SEQUENCE;
import static org.assertj.core.api.InstanceOfAssertFactories.CLASS;
import static org.assertj.core.api.InstanceOfAssertFactories.COLLECTION;
import static org.assertj.core.api.InstanceOfAssertFactories.COMPLETABLE_FUTURE;
import static org.assertj.core.api.InstanceOfAssertFactories.COMPLETION_STAGE;
import static org.assertj.core.api.InstanceOfAssertFactories.DATE;
Expand Down Expand Up @@ -72,6 +75,7 @@
import static org.assertj.core.api.InstanceOfAssertFactories.LONG_PREDICATE;
import static org.assertj.core.api.InstanceOfAssertFactories.LONG_STREAM;
import static org.assertj.core.api.InstanceOfAssertFactories.MAP;
import static org.assertj.core.api.InstanceOfAssertFactories.MATCHER;
import static org.assertj.core.api.InstanceOfAssertFactories.OFFSET_DATE_TIME;
import static org.assertj.core.api.InstanceOfAssertFactories.OFFSET_TIME;
import static org.assertj.core.api.InstanceOfAssertFactories.OPTIONAL;
Expand All @@ -91,6 +95,7 @@
import static org.assertj.core.api.InstanceOfAssertFactories.THROWABLE;
import static org.assertj.core.api.InstanceOfAssertFactories.URI_TYPE;
import static org.assertj.core.api.InstanceOfAssertFactories.URL_TYPE;
import static org.assertj.core.api.InstanceOfAssertFactories.ZONED_DATE_TIME;
import static org.assertj.core.util.Lists.list;
import static org.assertj.core.util.Maps.newHashMap;
import static org.assertj.core.util.Sets.newHashSet;
Expand Down Expand Up @@ -135,6 +140,7 @@
import java.util.function.IntPredicate;
import java.util.function.LongPredicate;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
Expand Down Expand Up @@ -187,8 +193,8 @@ public static Stream<Arguments> should_work_with_any_InstanceOfFactory_source()
arguments(new AtomicInteger(1), ATOMIC_INTEGER),
arguments(new AtomicIntegerArray(5), ATOMIC_INTEGER_ARRAY),
arguments(AtomicIntegerFieldUpdater.newUpdater(Data.class, "intField"), ATOMIC_INTEGER_FIELD_UPDATER),
arguments(new AtomicLong(5l), InstanceOfAssertFactories.ATOMIC_LONG),
arguments(new AtomicLongArray(5), InstanceOfAssertFactories.ATOMIC_LONG_ARRAY),
arguments(new AtomicLong(5L), ATOMIC_LONG),
arguments(new AtomicLongArray(5), ATOMIC_LONG_ARRAY),
arguments(AtomicLongFieldUpdater.newUpdater(Data.class, "longField"), ATOMIC_LONG_FIELD_UPDATER),
arguments(new AtomicMarkableReference<>("", false), ATOMIC_MARKABLE_REFERENCE),
arguments(new AtomicReference<>("abc"), ATOMIC_REFERENCE),
Expand All @@ -210,6 +216,7 @@ public static Stream<Arguments> should_work_with_any_InstanceOfFactory_source()
arguments('a', CHARACTER),
arguments(Character.valueOf('a'), CHARACTER),
arguments(TolkienCharacter.class, CLASS),
arguments(list("foo"), COLLECTION),
arguments(completedFuture("foo"), COMPLETABLE_FUTURE),
arguments(completionStage, COMPLETION_STAGE),
arguments(new Date(), DATE),
Expand Down Expand Up @@ -245,14 +252,15 @@ public static Stream<Arguments> should_work_with_any_InstanceOfFactory_source()
arguments((LongPredicate) l -> l == 0, LONG_PREDICATE),
arguments(LongStream.empty(), LONG_STREAM),
arguments(newHashMap("k", "v"), MAP),
arguments(Pattern.compile("a*").matcher("aaa"), MATCHER),
arguments(OffsetDateTime.now(), OFFSET_DATE_TIME),
arguments(OffsetTime.now(), OFFSET_TIME),
arguments(Optional.empty(), OPTIONAL),
arguments(OptionalDouble.empty(), OPTIONAL_DOUBLE),
arguments(OptionalInt.empty(), OPTIONAL_INT),
arguments(OptionalLong.empty(), OPTIONAL_LONG),
arguments(Paths.get("."), PATH),
arguments((Predicate<String>) s -> s.isEmpty(), PREDICATE),
arguments((Predicate<String>) String::isEmpty, PREDICATE),
arguments(Short.MIN_VALUE, SHORT),
arguments(new short[0], SHORT_ARRAY),
arguments(new short[0][0], SHORT_2D_ARRAY),
Expand All @@ -263,7 +271,7 @@ public static Stream<Arguments> should_work_with_any_InstanceOfFactory_source()
arguments(new Exception(), THROWABLE),
arguments(URI.create("http://localhost"), URI_TYPE),
arguments(URI.create("http://localhost").toURL(), URL_TYPE),
arguments(ZonedDateTime.now(), InstanceOfAssertFactories.ZONED_DATE_TIME));
arguments(ZonedDateTime.now(), ZONED_DATE_TIME));
}

static class Data {
Expand Down

0 comments on commit 0521edf

Please sign in to comment.