Fix incorrect range transform in nextUInt/nextULong with range parameter
#KT-25570
This commit is contained in:
@@ -374,7 +374,7 @@ public fun Random.nextUInt(origin: UInt, bound: UInt): UInt {
|
|||||||
public fun Random.nextUInt(range: UIntRange): UInt = when {
|
public fun Random.nextUInt(range: UIntRange): UInt = when {
|
||||||
range.isEmpty() -> throw IllegalArgumentException("Cannot get random in empty range: $range")
|
range.isEmpty() -> throw IllegalArgumentException("Cannot get random in empty range: $range")
|
||||||
range.last < UInt.MAX_VALUE -> nextUInt(range.first, range.last + 1u)
|
range.last < UInt.MAX_VALUE -> nextUInt(range.first, range.last + 1u)
|
||||||
range.first > UInt.MIN_VALUE -> nextUInt(range.first, range.last + 1u)
|
range.first > UInt.MIN_VALUE -> nextUInt(range.first - 1u, range.last) + 1u
|
||||||
else -> nextUInt()
|
else -> nextUInt()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -430,7 +430,7 @@ public fun Random.nextULong(origin: ULong, bound: ULong): ULong {
|
|||||||
public fun Random.nextULong(range: ULongRange): ULong = when {
|
public fun Random.nextULong(range: ULongRange): ULong = when {
|
||||||
range.isEmpty() -> throw IllegalArgumentException("Cannot get random in empty range: $range")
|
range.isEmpty() -> throw IllegalArgumentException("Cannot get random in empty range: $range")
|
||||||
range.last < ULong.MAX_VALUE -> nextULong(range.first, range.last + 1u)
|
range.last < ULong.MAX_VALUE -> nextULong(range.first, range.last + 1u)
|
||||||
range.first > ULong.MIN_VALUE -> nextULong(range.first, range.last + 1u)
|
range.first > ULong.MIN_VALUE -> nextULong(range.first - 1u, range.last) + 1u
|
||||||
else -> nextULong()
|
else -> nextULong()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -180,6 +180,7 @@ abstract class RandomSmokeTest {
|
|||||||
(1u..5u),
|
(1u..5u),
|
||||||
(0u..31u),
|
(0u..31u),
|
||||||
(0u..UInt.MAX_VALUE - 1u),
|
(0u..UInt.MAX_VALUE - 1u),
|
||||||
|
(1u..UInt.MAX_VALUE),
|
||||||
(0u..UInt.MAX_VALUE)
|
(0u..UInt.MAX_VALUE)
|
||||||
)) {
|
)) {
|
||||||
repeat(1000) {
|
repeat(1000) {
|
||||||
@@ -338,6 +339,7 @@ abstract class RandomSmokeTest {
|
|||||||
(1uL..5uL),
|
(1uL..5uL),
|
||||||
(0uL..31uL),
|
(0uL..31uL),
|
||||||
(0uL..(ULong.MAX_VALUE - 1uL)),
|
(0uL..(ULong.MAX_VALUE - 1uL)),
|
||||||
|
(1uL..ULong.MAX_VALUE),
|
||||||
(0uL..ULong.MAX_VALUE)
|
(0uL..ULong.MAX_VALUE)
|
||||||
)) {
|
)) {
|
||||||
repeat(1000) {
|
repeat(1000) {
|
||||||
|
|||||||
Reference in New Issue
Block a user