diff options
Diffstat (limited to 'src/LivingVillage.Desktop.Tests/M6bTests.fs')
| -rw-r--r-- | src/LivingVillage.Desktop.Tests/M6bTests.fs | 30 |
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) |
