serpro69 / kotlin-faker

Port of a popular ruby faker gem written in kotlin. Generate realistically looking fake data such as names, addresses, banking details, and many more, that can be used for testing and data anonymization purposes.
https://serpro69.github.io/kotlin-faker/
MIT License
468 stars 41 forks source link

IllegalArgumentException thrown for empty list parameter values #160

Closed serpro69 closed 1 year ago

serpro69 commented 1 year ago

https://github.com/serpro69/kotlin-faker/blob/41a2397779a14149a1c4fcb2e39a05fa2b660ce9/core/src/main/resources/locales/uk.yml#L19-L20

address("uk").cityPrefix() throws an error:

java.lang.IllegalArgumentException: bound must be positive
    at java.util.Random.nextInt(Random.java:388)
    at io.github.serpro69.kfaker.RandomService.nextInt(RandomService.kt:38)
    at io.github.serpro69.kfaker.RandomService.randomValue(RandomService.kt:60)
    at io.github.serpro69.kfaker.FakerService.getRawValue-DOu9s8A(FakerService.kt:307)
    at io.github.serpro69.kfaker.FakerService.resolve(FakerService.kt:401)
    at io.github.serpro69.kfaker.provider.YamlFakeDataProvider$returnOrResolveUnique$result$1.invoke(YamlFakeDataProvider.kt:111)
    at io.github.serpro69.kfaker.provider.YamlFakeDataProvider$returnOrResolveUnique$result$1.invoke(YamlFakeDataProvider.kt:105)
    at io.github.serpro69.kfaker.provider.AbstractFakeDataProvider.resolveUniqueValue(AbstractFakeDataProvider.kt:61)
    at io.github.serpro69.kfaker.provider.AbstractFakeDataProvider.resolveUniqueValue(AbstractFakeDataProvider.kt:48)
    at io.github.serpro69.kfaker.provider.YamlFakeDataProvider.returnOrResolveUnique(YamlFakeDataProvider.kt:115)
    at io.github.serpro69.kfaker.provider.YamlFakeDataProvider.returnOrResolveUnique$default(YamlFakeDataProvider.kt:100)
    at io.github.serpro69.kfaker.provider.YamlFakeDataProvider.resolve(YamlFakeDataProvider.kt:62)
    at io.github.serpro69.kfaker.provider.Address.cityPrefix(Address.kt:21)

This seems to be mostly locale-specific so I guess it's OK to return an empty string for such cases.