Skip to content

Commit d756076

Browse files
committed
fix for numbers
1 parent bc6abc6 commit d756076

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

src/main/java/com/github/javafaker/Number.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ public int randomDigitNotZero() {
2727
* @see Number#numberBetween(long, long)
2828
*/
2929
public int numberBetween(int min, int max) {
30-
return decimalBetween(min,max).setScale(0, BigDecimal.ROUND_HALF_DOWN).intValue();
30+
if (min == max) return min;
31+
32+
int value = decimalBetween(min,max).setScale(0, BigDecimal.ROUND_HALF_DOWN).intValue();
33+
return value == max ? value - 1 : value;
3134
}
3235

3336
/**
@@ -39,7 +42,10 @@ public int numberBetween(int min, int max) {
3942
* @param max exclusive (unless min == max)
4043
*/
4144
public long numberBetween(long min, long max) {
42-
return decimalBetween(min,max).setScale(0, BigDecimal.ROUND_HALF_DOWN).longValue();
45+
if (min == max) return min;
46+
47+
long value = decimalBetween(min, max).setScale(0, BigDecimal.ROUND_HALF_DOWN).longValue();
48+
return value == max ? value - 1 : value;
4349
}
4450

4551
/**

src/test/java/com/github/javafaker/FakerTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.javafaker;
22

3+
import com.github.javafaker.repeating.Repeat;
34
import org.junit.Test;
45

56
import java.util.Locale;
@@ -133,6 +134,12 @@ public void expression() {
133134
assertThat(faker.expression("#{color.name}"), matchesRegularExpression("[a-z\\s]+"));
134135
}
135136

137+
@Test
138+
@Repeat(times = 100)
139+
public void numberBetweenRepeated() {
140+
assertThat(faker.expression("#{number.number_between '1','10'}"), matchesRegularExpression("[1-9]"));
141+
}
142+
136143
@Test
137144
public void regexifyShouldGenerateSameValueForFakerWithSameSeed() {
138145
long seed = 1L;

src/test/java/com/github/javafaker/NumberTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.javafaker;
22

3+
import com.github.javafaker.repeating.Repeat;
34
import com.google.common.base.Function;
45
import com.google.common.collect.Lists;
56
import com.google.common.collect.Sets;
@@ -120,6 +121,26 @@ public void testNumberBetween() {
120121
assertThat(v1, is(lessThan(980000000L)));
121122
}
122123

124+
@Test
125+
@Repeat(times = 100)
126+
public void testLongNumberBetweenRepeated() {
127+
long low = 1;
128+
long high = 10;
129+
long v = faker.number().numberBetween(low, high);
130+
assertThat(v, is(lessThan(high)));
131+
assertThat(v, is(greaterThanOrEqualTo(low)));
132+
}
133+
134+
@Test
135+
@Repeat(times = 100)
136+
public void testIntNumberBetweenRepeated() {
137+
int low = 1;
138+
int high = 10;
139+
int v = faker.number().numberBetween(low, high);
140+
assertThat(v, is(lessThan(high)));
141+
assertThat(v, is(greaterThanOrEqualTo(low)));
142+
}
143+
123144
@Test
124145
public void testNumberBetweenOneAndThree() {
125146
Set<Integer> nums = Sets.newHashSet();

0 commit comments

Comments
 (0)