From 6830c1e510c0503e1b3b66d4ac208b4f2fa33d81 Mon Sep 17 00:00:00 2001 From: xfy Date: Tue, 16 Jun 2026 15:50:46 +0800 Subject: [PATCH] feat: add easter egg toast message logic with tests --- .../kotlin/plus/rua/project/ui/AboutScreen.kt | 13 +++++++ .../plus/rua/project/ui/AboutEasterEggTest.kt | 35 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 core/src/test/kotlin/plus/rua/project/ui/AboutEasterEggTest.kt diff --git a/core/src/main/kotlin/plus/rua/project/ui/AboutScreen.kt b/core/src/main/kotlin/plus/rua/project/ui/AboutScreen.kt index baa855e..b1f6c09 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/AboutScreen.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/AboutScreen.kt @@ -34,6 +34,19 @@ import plus.rua.project.AppInfo import plus.rua.project.getAppIconUri import plus.rua.project.getAppVersion +/** + * 根据当前连续点击次数返回应显示的 Toast 文案。 + * + * @param clickCount 当前连续点击次数(从 1 开始) + * @return 需要显示的文案,若无需提示则返回 null + */ +internal fun getToastMessage(clickCount: Int): String? = when (clickCount) { + 4 -> "再点击 3 下进入小狗乐园" + 5 -> "再点击 2 下进入小狗乐园" + 6 -> "再点击 1 下进入小狗乐园" + else -> null +} + /** * 关于页面,展示应用图标、名称、版本号及开源许可入口。 * diff --git a/core/src/test/kotlin/plus/rua/project/ui/AboutEasterEggTest.kt b/core/src/test/kotlin/plus/rua/project/ui/AboutEasterEggTest.kt new file mode 100644 index 0000000..6df2ba5 --- /dev/null +++ b/core/src/test/kotlin/plus/rua/project/ui/AboutEasterEggTest.kt @@ -0,0 +1,35 @@ +package plus.rua.project.ui + +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNull + +class AboutEasterEggTest { + + @Test + fun `first three clicks show no toast`() { + assertNull(getToastMessage(1)) + assertNull(getToastMessage(2)) + assertNull(getToastMessage(3)) + } + + @Test + fun `fourth click shows remaining three`() { + assertEquals("再点击 3 下进入小狗乐园", getToastMessage(4)) + } + + @Test + fun `fifth click shows remaining two`() { + assertEquals("再点击 2 下进入小狗乐园", getToastMessage(5)) + } + + @Test + fun `sixth click shows remaining one`() { + assertEquals("再点击 1 下进入小狗乐园", getToastMessage(6)) + } + + @Test + fun `seventh click triggers navigation and shows no toast`() { + assertNull(getToastMessage(7)) + } +}