Comments (5)
Yes it does make more sense this way. +1
from javahamcrest.
I agree. And further, should it actually be a Matcher<? extends Iterable<? extends U>>?
(Aarrggh!)
from javahamcrest.
@npryce Strongly disagree!!!
I'm unable to upgrade from 1.3 to 2.x because of this change, since my tests using everyItem
wouldn't compile anymore (using Java 8).
Actually @bjoernpollex misinterpreted the guidelines for wildcard use. See in particular this note:
These guidelines do not apply to a method's return type. Using a wildcard as a return type should be avoided because it forces programmers using the code to deal with wildcards.
Thus everyItem
should keep returning Matcher<Iterable<U>>
. A wildcard was indeed missing, but it should have been added to the item matcher parameter instead. Since the item matcher is in "out" mode (because it will receive items from the iterable), it must be written Matcher<? super U>
.
To sum up, the factory signature should be Matcher<Iterable<U>> everyItem(Matcher<? super U> itemMatcher)
, and the Every
class should extend TypeSafeDiagnosingMatcher<Iterable<T>>
(without wildcard).
(My tests compile again after applying this change)
from javahamcrest.
Just checking the current code and it's public static <U> Matcher<Iterable<? extends U>> everyItem(final Matcher<U> itemMatcher) {
And you and it to be; public static <U> Matcher<Iterable<U>> everyItem(final Matcher<? extends U> itemMatcher) {
from javahamcrest.
Does this solution break #289
from javahamcrest.
Related Issues (20)
- containsInAnyOrder incorrectly identifies differences in identical collections HOT 1
- Hamcrest 3.0? HOT 2
- You should be able to specify a lambda to return a reason
- Conflicting license declarations HOT 1
- Not sure why assertThat() doesn't work in this case HOT 2
- 301 Moved Permanently
- assertThat(this.object, hasProperty("booleanName")) fails to match boolean types and renames the property HOT 1
- The matcher contains() is misleading HOT 2
- FR: Matching maps with various type HOT 1
- oss-fuzz integration
- Participitation in Hacktoberfest?
- HasProperty Matcher doesn't work with Java Records HOT 1
- assertThat(Int::class.java, typeCompatibleWith(Number::class.java)) in kotlin always fails
- hamcrest matching on actual empty list fails with nosuchmethoderror HOT 1
- Test output Alignment
- record version fails the hasProperty HOT 1
- has property fails with non public class.. not sure if this correct as per java standards of property
- Double "close-to" matcher that uses the ULP.
- GraalVM Native Image support HOT 3
- Inquiry about Project Activity and Future Plans HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from javahamcrest.