summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop.Tests/M6bTests.fs
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-21 23:03:16 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-21 23:03:16 +0800
commit6ce29c5e87d32e49dfe92b398fe45ef0b9de6cdf (patch)
tree859a902d27e069e0e087579b6ea38dec76dc4bf3 /src/LivingVillage.Desktop.Tests/M6bTests.fs
parent11a2a1d8786a660d0f370a46f5ee0c69c108f823 (diff)
parent50875bb65cc4cdba92f6745d2430a92d85474872 (diff)
downloadliving-village-6ce29c5e87d32e49dfe92b398fe45ef0b9de6cdf.tar.gz
merge: P15 职业玩法收口——开局职业选择/货郎书生模板/CJK补字/全链路回归(独立复验全绿)
Diffstat (limited to 'src/LivingVillage.Desktop.Tests/M6bTests.fs')
-rw-r--r--src/LivingVillage.Desktop.Tests/M6bTests.fs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/LivingVillage.Desktop.Tests/M6bTests.fs b/src/LivingVillage.Desktop.Tests/M6bTests.fs
index 6ae0634..5aea9bd 100644
--- a/src/LivingVillage.Desktop.Tests/M6bTests.fs
+++ b/src/LivingVillage.Desktop.Tests/M6bTests.fs
@@ -80,3 +80,33 @@ type M6bMenuTests () =
Assert.AreEqual<string option>(Some "missing save", failed.Error)
Assert.AreEqual<MenuPage>(MainMenu, returned.Page)
Assert.AreEqual<MenuCommand>(NoCommand, command)
+
+ // ---- P15 开局职业选择页 ----
+
+ [<TestMethod>]
+ member _.OccupationSelectOffersFourKindsThenNoneAndDefaultsToNone () =
+ let page = MenuState.openOccupationSelect (MenuState.create SimulationControl.initial false)
+
+ Assert.AreEqual<MenuPage>(OccupationSelect, page.Page)
+ Assert.AreEqual<Occupation.Kind option list>(
+ [ Some Occupation.Farmer; Some Occupation.Fisher; Some Occupation.Peddler; Some Occupation.Scholar; None ],
+ MenuState.occupationOptions)
+ Assert.AreEqual<Occupation.Kind option>(None, MenuState.selectedOccupation page)
+ Assert.AreEqual<string>("暂不选择", MenuState.occupationLabel None)
+ Assert.AreEqual<string>("农夫", MenuState.occupationLabel (Some Occupation.Farmer))
+ Assert.AreEqual<string>("书生", MenuState.occupationLabel (Some Occupation.Scholar))
+
+ [<TestMethod>]
+ member _.OccupationSelectConfirmEmitsChosenKindAndBackReturnsToMenu () =
+ let page = MenuState.openOccupationSelect (MenuState.create SimulationControl.initial false)
+ let _, defaultCommand = MenuState.update Confirm page
+ Assert.AreEqual<MenuCommand>(StartNewGameWith None, defaultCommand)
+
+ let picked = MenuState.move Up (MenuState.move Up page)
+ Assert.AreEqual<Occupation.Kind option>(Some Occupation.Peddler, MenuState.selectedOccupation picked)
+ let _, command = MenuState.update Confirm picked
+ Assert.AreEqual<MenuCommand>(StartNewGameWith (Some Occupation.Peddler), command)
+
+ let back, backCommand = MenuState.update Back page
+ Assert.AreEqual<MenuPage>(MainMenu, back.Page)
+ Assert.AreEqual<MenuCommand>(NoCommand, backCommand)