Class Filters<E>
- Type Parameters:
E- the type of element of group to filter.
Iterable or array according to the specified filter criteria.
Filter criteria can be expressed either by a Condition or a pseudo filter language on elements properties.
With fluent filter language on element properties/fields :
assertThat(filter(players).with("pointsPerGame").greaterThan(20)
.and("assistsPerGame").greaterThan(7).get())
.containsOnly(james, rose);
With Condition :
List<Player> players = ...;
Condition<Player> potentialMVP = new Condition<Player>("is a possible MVP"){
public boolean matches(Player player) {
return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7;
};
};
// use filter static method to build Filters
assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose);- Author:
- Joel Costigliola, Mikhail Mazursky
-
Method Summary
Modifier and TypeMethodDescriptionAlias ofwith(String)for synthetic sugar to write things like :Filter the underlying group, keeping only elements satisfying the givenCondition.
Same ashaving(Condition)- pick the method you prefer to have the most readable code.Filters the underlying iterable to keep object with property (specified bywith(String)) equals to given value.static <E> Filters<E> filter(E[] array) Creates a newwith the array to filter.Filtersstatic <E> Filters<E> get()Returns the resulting filtered Iterable<E> (even if the constructor parameter type was an array).Filter the underlying group, keeping only elements satisfying the givenCondition.
Same asbeing(Condition)- pick the method you prefer to have the most readable code.Filters the underlying iterable to keep object with property (specified bywith(String)) equals to one of the given values.notEqualsTo(Object propertyValue) Filters the underlying iterable to keep object with property (specified bywith(String)) not equals to given value.Filters the underlying iterable to keep object with property (specified bywith(String)) not in the given values.Sets the name of the property used for filtering, it may be a nested property like"address.street.name".Filter the underlying group, keeping only elements with a property equals to given value.
-
Method Details
-
filter
Creates a newwith theFiltersIterableto filter.Chain this call to express filter criteria either by a
Conditionor a pseudo filter language on elements properties or fields (reading private fields is supported but disabled by callingAssertions.setAllowExtractingPrivateFields(false).Note that the given
Iterableis not modified, the filters are performed on a copy.With fluent filter language on element properties/fields :
WithList<Player> players = ...; assertThat(filter(players).with("pointsPerGame").greaterThan(20) .and("assistsPerGame").greaterThan(7).get()) .containsOnly(james, rose);Condition:public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose);- Type Parameters:
E- the iterable elements type.- Parameters:
iterable- theIterableto filter.- Returns:
- the created
.Filters - Throws:
NullPointerException- if the given iterable isnull.
-
filter
Creates a newwith the array to filter.FiltersChain this call to express filter criteria either by a
Conditionor a pseudo filter language on elements properties.Note that the given array is not modified, the filters are performed on an
Iterablecopy of the array.With
Condition:
WithPlayer[] players = ...; assertThat(filter(players).with("pointsPerGame").greaterThan(20) .and("assistsPerGame").greaterThan(7).get()) .containsOnly(james, rose);Condition:Condition<Player> potentialMVP = new Condition<Player>("is a possible MVP"){ public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose);- Type Parameters:
E- the array elements type.- Parameters:
array- the array to filter.- Returns:
- the created
.Filters - Throws:
NullPointerException- if the given array isnull.
-
being
Filter the underlying group, keeping only elements satisfying the givenCondition.
Same ashaving(Condition)- pick the method you prefer to have the most readable code.List<Player> players = ...; Condition<Player> potentialMVP = new Condition<Player>("is a possible MVP") { public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose);- Parameters:
condition- the filterCondition.- Returns:
- this
Filtersto chain other filter operations. - Throws:
IllegalArgumentException- if the given condition isnull.
-
having
Filter the underlying group, keeping only elements satisfying the givenCondition.
Same asbeing(Condition)- pick the method you prefer to have the most readable code.List<Player> players = ...; Condition<Player> mvpStats = new Condition<Player>("is a possible MVP") { public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).having(mvpStats).get()).containsOnly(james, rose);- Parameters:
condition- the filterCondition.- Returns:
- this
Filtersto chain other filter operations. - Throws:
IllegalArgumentException- if the given condition isnull.
-
with
Filter the underlying group, keeping only elements with a property equals to given value.Let's, for example, filter Employees with name "Alex" :
which is shortcut of :filter(employees).with("name", "Alex").get();filter(employees).with("name").equalsTo("Alex").get();- Parameters:
propertyOrFieldName- the name of the property/field whose value will compared to given value. It may be a nested property.propertyValue- the expected property value.- Returns:
- this
Filtersto chain other filter operations. - Throws:
IntrospectionError- if an element in the givenIterabledoes not have a property with a given propertyOrFieldName.IllegalArgumentException- if the given propertyOrFieldName isnull.
-
with
Sets the name of the property used for filtering, it may be a nested property like"address.street.name".The typical usage is to chain this call with a comparison method, for example :
filter(employees).with("name").equalsTo("Alex").get();- Parameters:
propertyOrFieldName- the name of the property/field used for filtering. It may be a nested property.- Returns:
- this
Filtersto chain other filter operation. - Throws:
IllegalArgumentException- if the given propertyOrFieldName isnull.
-
and
Alias ofwith(String)for synthetic sugar to write things like :filter(employees).with("name").equalsTo("Alex").and("job").notEqualsTo("lawyer").get();- Parameters:
propertyOrFieldName- the name of the property/field used for filtering. It may be a nested property.- Returns:
- this
Filtersto chain other filter operation. - Throws:
IllegalArgumentException- if the given propertyOrFieldName isnull.
-
equalsTo
Filters the underlying iterable to keep object with property (specified bywith(String)) equals to given value.Typical usage :
filter(employees).with("name").equalsTo("Luke").get();- Parameters:
propertyValue- the filter value.- Returns:
- this
Filtersto chain other filter operation. - Throws:
IllegalArgumentException- if the property name to filter on has not been set.
-
notEqualsTo
Filters the underlying iterable to keep object with property (specified bywith(String)) not equals to given value.Typical usage :
filter(employees).with("name").notEqualsTo("Vader").get();- Parameters:
propertyValue- the filter value.- Returns:
- this
Filtersto chain other filter operation. - Throws:
IllegalArgumentException- if the property name to filter on has not been set.
-
in
Filters the underlying iterable to keep object with property (specified bywith(String)) equals to one of the given values.Typical usage :
filter(players).with("team").in("Bulls", "Lakers").get();- Parameters:
propertyValues- the filter values.- Returns:
- this
Filtersto chain other filter operation. - Throws:
IllegalArgumentException- if the property name to filter on has not been set.
-
notIn
Filters the underlying iterable to keep object with property (specified bywith(String)) not in the given values.Typical usage :
filter(players).with("team").notIn("Heat", "Lakers").get();- Parameters:
propertyValues- the filter values.- Returns:
- this
Filtersto chain other filter operation. - Throws:
IllegalArgumentException- if the property name to filter on has not been set.
-
get
Returns the resulting filtered Iterable<E> (even if the constructor parameter type was an array).- Returns:
- the Iterable<E> containing the filtered elements.
-