add performance test

This commit is contained in:
Hai Nguyen 2018-11-13 09:43:13 +08:00
parent a15a0809ec
commit 6557cf2564
1 changed files with 38 additions and 20 deletions

View File

@ -1,52 +1,70 @@
import org.apache.commons.lang3.RandomStringUtils
import org.junit.Before
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import java.security.SecureRandom
import java.util.concurrent.ThreadLocalRandom
import kotlin.experimental.and
import kotlin.streams.asSequence
import kotlin.test.assertEquals
const val STRING_LENGTH = 10;
const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+";
const val STRING_LENGTH = 10
const val ALPHANUMERIC_REGEX = "[a-zA-Z0-9]+"
class RandomStringTest {
@Test
fun generateRandomString_useJava_returnString() {
val charPool = ArrayList<Char>();
val charPool = ArrayList<Char>()
@BeforeEach
fun charPool() {
charPool.addAll('a'..'z');
charPool.addAll('A'..'Z');
charPool.addAll('0'..'9');
}
@Test
fun givenAStringLength_whenUsingJava_thenReturnAlphanumericString() {
var randomString = ThreadLocalRandom.current()
.ints(STRING_LENGTH.toLong(), 0, charPool.size)
.asSequence()
.map(charPool::get)
.joinToString("")
assert(randomString.matches(Regex(ALPHANUMERIC_REGEX)));
assertEquals(STRING_LENGTH, randomString.length);
assert(randomString.matches(Regex(ALPHANUMERIC_REGEX)))
assertEquals(STRING_LENGTH, randomString.length)
}
@Test
fun generateRandomString_useKotlin_returnString() {
val charPool = ArrayList<Char>();
charPool.addAll('a'..'z');
charPool.addAll('A'..'Z');
charPool.addAll('0'..'9');
fun givenAStringLength_whenUsingKotlin_thenReturnAlphanumericString() {
var randomString = (1..STRING_LENGTH).map { i -> kotlin.random.Random.nextInt(0, charPool.size) }
.map(charPool::get)
.joinToString("");
.joinToString("")
assert(randomString.matches(Regex(ALPHANUMERIC_REGEX)));
assertEquals(STRING_LENGTH, randomString.length);
assert(randomString.matches(Regex(ALPHANUMERIC_REGEX)))
assertEquals(STRING_LENGTH, randomString.length)
}
@Test
fun generateRandomString_useApacheCommon_returnString() {
var randomString = RandomStringUtils.randomAlphanumeric(STRING_LENGTH);
fun givenAStringLength_whenUsingApacheCommon_thenReturnAlphanumericString() {
var randomString = RandomStringUtils.randomAlphanumeric(STRING_LENGTH)
assert(randomString.matches(Regex(ALPHANUMERIC_REGEX)));
assertEquals(STRING_LENGTH, randomString.length);
assert(randomString.matches(Regex(ALPHANUMERIC_REGEX)))
assertEquals(STRING_LENGTH, randomString.length)
}
@Test
fun givenAStringLength_whenUsingRandomForBytes_thenReturnAlphanumericString() {
val random = SecureRandom()
val bytes = ByteArray(STRING_LENGTH)
random.nextBytes(bytes)
var randomString = (0..bytes.size - 1).map { i ->
charPool.get((bytes[i] and 0xFF.toByte() and charPool.size.toByte()).toInt())
}.joinToString("")
assert(randomString.matches(Regex(ALPHANUMERIC_REGEX)))
assertEquals(STRING_LENGTH, randomString.length)
}
}