KT-20357: Add a sample for requireNotNull

This commit is contained in:
Yuya Urano
2020-10-30 08:15:48 +09:00
committed by GitHub
parent 2b03c10941
commit 18672c99ca
2 changed files with 26 additions and 1 deletions
@@ -27,6 +27,31 @@ class Preconditions {
assertPrints(getIndices(3), "[1, 2, 3]")
}
@Sample
fun failRequireNotNullWithLazyMessage() {
fun printRequiredParam(params: Map<String, String?>) {
val required: String = requireNotNull(params["required"]) { "Required value must be non-null" } // returns a non-null value
println(required)
// ...
}
fun printRequiredParamByUpperCase(params: Map<String, String?>) {
val requiredParam: String? = params["required"]
requireNotNull(requiredParam) { "Required value must be non-null" }
// now requiredParam is smartcast to String so that it is unnecessary to use the safe call(?.)
println(requiredParam.toUpperCase())
}
val params: MutableMap<String, String?> = mutableMapOf("required" to null)
assertFailsWith<IllegalArgumentException> { printRequiredParam(params) }
assertFailsWith<IllegalArgumentException> { printRequiredParamByUpperCase(params) }
params["required"] = "non-empty-param"
printRequiredParam(params) // prints "non-empty-param"
printRequiredParamByUpperCase(params) // prints "NON-EMPTY-PARAM"
}
@Sample
fun failCheckWithLazyMessage() {