Hamcrest number comparison using between
Is there a way in Hamcrest to compare a number within a number range? I am looking for something like this:
assertThat(50L, is(between(12L, 1658L)));
An alternative to Jeff's solution is to use both
:
assertThat(50L, is(both(greaterThan(12L)).and(lessThan(1658L))));
I think that's quite readable. You also get a good error message in case the check failed:
Expected: is (a value greater than <50L> and a value less than <1658L>) got: <50L>
I don't believe between
is part of the core hamcrest matchers, but you could do something like this:
assertThat(number, allOf(greaterThan(min),lessThan(max)));
That's still a little ugly, so you could create a helper method between
assertThat(number, between(min,max))
and between
looks like
allOf(greaterThan(min),lessThan(max))
Still not a fantastic solution, but it reads like a hamcrest matcher.
If you can't find one that's publicly available, it would be trivial to write your own between
matcher http://code.google.com/p/hamcrest/wiki/Tutorial.