Coverage Summary for Class: SdkVersionInlineKt (kr.open.library.simple_ui.core.extensions.conditional)

Class Class, % Method, % Branch, % Line, % Instruction, %
SdkVersionInlineKt 100% (1/1) 100% (3/3) 100% (12/12) 100% (8/8) 100% (23/23)


 /**
  * SDK version gating helpers that keep version checks centralized.<br><br>
  * SDK 버전 조건을 한곳에 모아 버전별 분기를 깔끔하게 처리합니다.<br>
  */
 package kr.open.library.simple_ui.core.extensions.conditional
 
 import android.os.Build
 import androidx.annotation.ChecksSdkIntAtLeast
 
 /**
  * Runs [doWork] only when `Build.VERSION.SDK_INT` is at least [ver].<br><br>
  * 현재 SDK 레벨이 [ver] 이상일 때만 [doWork]를 실행합니다.<br>
  *
  * @param ver Minimum SDK level required to run [doWork].<br><br>
  *        [doWork]를 실행하기 위한 최소 SDK 수준입니다.
  * @param doWork Lambda to invoke when the SDK requirement is satisfied.<br><br>
  *        SDK 조건을 만족했을 때 실행할 람다입니다.
  */
 @ChecksSdkIntAtLeast(parameter = 0, lambda = 1)
 public inline fun checkSdkVersion(ver: Int, doWork: () -> Unit) {
     if (Build.VERSION.SDK_INT >= ver) {
         doWork()
     }
 }
 
 /**
  * Returns [doWork] result when `Build.VERSION.SDK_INT` is at least [ver], otherwise null.<br><br>
  * 현재 SDK 레벨이 [ver] 이상이면 [doWork] 결과를 돌려주고, 그렇지 않으면 null을 반환합니다.<br>
  *
  * @param ver Minimum SDK level required to run [doWork].<br><br>
  *        [doWork]를 실행하기 위한 최소 SDK 수준입니다.
  * @param doWork Lambda to invoke once the SDK requirement is satisfied.<br><br>
  *        SDK 조건을 만족했을 때 실행할 람다입니다.
  * @return Result of [doWork] when condition is met, or null when skipped.<br><br>
  *         조건이 충족되면 [doWork] 반환값을, 아니면 null을 돌려줍니다.<br>
  */
 @ChecksSdkIntAtLeast(parameter = 0, lambda = 1)
 public inline fun <T> checkSdkVersion(ver: Int, doWork: () -> T): T? = if (Build.VERSION.SDK_INT >= ver) {
     doWork()
 } else {
     null
 }
 
 /**
  * Chooses between [positiveWork] and [negativeWork] based on the SDK requirement defined by [ver].<br><br>
  * SDK 레벨이 [ver] 이상인지 여부에 따라 [positiveWork] 또는 [negativeWork]를 실행합니다.<br>
  *
  * @param ver Boundary SDK level that decides the branch.<br><br>
  *        분기를 결정하는 기준 SDK 버전입니다.
  * @param positiveWork Action executed when the requirement is met.<br><br>
  *        조건이 충족되었을 때 실행할 동작입니다.
  * @param negativeWork Action executed when the requirement is not met.<br><br>
  *        조건이 충족되지 않았을 때 실행할 동작입니다.
  * @return Result from whichever branch executed.<br><br>
  *         실행된 분기에서 반환된 값을 돌려줍니다.<br>
  */
 @ChecksSdkIntAtLeast(parameter = 0, lambda = 1)
 public inline fun <T> checkSdkVersion(
     ver: Int,
     positiveWork: () -> T,
     negativeWork: (ver: Int) -> T,
 ): T = if (Build.VERSION.SDK_INT >= ver) {
     positiveWork()
 } else {
     negativeWork(ver)
 }