Skip to content

Commit

Permalink
#478 created convenience classes/constructors for int, long and char …
Browse files Browse the repository at this point in the history
…ranges.
  • Loading branch information
svendiedrichsen committed Dec 1, 2017
1 parent c97a94d commit ee25eb7
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 8 deletions.
84 changes: 84 additions & 0 deletions src/main/java/org/cactoos/iterable/RangeOf.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,88 @@ public RangeOf(final T min, final T max, final Func<T, T> incrementor) {
);
}

/**
* Implements an integer range.
*/
public static class Integer extends RangeOf<java.lang.Integer> {
/**
* Ctor.
* @param min Minimum integer value.
* @param max Maximum integer value.
* @param incrementor Increments the integer value.
*/
public Integer(
final java.lang.Integer min,
final java.lang.Integer max,
final Func<java.lang.Integer, java.lang.Integer> incrementor) {
super(min, max, incrementor);
}
/**
* Ctor. Uses a default increment of 1.
* @param min Minimum integer value.
* @param max Maximum integer value.
*/
public Integer(
final java.lang.Integer min,
final java.lang.Integer max) {
super(min, max, value -> ++value);
}
}

/**
* Implements an long range.
*/
public static class Long extends RangeOf<java.lang.Long> {
/**
* Ctor.
* @param min Minimum long value.
* @param max Maximum long value.
* @param incrementor Increments the long value.
*/
public Long(
final java.lang.Long min,
final java.lang.Long max,
final Func<java.lang.Long, java.lang.Long> incrementor) {
super(min, max, incrementor);
}
/**
* Ctor. Uses a default increment of 1.
* @param min Minimum long value.
* @param max Maximum long value.
*/
public Long(
final java.lang.Long min,
final java.lang.Long max) {
super(min, max, value -> ++value);
}
}

/**
* Implements an character range.
*/
public static class Character extends RangeOf<java.lang.Character> {
/**
* Ctor.
* @param min Minimum character value.
* @param max Maximum character value.
* @param incrementor Increments the character value.
*/
public Character(
final java.lang.Character min,
final java.lang.Character max,
final Func<java.lang.Character, java.lang.Character> incrementor) {
super(min, max, incrementor);
}
/**
* Ctor. Uses a default increment of 1.
* @param min Minimum character value.
* @param max Maximum character value.
*/
public Character(
final java.lang.Character min,
final java.lang.Character max) {
super(min, max, value -> ++value);
}
}

}
16 changes: 8 additions & 8 deletions src/test/java/org/cactoos/iterable/RangeOfTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,20 +46,20 @@ public final void testIntegerRange() {
MatcherAssert.assertThat(
"Can't generate a range of integers",
new CollectionOf<>(
new RangeOf<>(1, 5, input -> ++input)
new RangeOf.Integer(1, 5)
),
Matchers.contains(1, 2, 3, 4, 5)
);
}

@Test(expected = NullPointerException.class)
public final void testIntegerEmptyRange() {
@Test
public final void testLongRange() {
MatcherAssert.assertThat(
"Can't generate an empty range of integers",
"Can't generate a range of long",
new CollectionOf<>(
new RangeOf<Integer>(null, null, null)
new RangeOf.Long(1L, 5L)
),
Matchers.empty()
Matchers.contains(1L, 2L, 3L, 4L, 5L)
);
}

Expand All @@ -68,14 +68,14 @@ public final void testCharacterRange() {
MatcherAssert.assertThat(
"Can't generate a range of characters",
new CollectionOf<>(
new RangeOf<>('a', 'c', value -> ++value)
new RangeOf.Character('a', 'c')
),
Matchers.contains('a', 'b', 'c')
);
}

@Test
public final void testLocalDateRange() throws Exception {
public final void testLocalDateRange() {
MatcherAssert.assertThat(
"Can't generate a range of local dates.",
new CollectionOf<>(
Expand Down

0 comments on commit ee25eb7

Please sign in to comment.