feat: 添加 clampExpiryDays 纯函数钳制保质期天数为非负

This commit is contained in:
xfy 2026-06-15 11:24:38 +08:00
parent 8f24706d8c
commit 55d50c3e1d
2 changed files with 40 additions and 0 deletions

View File

@ -745,6 +745,17 @@ private fun ArrowRightIcon(color: Color, modifier: Modifier = Modifier) {
// region Helpers // region Helpers
/**
* 将保质期天数钳制到合法范围 [0, +)
*
* 天数语义上不能为负(到期日不应早于生产日期)
* 无论来自天数输入框还是日期选择器,写入 [ExpiryRow.days] 前都应经过此函数
*
* @param days 原始天数
* @return 钳制后的天数,最小为 0
*/
fun clampExpiryDays(days: Int): Int = days.coerceAtLeast(0)
private fun LocalDate.toEpochMillis(): Long = private fun LocalDate.toEpochMillis(): Long =
this.atStartOfDayIn(TimeZone.UTC).toEpochMilliseconds() this.atStartOfDayIn(TimeZone.UTC).toEpochMilliseconds()

View File

@ -0,0 +1,29 @@
package plus.rua.project.ui
import kotlin.test.Test
import kotlin.test.assertEquals
class DateCheckerScreenLogicTest {
// ---- clampExpiryDays ----
@Test
fun clampExpiryDays_positiveValue_unchanged() {
assertEquals(30, clampExpiryDays(30))
}
@Test
fun clampExpiryDays_zero_unchanged() {
assertEquals(0, clampExpiryDays(0))
}
@Test
fun clampExpiryDays_negativeValue_clampedToZero() {
assertEquals(0, clampExpiryDays(-1))
}
@Test
fun clampExpiryDays_largeNegative_clampedToZero() {
assertEquals(0, clampExpiryDays(-365))
}
}