Coverage Summary for Class: PassportRuGeneratorInner (ru.eda.plgn.bizgen.core.generator.impl)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| PassportRuGeneratorInner |
100%
(1/1)
|
100%
(3/3)
|
|
100%
(15/15)
|
100%
(417/417)
|
package ru.eda.plgn.bizgen.core.generator.impl
import ru.eda.plgn.bizgen.core.generator.GeneratorResult
import ru.eda.plgn.bizgen.core.generator.GeneratorResultWithEscape
import ru.eda.plgn.bizgen.core.generator.GeneratorStr
import ru.eda.plgn.bizgen.core.generator.impl.PassportRuGeneratorInner.generatePassportNumber
import ru.eda.plgn.bizgen.core.generator.impl.PassportRuGeneratorInner.generatePassportSeries
import kotlin.random.Random
/**
* Генератор номера паспорта РФ с пробелом.
*
* Формат: «XXXX XXXXXX», где XXXX — серия (код региона ОКАТО + год бланка),
* XXXXXX — номер паспорта.
*
* @author Dmitry_Emelyanenko
*/
class PassportRuSpacedGenerator : GeneratorStr {
override val uniqueDistance: Int = 130
override fun generate(): GeneratorResult<String> =
GeneratorResultWithEscape(data = "${generatePassportSeries()} ${generatePassportNumber()}")
}
/**
* Генератор номера паспорта РФ без пробела.
*
* Формат: «XXXXXXXXXX», где первые 4 цифры — серия (код региона ОКАТО + год бланка),
* остальные 6 — номер паспорта.
*
* @author Dmitry_Emelyanenko
*/
class PassportRuCompactGenerator : GeneratorStr {
override val uniqueDistance: Int = 130
override fun generate(): GeneratorResult<String> =
GeneratorResultWithEscape(data = "${generatePassportSeries()}${generatePassportNumber()}")
}
private object PassportRuGeneratorInner {
private val okatoRegionCodes = listOf(
"01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21",
"22", "23", "24", "25", "26", "27", "28", "29", "30", "31",
"32", "33", "34", "35", "36", "37", "38", "39", "40", "41",
"42", "43", "44", "45", "46", "47", "48", "49", "50", "51",
"52", "53", "54", "55", "56", "57", "58", "59", "60", "61",
"62", "63", "64", "65", "66", "67", "68", "69", "70", "71",
"72", "73", "74", "75", "76", "77", "78", "79", "81", "82",
"83", "84", "86", "89", "91", "92", "99"
)
fun generatePassportSeries(): String {
val regionCode = okatoRegionCodes.random()
val yearCode = "%02d".format(Random.nextInt(14, 27))
return "$regionCode$yearCode"
}
fun generatePassportNumber(): String = "%06d".format(Random.nextInt(0, 1_000_000))
}