T
- the type of elements of the "actual" value.public abstract class AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T> extends AbstractAssert<S,T[]> implements IndexedObjectEnumerableAssert<AbstractObjectArrayAssert<S,T>,T>, ArraySortedAssert<AbstractObjectArrayAssert<S,T>,T>
To create an instance of this class, invoke
.
Assertions#assertThat(T[])
actual, info, myself
Modifier | Constructor and Description |
---|---|
protected |
AbstractObjectArrayAssert(T[] actual,
Class<?> selfType) |
Modifier and Type | Method and Description |
---|---|
S |
are(Condition<? super T> condition)
Verifies that each element value satisfies the given condition
|
S |
areAtLeast(int times,
Condition<? super T> condition)
Verifies that there is at least n elements in the actual group satisfying the given condition.
|
S |
areAtLeastOne(Condition<? super T> condition)
Verifies that there is at least one element in the actual group satisfying the given condition.
|
S |
areAtMost(int times,
Condition<? super T> condition)
Verifies that there is at most n elements in the actual group satisfying the given condition.
|
S |
areExactly(int times,
Condition<? super T> condition)
Verifies that there is exactly n elements in the actual group satisfying the given condition.
|
S |
areNot(Condition<? super T> condition)
Verifies that each element value does not satisfy the given condition
|
S |
contains(T... values)
Verifies that the actual group contains the given values, in any order.
|
S |
contains(T value,
Index index)
Verifies that the actual group contains the given object at the given index.
|
S |
containsAll(Iterable<? extends T> iterable)
Verifies that the actual group contains all the elements of given
Iterable , in any order. |
S |
containsExactly(T... values)
Verifies that the actual group contains only the given values and nothing else, in order.
This assertion should only be used with group that have a consistent iteration order (i.e. |
S |
containsExactlyElementsOf(Iterable<? extends T> iterable)
Same as
ObjectEnumerableAssert.containsExactly(Object...) but handle the Iterable to array conversion : verifies that
actual contains all the elements of the given iterable and nothing else in the same order. |
S |
containsNull()
Verifies that the actual group contains at least a null element.
|
S |
containsOnly(T... values)
Verifies that the actual group contains only the given values and nothing else, in any order.
|
S |
containsOnlyElementsOf(Iterable<? extends T> iterable)
Same semantic as
ObjectEnumerableAssert.containsOnly(Object[]) : verifies that actual contains all the elements of the given
iterable and nothing else, in any order. |
S |
containsOnlyOnce(T... values)
Verifies that the actual group contains the given values only once.
|
S |
containsSequence(T... sequence)
Verifies that the actual group contains the given sequence, without any other values between them.
|
S |
containsSubsequence(T... subsequence)
Verifies that the actual group contains the given subsequence (possibly with other values between them).
|
S |
doesNotContain(T... values)
Verifies that the actual group does not contain the given values.
|
S |
doesNotContain(T value,
Index index)
Verifies that the actual group does not contain the given object at the given index.
|
S |
doesNotContainAnyElementsOf(Iterable<? extends T> iterable)
Verifies that actual does not contain any elements of the given
Iterable (i.e. |
S |
doesNotContainNull()
Verifies that the actual group does not contain null elements.
|
S |
doesNotHaveDuplicates()
Verifies that the actual group does not contain duplicates.
|
S |
doNotHave(Condition<? super T> condition)
Verifies that all elements don't satisfy the given condition.
|
S |
endsWith(T... sequence)
Verifies that the actual group ends with the given sequence of objects, without any other objects between them.
|
<U> ObjectArrayAssert<U> |
extracting(Extractor<? super T,U> extractor)
Extract the values from Iterable's elements after test by applying an extracting function on them.
|
ObjectArrayAssert<Tuple> |
extracting(String... propertiesOrFields)
Extract the values of given fields/properties from the array's elements under test into a new array composed of
Tuple (a simple data structure), this new array becoming the array under test.
|
ObjectArrayAssert<Object> |
extracting(String fieldOrProperty)
Extract the values of given field or property from the array's elements under test into a new array, this new array
becoming the array under test.
|
<P> ObjectArrayAssert<P> |
extracting(String fieldOrProperty,
Class<P> extractingType)
Extract the values of given field or property from the array's elements under test into a new array, this new array
becoming the array under test with type.
|
ObjectArrayAssert<Object> |
extractingResultOf(String method)
Extract the result of given method invocation from the array's elements under test into a new array, this new array
becoming the array under test.
|
<P> ObjectArrayAssert<P> |
extractingResultOf(String method,
Class<P> extractingType)
Extract the result of given method invocation from the array's elements under test into a new array, this new array
becoming the array under test.
|
<U,C extends Collection<U>> |
flatExtracting(Extractor<? super T,C> extractor) |
S |
hasAtLeastOneElementOfType(Class<?> type)
Verifies that at least one element in the actual
Object group belong to the specified type (matching
includes subclasses of the given type). |
S |
hasOnlyElementsOfType(Class<?> type)
Verifies that all the elements in the actual
Object group belong to the specified type (matching includes
subclasses of the given type). |
S |
hasSameElementsAs(Iterable<? extends T> iterable)
An alias of
ObjectEnumerableAssert.containsOnlyElementsOf(Iterable) : verifies that actual contains all the elements of the
given iterable and nothing else, in any order. |
S |
hasSameSizeAs(Iterable<?> other)
Verifies that the actual group has the same size as given
Iterable . |
S |
hasSameSizeAs(Object other)
Verifies that the actual group has the same size as given array.
|
S |
hasSize(int expected)
Verifies that the number of values in the actual group is equal to the given one.
|
S |
have(Condition<? super T> condition)
Verifies that all elements satisfy the given condition.
|
S |
haveAtLeast(int times,
Condition<? super T> condition)
Verifies that there is at least n elements in the actual group satisfying the given condition.
|
S |
haveAtLeastOne(Condition<? super T> condition)
Verifies that there is at least one element in the actual group satisfying the given condition.
|
S |
haveAtMost(int times,
Condition<? super T> condition)
Verifies that there is at most n elements in the actual group satisfying the given condition.
|
S |
haveExactly(int times,
Condition<? super T> condition)
Verifies that there is exactly n elements in the actual group satisfying the given condition.
|
S |
inBinary()
Use binary object representation instead of standard representation in error messages.
|
S |
inHexadecimal()
Enable hexadecimal object representation of Itearble elements instead of standard java representation in error
messages.
|
void |
isEmpty()
Verifies that the actual group of values is empty.
|
S |
isNotEmpty()
Verifies that the actual group of values is not empty.
|
void |
isNullOrEmpty()
Verifies that the actual group of values is
null or empty. |
S |
isSorted()
Verifies that the actual array is sorted into ascending order according to the natural ordering of its elements.
|
S |
isSortedAccordingTo(Comparator<? super T> comparator)
Verifies that the actual array is sorted according to the given comparator. Empty arrays are considered sorted whatever
the comparator is. One element arrays are considered sorted if element is compatible with comparator, otherwise an
AssertionError is thrown.
|
S |
isSubsetOf(Iterable<? extends T> values)
Verifies that all the elements of actual are present in the given
Iterable . |
S |
startsWith(T... sequence)
Verifies that the actual group starts with the given sequence of objects, without any other objects between them.
|
S |
usingDefaultElementComparator()
Revert to standard comparison for incoming assertion group element checks.
|
S |
usingElementComparator(Comparator<? super T> customComparator)
Use given custom comparator instead of relying on actual type A
equals method to compare group
elements for
incoming assertion checks. |
as, as, asList, asString, describedAs, describedAs, descriptionText, doesNotHave, doesNotHaveSameClassAs, equals, failWithMessage, getWritableAssertionInfo, has, hashCode, hasSameClassAs, is, isEqualTo, isExactlyInstanceOf, isIn, isIn, isInstanceOf, isInstanceOfAny, isNot, isNotEqualTo, isNotExactlyInstanceOf, isNotIn, isNotIn, isNotInstanceOf, isNotInstanceOfAny, isNotNull, isNotOfAnyClassIn, isNotSameAs, isNull, isOfAnyClassIn, isSameAs, overridingErrorMessage, usingComparator, usingDefaultComparator, withThreadDumpOnError
public void isNullOrEmpty()
null
or empty.isNullOrEmpty
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
AssertionError
- if the actual group of values is not null
or not empty.public void isEmpty()
isEmpty
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
AssertionError
- if the actual group of values is not empty.public S isNotEmpty()
isNotEmpty
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
this
assertion object.AssertionError
- if the actual group of values is empty.public S hasSize(int expected)
hasSize
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
expected
- the expected number of values in the actual group.this
assertion object.AssertionError
- if the number of values of the actual group is not equal to the given one.public S hasSameSizeAs(Object other)
int[] oneTwoThree = {1, 2, 3};
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertions will pass
assertThat(elvesRings).hasSameSizeAs(oneTwoThree);
hasSameSizeAs
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
other
- the array to compare size with actual group.this
assertion object.public S hasSameSizeAs(Iterable<?> other)
Iterable
.
Example:
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertions will pass
assertThat(elvesRings).hasSameSizeAs(abc);
hasSameSizeAs
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
other
- the Iterable
to compare size with actual group.this
assertion object.public S contains(T... values)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
// assertions will pass
assertThat(abc).contains("b", "a");
assertThat(abc).contains("b", "a", "b");
// assertions will fail
assertThat(abc).contains("d");
contains
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
values
- the given values.this
assertion object.public S containsOnly(T... values)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
// assertion will pass
assertThat(abc).containsOnly("c", "b", "a");
// assertion will fail as some elements of abc are missing
assertThat(abc).containsOnly("a", "b");
containsOnly
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
values
- the given values.this
assertion object.public S containsOnlyElementsOf(Iterable<? extends T> iterable)
ObjectEnumerableAssert.containsOnly(Object[])
: verifies that actual contains all the elements of the given
iterable and nothing else, in any order.
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Ring> rings = newArrayList(nenya, vilya);
// assertion will pass
assertThat(rings).containsOnlyElementsOf(newLinkedList(nenya, vilya));
assertThat(rings).containsOnlyElementsOf(newLinkedList(nenya, nenya, vilya, vilya));
// assertion will fail as actual does not contain narya.
assertThat(rings).containsOnlyElementsOf(newLinkedList(nenya, vilya, narya));
// assertion will fail as actual contain nenya.
assertThat(rings).containsOnlyElementsOf(newLinkedList(vilya));
containsOnlyElementsOf
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
iterable
- the given Iterable
we will get elements from.public S hasSameElementsAs(Iterable<? extends T> iterable)
ObjectEnumerableAssert.containsOnlyElementsOf(Iterable)
: verifies that actual contains all the elements of the
given iterable and nothing else, in any order.
Example:
// an Iterable is used in the example but it would also work with an array
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertions will pass:
assertThat(elvesRings).hasSameElementsAs(newArrayList(nenya, narya, vilya));
assertThat(elvesRings).hasSameElementsAs(newArrayList(nenya, narya, vilya, nenya));
// assertions will fail:
assertThat(elvesRings).hasSameElementsAs(newArrayList(nenya, narya));
assertThat(elvesRings).hasSameElementsAs(newArrayList(nenya, narya, vilya, oneRing));
hasSameElementsAs
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
iterable
- the Iterable whose elements we expect to be presentpublic S containsOnlyOnce(T... values)
Examples :
// lists are used in the examples but it would also work with arrays
// assertions will pass
assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("winter");
assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("coming", "winter");
// assertions will fail
assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("Lannister");
assertThat(newArrayList("Aria", "Stark", "daughter", "of", "Ned", "Stark")).containsOnlyOnce("Stark");
assertThat(newArrayList("Aria", "Stark", "daughter", "of", "Ned", "Stark")).containsOnlyOnce("Stark", "Lannister", "Aria");
containsOnlyOnce
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
values
- the given values.this
assertion object.public S containsExactly(T... values)
HashSet
, prefer ObjectEnumerableAssert.containsOnly(Object...)
in that case).
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertion will pass
assertThat(elvesRings).containsExactly(vilya, nenya, narya);
// assertion will fail as actual and expected orders differ.
assertThat(elvesRings).containsExactly(nenya, vilya, narya);
containsExactly
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
values
- the given values.this
assertion object.public S containsExactlyElementsOf(Iterable<? extends T> iterable)
ObjectEnumerableAssert.containsExactly(Object...)
but handle the Iterable
to array conversion : verifies that
actual contains all the elements of the given iterable and nothing else in the same order.
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertion will pass
assertThat(elvesRings).containsExactlyElementsOf(newLinkedList(vilya, nenya, narya));
// assertion will fail as actual and expected orders differ.
assertThat(elvesRings).containsExactlyElementsOf(newLinkedList(nenya, vilya, narya));
containsExactlyElementsOf
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
iterable
- the given Iterable
we will get elements from.public S containsSequence(T... sequence)
Example:
// an Iterable is used in the example but it would also work with an array
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertion will pass
assertThat(elvesRings).containsSequence(vilya, nenya);
// assertions will fail
assertThat(elvesRings).containsSequence(vilya, narya);
assertThat(elvesRings).containsSequence(nenya, vilya);
containsSequence
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
sequence
- the sequence of objects to look for.public S containsSubsequence(T... subsequence)
Example:
// an Iterable is used in the example but it would also work with an array
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertions will pass
assertThat(elvesRings).containsSubsequence(vilya, nenya);
assertThat(elvesRings).containsSubsequence(vilya, narya);
// assertion will fail
assertThat(elvesRings).containsSubsequence(nenya, vilya);
containsSubsequence
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
subsequence
- the sequence of objects to look for.public S contains(T value, Index index)
contains
in interface IndexedObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
value
- the object to look for.index
- the index where the object should be stored in the actual group.public S doesNotContain(T value, Index index)
doesNotContain
in interface IndexedObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
value
- the object to look for.index
- the index where the object should be stored in the actual group.public S doesNotContain(T... values)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
// assertion will pass
assertThat(abc).doesNotContain("d", "e");
doesNotContain
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
values
- the given values.this
assertion object.public S doesNotContainAnyElementsOf(Iterable<? extends T> iterable)
Iterable
(i.e. none).
Example:
// an Iterable is used in the example but it would also work with an array
// These assertions succeed:
List<String> actual = newArrayList("GIT", "CVS", "SOURCESAFE");
List<String> values = newArrayList("git", "cvs", "subversion");
assertThat(actual).doesNotContainAnyElementsOf(values);
// These fail:
List<String> actual = newArrayList("GIT", "cvs", "SOURCESAFE");
List<String> values = newArrayList("git", "cvs", "subversion");
assertThat(actual).doesNotContainAnyElementsOf(values);
doesNotContainAnyElementsOf
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
iterable
- the Iterable
whose elements must not be in the actual group.this
assertion object.public S doesNotHaveDuplicates()
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> lotsOfAs = newArrayList("a", "a", "a");
// assertion will pass
assertThat(abc).doesNotHaveDuplicates();
// assertion will fail
assertThat(lotsOfAs).doesNotHaveDuplicates();
doesNotHaveDuplicates
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
this
assertion object.public S startsWith(T... sequence)
ObjectEnumerableAssert.containsSequence(Object...)
, but it also verifies that the first element in the
sequence is also first element of the actual group.
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
// assertion will pass
assertThat(abc).startsWith("a", "b");
// assertion will fail
assertThat(abc).startsWith("c");
startsWith
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
sequence
- the sequence of objects to look for.public S endsWith(T... sequence)
ObjectEnumerableAssert.containsSequence(Object...)
, but it also verifies that the last element in the
sequence is also last element of the actual group.
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
// assertion will pass
assertThat(abc).endsWith("b", "c");
// assertion will fail
assertThat(abc).endsWith("a");
endsWith
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
sequence
- the sequence of objects to look for.public S isSubsetOf(Iterable<? extends T> values)
Iterable
.
Example:
// an Iterable is used in the example but it would also work with an array
List<Ring> ringsOfPower = newArrayList(oneRing, vilya, nenya, narya, dwarfRing, manRing);
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya);
// assertions will pass:
assertThat(elvesRings).isSubsetOf(ringsOfPower);
// assertions will fail:
assertThat(elvesRings).isSubsetOf(newArrayList(nenya, narya));
isSubsetOf
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
values
- the Iterable
that should contain all actual elements.public S containsNull()
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> abNull = newArrayList("a", "b", null);
// assertion will pass
assertThat(abNull).containsNull();
// assertion will fail
assertThat(abc).containsNull();
containsNull
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
this
assertion object.public S doesNotContainNull()
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> abNull = newArrayList("a", "b", null);
// assertion will pass
assertThat(abc).doesNotContainNull();
// assertion will fail
assertThat(abNull).doesNotContainNull();
doesNotContainNull
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
this
assertion object.public S are(Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> abcc = newArrayList("a", "b", "cc");
Condition<String> singleCharacterString = new Condition>String<() {
public boolean matches(String value) {
return value.length() == 1;
}
});
// assertion will pass
assertThat(abc).are(singleCharacterString);
// assertion will fail
assertThat(abcc).are(singleCharacterString);
are
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
condition
- the given condition.this
object.public S areNot(Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> abcc = newArrayList("a", "b", "cc");
Condition<String> longerThanOneCharacter = new Condition>String<() {
public boolean matches(String value) {
return value.length() > 1;
}
});
// assertion will pass
assertThat(abc).areNot(longerThanOneCharacter);
// assertion will fail
assertThat(abcc).areNot(longerThanOneCharacter);
areNot
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
condition
- the given condition.this
object.public S have(Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> abcc = newArrayList("a", "b", "cc");
Condition<String> singleCharacterStringOnly = new Condition<String>() {
public boolean matches(String value) {
return value.length() == 1;
}
});
// assertion will pass
assertThat(abc).have(singleCharacterStringOnly);
// assertion will fail
assertThat(abcc).have(singleCharacterStringOnly);
have
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
condition
- the given condition.this
object.public S doNotHave(Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> abcc = newArrayList("a", "b", "cc");
Condition<String> longerThanOneCharacterString = new Condition>String<() {
public boolean matches(String value) {
return value.length() > 1;
}
});
// assertion will pass
assertThat(abc).doNotHave(longerThanOneCharacterString);
// assertion will fail
assertThat(abcc).doNotHave(longerThanOneCharacterString);
doNotHave
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
condition
- the given condition.this
object.public S areAtLeast(int times, Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
Condition<Integer> odd = new Condition<Integer>() {
public boolean matches(Integer value) {
return value % 2 == 1;
}
});
// assertion will pass
oneTwoThree.areAtLeast(2, odd);
// assertion will fail
oneTwoThree.areAtLeast(3, odd);
areAtLeast
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
times
- the minimum number of times the condition should be verified.condition
- the given condition.this
object.public S areAtLeastOne(Condition<? super T> condition)
areAtLeast(1, condition)
.
Example:
// an Iterable is used in the example but it would also work with an array
// jedi is a Condition<String>
assertThat(newLinkedHashSet("Luke", "Solo", "Leia")).areAtLeastOne(jedi);
areAtLeastOne
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
ObjectEnumerableAssert.haveAtLeast(int, Condition)
public S areAtMost(int times, Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
Condition<Integer> odd = new Condition<Integer>() {
public boolean matches(Integer value) {
return value % 2 == 1;
}
});
// assertions will pass
oneTwoThree.areAtMost(2, odd);
oneTwoThree.areAtMost(3, odd);
// assertions will fail
oneTwoThree.areAtMost(1, odd);
areAtMost
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
times
- the number of times the condition should be at most verified.condition
- the given condition.this
object.public S areExactly(int times, Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
Condition<Integer> odd = new Condition<Integer>() {
public boolean matches(Integer value) {
return value % 2 == 1;
}
});
// assertion will pass
oneTwoThree.areExactly(2, odd);
// assertions will fail
oneTwoThree.areExactly(1, odd);
oneTwoThree.areExactly(3, odd);
areExactly
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
times
- the exact number of times the condition should be verified.condition
- the given condition.this
object.public S haveAtLeastOne(Condition<? super T> condition)
haveAtLeast(1, condition)
.
Example:
// an Iterable is used in the example but it would also work with an array
List<BasketBallPlayer> bullsPlayers = newArrayList(noah, rose);
// potentialMvp is a Condition<BasketBallPlayer>
assertThat(bullsPlayers).haveAtLeastOne(potentialMvp);
haveAtLeastOne
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
ObjectEnumerableAssert.haveAtLeast(int, Condition)
public S haveAtLeast(int times, Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
Condition<Integer> odd = new Condition<Integer>() {
public boolean matches(Integer value) {
return value % 2 == 1;
}
});
// assertion will pass
oneTwoThree.haveAtLeast(2, odd);
// assertion will fail
oneTwoThree.haveAtLeast(3, odd);
This method is an alias for ObjectEnumerableAssert.areAtLeast(int, Condition)
.haveAtLeast
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
public S haveAtMost(int times, Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
Condition<Integer> odd = new Condition<Integer>() {
public boolean matches(Integer value) {
return value % 2 == 1;
}
});
// assertions will pass
oneTwoThree.haveAtMost(2, odd);
oneTwoThree.haveAtMost(3, odd);
// assertion will fail
oneTwoThree.haveAtMost(1, odd);
This method is an alias ObjectEnumerableAssert.areAtMost(int, Condition)
.haveAtMost
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
public S haveExactly(int times, Condition<? super T> condition)
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<Integer> oneTwoThree = newArrayList(1, 2, 3);
Condition<Integer> odd = new Condition<Integer>() {
public boolean matches(Integer value) {
return value % 2 == 1;
}
});
// assertion will pass
oneTwoThree.haveExactly(2, odd);
// assertions will fail
oneTwoThree.haveExactly(1, odd);
oneTwoThree.haveExactly(3, odd);
This method is an alias ObjectEnumerableAssert.areExactly(int, Condition)
.haveExactly
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
public S hasAtLeastOneElementOfType(Class<?> type)
Object
group belong to the specified type (matching
includes subclasses of the given type).
Example:
// an array is used in the example but it would also work with an Iterable
Number[] numbers = { 2, 6L, 8.0 };
// successful assertion:
assertThat(numbers).hasAtLeastOneElementOfType(Long.class);
// assertion failure:
assertThat(numbers).hasAtLeastOneElementOfType(Float.class);
hasAtLeastOneElementOfType
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
type
- the expected type.public S hasOnlyElementsOfType(Class<?> type)
Object
group belong to the specified type (matching includes
subclasses of the given type).
Example:
// an array is used in the example but it would also work with an Iterable
Number[] numbers = { 2, 6, 8 };
// successful assertion:
assertThat(numbers).hasOnlyElementsOfType(Integer.class);
// assertion failure:
assertThat(numbers).hasOnlyElementsOfType(Long.class);
hasOnlyElementsOfType
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
type
- the expected type.public S isSorted()
All array elements must be primitive or implement the Comparable
interface and must be mutually comparable (that is,
e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the array), examples :
isSorted
in interface ArraySortedAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
this
assertion object.public S isSortedAccordingTo(Comparator<? super T> comparator)
isSortedAccordingTo
in interface ArraySortedAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
comparator
- the Comparator
used to compare array elementsthis
assertion object.public S containsAll(Iterable<? extends T> iterable)
Iterable
, in any order.
Example :
// an Iterable is used in the example but it would also work with an array
Iterable<String> abc = newArrayList("a", "b", "c");
Iterable<String> cb = newArrayList("c", "b");
// assertion will pass
assertThat(abc).containsAll(cb);
containsAll
in interface ObjectEnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
iterable
- the given Iterable
we will get elements from.this
assertion object.public S usingElementComparator(Comparator<? super T> customComparator)
EnumerableAssert
equals
method to compare group
elements for
incoming assertion checks.
Custom comparator is bound to assertion instance, meaning that if a new assertion is created, it will use default comparison strategy.
Examples :
// compares invoices by payee
assertThat(invoiceList).usingComparator(invoicePayeeComparator).isEqualTo(expectedInvoiceList).
// compares invoices by date, doesNotHaveDuplicates and contains both use the given invoice date comparator
assertThat(invoiceList).usingComparator(invoiceDateComparator).doesNotHaveDuplicates().contains(may2010Invoice)
// as assertThat(invoiceList) creates a new assertion, it falls back to standard comparison strategy
// based on Invoice's equal method to compare invoiceList elements to lowestInvoice.
assertThat(invoiceList).contains(lowestInvoice).
// standard comparison : the fellowshipOfTheRing includes Gandalf but not Sauron (believe me) ...
assertThat(fellowshipOfTheRing).contains(gandalf)
.doesNotContain(sauron);
// ... but if we compare only races, Sauron is in fellowshipOfTheRing because he's a Maia like Gandalf.
assertThat(fellowshipOfTheRing).usingElementComparator(raceComparator)
.contains(sauron);
usingElementComparator
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
customComparator
- the comparator to use for incoming assertion checks.this
assertion object.public S usingDefaultElementComparator()
EnumerableAssert
This method should be used to disable a custom comparison strategy set by calling
EnumerableAssert.usingElementComparator(Comparator)
.
usingDefaultElementComparator
in interface EnumerableAssert<AbstractObjectArrayAssert<S extends AbstractObjectArrayAssert<S,T>,T>,T>
this
assertion object.public ObjectArrayAssert<Object> extracting(String fieldOrProperty)
It allows you to test a field/property of the array's elements instead of testing the elements themselves, it can be sometimes much less work !
Let's take an example to make things clearer :
// Build a array of TolkienCharacter, a TolkienCharacter has a name (String) and a Race (a class)
// they can be public field or properties, both works when extracting their values.
TolkienCharacter[] fellowshipOfTheRing = new TolkienCharacter[] {
new TolkienCharacter("Frodo", 33, HOBBIT),
new TolkienCharacter("Sam", 38, HOBBIT),
new TolkienCharacter("Gandalf", 2020, MAIA),
new TolkienCharacter("Legolas", 1000, ELF),
new TolkienCharacter("Pippin", 28, HOBBIT),
new TolkienCharacter("Gimli", 139, DWARF),
new TolkienCharacter("Aragorn", 87, MAN,
new TolkienCharacter("Boromir", 37, MAN)
};
// let's verify the names of TolkienCharacter in fellowshipOfTheRing :
assertThat(fellowshipOfTheRing).extracting("name")
.contains("Boromir", "Gandalf", "Frodo")
.doesNotContain("Sauron", "Elrond");
// you can also extract nested field/property like the name of Race :
assertThat(fellowshipOfTheRing).extracting("race.name")
.contains("Hobbit", "Elf")
.doesNotContain("Orc");
A field with the given name is looked for first, if it is not accessible (ie. does not exist or is not public) then
a property with the given name is looked for.
It works only if all objects have the field or all objects have the property with the given name, i.e. it won't work if half of the objects have the field and the other the property.
Note that the order of extracted field/property values is consistent with the array order.
fieldOrProperty
- the field/property to extract from the array under testIntrospectionError
- if no field or property exists with the given name (or field exists but is not public)public <P> ObjectArrayAssert<P> extracting(String fieldOrProperty, Class<P> extractingType)
It allows you to test a field/property of the array's elements instead of testing the elements themselves, it can be sometimes much less work !
Let's take an example to make things clearer :
// Build an array of TolkienCharacter, a TolkienCharacter has a name (String) and a Race (a class)
// they can be public field or properties, both works when extracting their values.
TolkienCharacter[] fellowshipOfTheRing = new TolkienCharacter[] {
new TolkienCharacter("Frodo", 33, HOBBIT),
new TolkienCharacter("Sam", 38, HOBBIT),
new TolkienCharacter("Gandalf", 2020, MAIA),
new TolkienCharacter("Legolas", 1000, ELF),
new TolkienCharacter("Pippin", 28, HOBBIT),
new TolkienCharacter("Gimli", 139, DWARF),
new TolkienCharacter("Aragorn", 87, MAN,
new TolkienCharacter("Boromir", 37, MAN)
};
// let's verify the names of TolkienCharacter in fellowshipOfTheRing :
assertThat(fellowshipOfTheRing).extracting("name", String.class)
.contains("Boromir", "Gandalf", "Frodo")
.doesNotContain("Sauron", "Elrond");
// you can also extract nested field/property like the name of Race :
assertThat(fellowshipOfTheRing).extracting("race.name", String.class)
.contains("Hobbit", "Elf")
.doesNotContain("Orc");
A field with the given name is looked for first, if it is not accessible (ie. does not exist or is not public) then
a property with the given name is looked for.
It works only if all objects have the field or all objects have the property with the given name, i.e. it won't work if half of the objects have the field and the other the property.
Note that the order of extracted field/property values is consistent with the order of the array under test.
fieldOrProperty
- the field/property to extract from the array under testextractingType
- type to returnIntrospectionError
- if no field or property exists with the given name (or field exists but is not public)public ObjectArrayAssert<Tuple> extracting(String... propertiesOrFields)
// Build an array of TolkienCharacter, a TolkienCharacter has a name (String) and a Race (a class)
// they can be public field or properties, both works when extracting their values.
TolkienCharacter[] fellowshipOfTheRing = new TolkienCharacter[] {
new TolkienCharacter("Frodo", 33, HOBBIT),
new TolkienCharacter("Sam", 38, HOBBIT),
new TolkienCharacter("Gandalf", 2020, MAIA),
new TolkienCharacter("Legolas", 1000, ELF),
new TolkienCharacter("Pippin", 28, HOBBIT),
new TolkienCharacter("Gimli", 139, DWARF),
new TolkienCharacter("Aragorn", 87, MAN,
new TolkienCharacter("Boromir", 37, MAN)
};
// let's verify 'name' and 'age' of some TolkienCharacter in fellowshipOfTheRing :
assertThat(fellowshipOfTheRing).extracting("name", "age")
.contains(tuple("Boromir", 37),
tuple("Sam", 38),
tuple("Legolas", 1000));
// extract 'name', 'age' and Race name values.
assertThat(fellowshipOfTheRing).extracting("name", "age", "race.name")
.contains(tuple("Boromir", 37, "Man"),
tuple("Sam", 38, "Hobbit"),
tuple("Legolas", 1000, "Elf"));
A property with the given name is looked for first, if it doesn't exist then a field with the given name is looked
for, if no field accessible (ie. does not exist or is not public) an IntrospectionError is thrown.
It only works if all objects have the field or all objects have the property with the given name, i.e. it
won't work if half of the objects have the field and the other the property.
Note that the order of extracted property/field values is consistent with the iteration order of the array under
test.propertiesOrFields
- the properties/fields to extract from the initial array under testIntrospectionError
- if one of the given name does not match a field or property (or field exists but is not
public) in one of the initial Iterable's element.public <U> ObjectArrayAssert<U> extracting(Extractor<? super T,U> extractor)
extracting(String)
, as it
doesn't utilize introspection.
Let's take a look an example
// Build a list of TolkienCharacter, a TolkienCharacter has a name, and age and a Race (a specific class)
// they can be public field or properties, both can be extracted.
List<TolkienCharacter> fellowshipOfTheRing = new ArrayList<TolkienCharacter>();
fellowshipOfTheRing.add(new TolkienCharacter("Frodo", 33, HOBBIT));
fellowshipOfTheRing.add(new TolkienCharacter("Sam", 38, HOBBIT));
fellowshipOfTheRing.add(new TolkienCharacter("Gandalf", 2020, MAIA));
fellowshipOfTheRing.add(new TolkienCharacter("Legolas", 1000, ELF));
fellowshipOfTheRing.add(new TolkienCharacter("Pippin", 28, HOBBIT));
fellowshipOfTheRing.add(new TolkienCharacter("Gimli", 139, DWARF));
fellowshipOfTheRing.add(new TolkienCharacter("Aragorn", 87, MAN);
fellowshipOfTheRing.add(new TolkienCharacter("Boromir", 37, MAN));
// this extracts the race
Extractor<TolkienCharacter, Race> race = new Extractor<TolkienCharacter, Race>() {
@Override
public Race extract(TolkienCharacter input) {
return input.getRace();
}
}
// fellowship has hobbitses, right, my presioussss?
assertThat(fellowshipOfTheRing).extracting(race).contains(HOBBIT);
Note that the order of extracted property/field values is consistent with the iteration order of the Iterable under
test, for example if it's a HashSet
, you won't be able to make any assumptions on the extracted values
order.extractor
- the object transforming input object to desired onepublic <U,C extends Collection<U>> ObjectArrayAssert<U> flatExtracting(Extractor<? super T,C> extractor)
public ObjectArrayAssert<Object> extractingResultOf(String method)
It allows you to test a method reslts of the array's elements instead of testing the elements themselves, it can be sometimes much less work!
It is especially usefull for classes that does not conform to Java Bean's getter specification (i.e. public String toString() or public String status() instead of public String getStatus()).
Let's take an example to make things clearer :
// Build a array of WesterosHouse, a WesterosHouse has a method: public String sayTheWords()
WesterosHouse[] greatHousesOfWesteros = new WesterosHouse[] { new WesterosHouse("Stark", "Winter is Comming"),
new WesterosHouse("Lannister", "Hear Me Roar!"), new WesterosHouse("Greyjoy", "We Do Not Sow"),
new WesterosHouse("Baratheon", "Our is the Fury"), new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"),
new WesterosHouse("Tyrell", "Growing Strong") };
// let's verify the words of great houses in Westeros:
assertThat(greatHousesOfWesteros).extractingResultOf("sayTheWords")
.contains("Winter is Comming", "We Do Not Sow", "Hear Me Roar")
.doesNotContain("Lannisters always pay their debts");
Following requirements have to be met to extract method results:
Note that the order of extracted values is consistent with the order of the array under test.
method
- the name of the method which result is to be extracted from the array under testIllegalArgumentException
- if no method exists with the given name, or method is not public, or method does
return void, or method accepts arguments.public <P> ObjectArrayAssert<P> extractingResultOf(String method, Class<P> extractingType)
It allows you to test a method reslts of the array's elements instead of testing the elements themselves, it can be sometimes much less work!
It is especially usefull for classes that does not conform to Java Bean's getter specification (i.e. public String toString() or public String status() instead of public String getStatus()).
Let's take an example to make things clearer :
// Build a array of WesterosHouse, a WesterosHouse has a method: public String sayTheWords()
WesterosHouse[] greatHousesOfWesteros = new WesterosHouse[] { new WesterosHouse("Stark", "Winter is Comming"),
new WesterosHouse("Lannister", "Hear Me Roar!"), new WesterosHouse("Greyjoy", "We Do Not Sow"),
new WesterosHouse("Baratheon", "Our is the Fury"), new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"),
new WesterosHouse("Tyrell", "Growing Strong") };
// let's verify the words of great houses in Westeros:
assertThat(greatHousesOfWesteros).extractingResultOf("sayTheWords", String.class)
.contains("Winter is Comming", "We Do Not Sow", "Hear Me Roar")
.doesNotContain("Lannisters always pay their debts");
Following requirements have to be met to extract method results:
Note that the order of extracted values is consistent with the order of the array under test.
method
- the name of the method which result is to be extracted from the array under testextractingType
- type to returnIllegalArgumentException
- if no method exists with the given name, or method is not public, or method does
return void, or method accepts arguments.public S inHexadecimal()
assertThat(new Byte[] { 0x10, 0x20 }).inHexadecimal().contains(new Byte[] { 0x30 });
With standard error message:
Expecting:
<[16, 32]>
to contain:
<[48]>
but could not find:
<[48]>
With Hexadecimal error message:
Expecting:
<[0x10, 0x20]>
to contain:
<[0x30]>
but could not find:
<[0x30]>
inHexadecimal
in class AbstractAssert<S extends AbstractObjectArrayAssert<S,T>,T[]>
this
assertion object.public S inBinary()
AbstractAssert
assertThat(1).inBinary().isEqualTo(2);
org.junit.ComparisonFailure:
Expected :0b00000000_00000000_00000000_00000010
Actual :0b00000000_00000000_00000000_00000001
inBinary
in class AbstractAssert<S extends AbstractObjectArrayAssert<S,T>,T[]>
this
assertion object.Copyright © 2013-2015 AssertJ. All Rights Reserved.