S - the "self" type of this assertion class. Please read "Emulating 'self types' using Java Generics to simplify fluent API
implementation"
for more details.A - the type of the "actual" value.T - the type of elements of the "actual" value.public abstract class AbstractIterableAssert<S extends AbstractIterableAssert<S,A,T>,A extends Iterable<T>,T> extends AbstractAssert<S,A> implements ObjectEnumerableAssert<S,T>
ObjectEnumerableAssert whose actual value type is
Collection.actual, info, myself| Modifier | Constructor and Description |
|---|---|
protected |
AbstractIterableAssert(A 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 |
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 |
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
containsExactly(Object[]) but handle the Iterable to array conversion. |
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 |
containsOnlyOnce(T... values)
Verifies that the actual array 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... sequence)
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 |
doesNotContainAnyElementsOf(Iterable<? extends T> iterable)
Verifies that the actual group 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 each element value does not 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.
|
ListAssert<Tuple> |
extracting(String... propertiesOrFields)
Extract the values of given fields/properties from the Iterable's elements under test into a new Iterable composed
of Tuple (a simple data structure), this new Iterable becoming the Iterable under test.
|
ListAssert<Object> |
extracting(String propertyOrField)
Extract the values of given field or property from the Iterable's elements under test into a new Iterable, this
new
Iterable becoming the Iterable under test.
|
<P> ListAssert<P> |
extracting(String propertyOrField,
Class<P> extractingType)
Extract the values of given field or property from the Iterable's elements under test into a new Iterable, this
new
Iterable becoming the Iterable under test.
|
ListAssert<Object> |
extractingResultOf(String method)
Extract the result of given method invocation on the Iterable's elements under test into a new Iterable, this new
Iterable becoming the Iterable under test.
|
<P> ListAssert<P> |
extractingResultOf(String method,
Class<P> extractedType)
Extract the result of given method invocation on the Iterable's elements under test into a new list of the given
class, this new List becoming the object under test.
|
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 each element value satisfies the given condition
|
S |
haveAtLeast(int times,
Condition<? super T> condition)
This method is an alias for
ObjectEnumerableAssert.areAtLeast(int, Condition). |
S |
haveAtMost(int times,
Condition<? super T> condition)
This method is an alias
ObjectEnumerableAssert.areAtMost(int, Condition). |
S |
haveExactly(int times,
Condition<? super T> condition)
This method is an alias
ObjectEnumerableAssert.areExactly(int, Condition). |
S |
inBinary()
Enable binary representation of Iterable elements instead of standard representation in error messages.
|
S |
inHexadecimal()
Enable hexadecimal representation of Iterable elements instead of standard 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 |
isSubsetOf(Iterable<? extends T> values)
Verifies that all the elements of the actual
Iterable 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.
|
protected S |
usingComparisonStrategy(ComparisonStrategy comparisonStrategy) |
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. |
S |
usingElementComparatorIgnoringFields(String... fields)
Use field by field comparison on all fields except for the given ones
(inherited fields are taken into account)
instead of relying on actual type A
equals method to compare group elements
for incoming assertion checks. |
S |
usingElementComparatorOnFields(String... fields)
Use field by field comparison on the given fields only (fields can be inherited fields)
instead of relying on actual type A
equals method to compare group elements
for incoming assertion checks. |
S |
usingFieldByFieldElementComparator()
Use field by field comparison (including inherited fields) instead of relying
on actual type A
equals method to compare group elements
for incoming assertion checks. |
as, as, 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, usingDefaultComparatorpublic void isNullOrEmpty()
null or empty.isNullOrEmpty in interface EnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>public void isEmpty()
isEmpty in interface EnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>public S isNotEmpty()
isNotEmpty in interface EnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>this assertion object.public S hasSize(int expected)
hasSize in interface EnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>expected - the expected number of values in the actual group.this assertion object.public S hasSameSizeAs(Object other)
hasSameSizeAs in interface EnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>other - the array to compare size with actual group.this assertion object.public S hasSameSizeAs(Iterable<?> other)
Iterable.hasSameSizeAs in interface EnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>other - the Iterable to compare size with actual group.this assertion object.public S contains(T... values)
contains in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>values - the given values.this assertion object.public S containsOnly(T... values)
containsOnly in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>values - the given values.this assertion object.public S containsOnlyOnce(T... values)
Examples :
// assertion will pass
assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("winter");
assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("coming", "winter");
// assertions will fail
assertThat(newArrayList("Aria", "Stark", "daughter", "of", "Ned", "Stark")).containsOnlyOnce("Stark");
assertThat(newArrayList("winter", "is", "coming")).containsOnlyOnce("Lannister");
assertThat(newArrayList("Aria", "Stark", "daughter", "of", "Ned", "Stark")).containsOnlyOnce("Stark", "Lannister", "Aria");
containsOnlyOnce in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>values - the given values.this assertion object.public S containsExactly(T... values)
HashSet, prefer ObjectEnumerableAssert.containsOnly(Object...) in that case).
Example :
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<S extends AbstractIterableAssert<S,A,T>,T>values - the given values.this assertion object.public S isSubsetOf(Iterable<? extends T> values)
Iterable are present in the given Iterable.values - the Iterable that should contain all actual elements.AssertionError - if the actual Iterable is null.NullPointerException - if the given Iterable is null.AssertionError - if the actual Iterable is not subset of set Iterable.public S containsSequence(T... sequence)
Example: Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya); // assertion will pass assertThat(elvesRings).containsSequence(vilya, nenya); // assertion will fail assertThat(elvesRings).containsSequence(vilya, narya); assertThat(elvesRings).containsSequence(nenya, vilya);
containsSequence in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>sequence - the sequence of objects to look for.public S containsSubsequence(T... sequence)
Example: Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya); // assertion will pass assertThat(elvesRings).containsSubsequence(vilya, nenya); assertThat(elvesRings).containsSubsequence(vilya, narya); // assertion will fail assertThat(elvesRings).containsSubsequence(nenya, vilya);
containsSubsequence in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>sequence - the sequence of objects to look for.public S doesNotContain(T... values)
ObjectEnumerableAssertdoesNotContain in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>values - the given values.this assertion object.public S doesNotContainAnyElementsOf(Iterable<? extends T> iterable)
Iterable (i.e. none).
// this assertion succeeds :
List<String> actual = newArrayList("GIT", "CVS", "SOURCESAFE");
List<String> values = newArrayList("git", "cvs", "subversion");
assertThat(actual).doesNotContainAnyElementsOf(values);
// This one fails :
List<String> actual = newArrayList("GIT", "cvs", "SOURCESAFE");
List<String> values = newArrayList("git", "cvs", "subversion");
assertThat(actual).doesNotContainAnyElementsOf(values);
iterable - the given Iterablethis assertion object.NullPointerException - if the given argument is null.IllegalArgumentException - if the given argument is an empty iterable.AssertionError - if the actual group is null.AssertionError - if the actual group contains some elements of the given Iterable.public S doesNotHaveDuplicates()
doesNotHaveDuplicates in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,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.startsWith in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,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.endsWith in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>sequence - the sequence of objects to look for.public S containsNull()
containsNull in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>this assertion object.public S doesNotContainNull()
doesNotContainNull in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>this assertion object.public S are(Condition<? super T> condition)
are in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>condition - the given condition.this object.public S areNot(Condition<? super T> condition)
areNot in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>condition - the given condition.this object.public S have(Condition<? super T> condition)
have in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>condition - the given condition.this object.public S doNotHave(Condition<? super T> condition)
doNotHave in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>condition - the given condition.this object.public S areAtLeast(int times, Condition<? super T> condition)
areAtLeast in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>times - the minimum number of times the condition should be verified.condition - the given condition.this object.public S areAtMost(int times, Condition<? super T> condition)
areAtMost in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,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)
areExactly in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>times - the exact number of times the condition should be verified.condition - the given condition.this object.public S haveAtLeast(int times, Condition<? super T> condition)
ObjectEnumerableAssert.areAtLeast(int, Condition).haveAtLeast in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>public S haveAtMost(int times, Condition<? super T> condition)
ObjectEnumerableAssert.areAtMost(int, Condition).haveAtMost in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>public S haveExactly(int times, Condition<? super T> condition)
ObjectEnumerableAssert.areExactly(int, Condition).haveExactly in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>public S containsAll(Iterable<? extends T> iterable)
Iterable, in any order.containsAll in interface ObjectEnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>iterable - the given Iterable we will get elements from.this assertion object.public S usingElementComparator(Comparator<? super T> customComparator)
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<S extends AbstractIterableAssert<S,A,T>,T>customComparator - the comparator to use for incoming assertion checks.this assertion object.public S usingDefaultElementComparator()
This method should be used to disable a custom comparison strategy set by calling EnumerableAssert.usingElementComparator(Comparator).
usingDefaultElementComparator in interface EnumerableAssert<S extends AbstractIterableAssert<S,A,T>,T>this assertion object.public ListAssert<Object> extracting(String propertyOrField)
// 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));
// let's verify the names of TolkienCharacter in fellowshipOfTheRing :
assertThat(fellowshipOfTheRing).extracting("name")
.contains("Boromir", "Gandalf", "Frodo")
.doesNotContain("Sauron", "Elrond");
// you can extract nested property/field like the name of Race :
assertThat(fellowshipOfTheRing).extracting("race.name")
.contains("Hobbit", "Elf")
.doesNotContain("Orc");
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 Iterable
under
test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted values
order.propertyOrField - the property/field to extract from the Iterable under testIntrospectionError - if no field or property exists with the given name (or field exists but is not public)
in one of the initial Iterable's element.public ListAssert<Object> extractingResultOf(String method)
// Build a array of WesterosHouse, a WesterosHouse has a method: public String sayTheWords()
List<WesterosHouse> greatHouses = new ArrayList<WesterosHouse>();
greatHouses.add(new WesterosHouse("Stark", "Winter is Comming"));
greatHouses.add(new WesterosHouse("Lannister", "Hear Me Roar!"));
greatHouses.add(new WesterosHouse("Greyjoy", "We Do Not Sow"));
greatHouses.add(new WesterosHouse("Baratheon", "Our is the Fury"));
greatHouses.add(new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"));
greatHouses.add(new WesterosHouse("Tyrell", "Growing Strong"));
// let's verify the words of great houses in Westeros:
assertThat(greatHouses).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:
HashSet, you won't be able to make any assumptions on the extracted results
order.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> ListAssert<P> extractingResultOf(String method, Class<P> extractedType)
// Build a array of WesterosHouse, a WesterosHouse has a method: public String sayTheWords()
List<WesterosHouse> greatHouses = new ArrayList<WesterosHouse>();
greatHouses.add(new WesterosHouse("Stark", "Winter is Comming"));
greatHouses.add(new WesterosHouse("Lannister", "Hear Me Roar!"));
greatHouses.add(new WesterosHouse("Greyjoy", "We Do Not Sow"));
greatHouses.add(new WesterosHouse("Baratheon", "Our is the Fury"));
greatHouses.add(new WesterosHouse("Martell", "Unbowed, Unbent, Unbroken"));
greatHouses.add(new WesterosHouse("Tyrell", "Growing Strong"));
// let's verify the words of great houses in Westeros:
assertThat(greatHouses).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:
HashSet, you won't be able to make any assumptions of the extracted
values order.method - the name of the method which result is to be extracted from the array under testextractedType - type of element of the extracted ListIllegalArgumentException - if no method exists with the given name, or method is not public,
or method does return void or method accepts arguments.public <P> ListAssert<P> extracting(String propertyOrField, Class<P> extractingType)
// 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));
// let's verify the names of TolkienCharacter in fellowshipOfTheRing :
assertThat(fellowshipOfTheRing).extracting("name", String.class)
.contains("Boromir", "Gandalf", "Frodo")
.doesNotContain("Sauron", "Elrond");
// you can extract nested property/field like the name of Race :
assertThat(fellowshipOfTheRing).extracting("race.name", String.class)
.contains("Hobbit", "Elf")
.doesNotContain("Orc");
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 Iterable
under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted
values order.propertyOrField - the property/field to extract from the Iterable under testextractingType - type to returnIntrospectionError - if no field or property exists with the given name (or field exists but is not public)
in one of the initial Iterable's element.public ListAssert<Tuple> extracting(String... propertiesOrFields)
// 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));
// 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 does'nt 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 Iterable
under test, for example if it's a HashSet, you won't be able to make any assumptions on the extracted
values order.propertiesOrFields - the properties/fields to extract from the initial Iterable 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 S containsExactlyElementsOf(Iterable<? extends T> iterable)
containsExactly(Object[]) but handle the Iterable to array conversion.
Example :
Iterable<Ring> elvesRings = newArrayList(vilya, nenya, narya); // assertion will pass assertThat(elvesRings).containsExactly(newLinkedList(vilya, nenya, narya)); // assertion will fail as actual and expected orders differ. assertThat(elvesRings).containsExactly(newLinkedList(nenya, vilya, narya));
iterable - the given Iterable we will get elements from.public S usingFieldByFieldElementComparator()
equals method to compare group elements
for incoming assertion checks.
This can be handy if equals implementation of objects to compare does not suit you.
Note that only accessible fields values are compared, accessible fields include directly accessible fields (e.g. public) or fields with an accessible getter.
Example:
TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
TolkienCharacter frodoClone = new TolkienCharacter("Frodo", 33, HOBBIT);
// Fail if equals has not been overriden in TolkienCharacter as equals default implementation only compares references
assertThat(newArrayList(frodo)).contains(frodoClone);
// frodo and frodoClone are equals when doing a field by field comparison.
assertThat(newArrayList(frodo)).usingFieldByFieldElementComparator().contains(frodoClone);
this assertion object.public S usingElementComparatorOnFields(String... fields)
equals method to compare group elements
for incoming assertion checks.
This can be handy if equals implementation of objects to compare does not suit you.
Note that only accessible fields values are compared, accessible fields include directly accessible fields (e.g. public) or fields with an accessible getter.
Example:
TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
TolkienCharacter sam = new TolkienCharacter("Sam", 38, HOBBIT);
// frodo and sam both are hobbits, so they are equals when comparing only race
assertThat(newArrayList(frodo)).usingElementComparatorOnFields("race").contains(sam); // OK
// ... but not when comparing both name and race
assertThat(newArrayList(frodo)).usingElementComparatorOnFields("name", "race").contains(sam); // FAIL
this assertion object.protected S usingComparisonStrategy(ComparisonStrategy comparisonStrategy)
public S usingElementComparatorIgnoringFields(String... fields)
equals method to compare group elements
for incoming assertion checks.
This can be handy if equals implementation of objects to compare does not suit you.
Note that only accessible fields values are compared, accessible fields include directly accessible fields (e.g. public) or fields with an accessible getter.
Example:
TolkienCharacter frodo = new TolkienCharacter("Frodo", 33, HOBBIT);
TolkienCharacter sam = new TolkienCharacter("Sam", 38, HOBBIT);
// frodo and sam both are hobbits, so they are equals when comparing only race (i.e. ignoring all other fields)
assertThat(newArrayList(frodo)).usingElementComparatorIgnoringFields("name", "age").contains(sam); // OK
// ... but not when comparing both name and race
assertThat(newArrayList(frodo)).usingElementComparatorIgnoringFields("age").contains(sam); // FAIL
this assertion object.public S inHexadecimal()
final ListWith standard error message:bytes = newArrayList((byte)0x10, (byte) 0x20);
assertThat(bytes).contains((byte)0x30); Expecting: <[16, 32]> to contain: <[48]> but could not find: <[48]>With Hexadecimal error message:
assertThat(bytes).inHexadecimal().contains((byte)0x30); Expecting: <[0x10, 0x20]> to contain: <[0x30]> but could not find: <[0x30]>
inHexadecimal in class AbstractAssert<S extends AbstractIterableAssert<S,A,T>,A extends Iterable<T>>this assertion object.public S inBinary()
final ListWith standard error message:bytes = newArrayList((byte)0x10, (byte) 0x20);
assertThat(bytes).contains((byte)0x30); Expecting: <[16, 32]> to contain: <[48]> but could not find: <[48]>With binary error message:
assertThat(bytes).inBinary().contains((byte)0x30); Expecting: <[0b00010000, 0b00100000]> to contain: <[0b00110000]> but could not find: <[0b00110000]>
inBinary in class AbstractAssert<S extends AbstractIterableAssert<S,A,T>,A extends Iterable<T>>this assertion object.Copyright © 2013-2014 AssertJ. All Rights Reserved.