Clarify helper names

This makes it more obvious that there might be multiple "day times" or
"night times" in a row.
This commit is contained in:
Sven van Heugten 2026-01-08 22:08:02 +01:00
parent 6ff7ce19b2
commit c30642dcce
2 changed files with 14 additions and 12 deletions

View file

@ -38,8 +38,8 @@ type NightLightTests() =
[<Property(Arbitrary = [| typeof<ArbitraryLight> |])>] [<Property(Arbitrary = [| typeof<ArbitraryLight> |])>]
let ``All lights should be either off, white or yellow during the day`` (light: Light) = let ``All lights should be either off, white or yellow during the day`` (light: Light) =
concatGens concatGens
[ genInitialInteractionsAndEndWith light =<< genTimeChangedToDay [ genInitialInteractionsAndEndWith light =<< genTimeChangedToRandomDayTime
genInteractionsExcept light isTimeChangedToNight ] genInteractionsExcept light isTimeChangedToAnyNightTime ]
|> Arb.fromGen |> Arb.fromGen
|> Prop.forAll |> Prop.forAll
<| fun interactions -> <| fun interactions ->
@ -52,8 +52,8 @@ type NightLightTests() =
[<Property(Arbitrary = [| typeof<ArbitraryLight> |])>] [<Property(Arbitrary = [| typeof<ArbitraryLight> |])>]
let ``All lights should be either off or red during the night`` (light: Light) = let ``All lights should be either off or red during the night`` (light: Light) =
concatGens concatGens
[ genInitialInteractionsAndEndWith light =<< genTimeChangedToNight [ genInitialInteractionsAndEndWith light =<< genTimeChangedToRandomNightTime
genInteractionsExcept light isTimeChangedToDay ] genInteractionsExcept light isTimeChangedToAnyDayTime ]
|> Arb.fromGen |> Arb.fromGen
|> Prop.forAll |> Prop.forAll
<| fun interactions -> <| fun interactions ->
@ -91,9 +91,9 @@ type NightLightTests() =
(light: Light) (light: Light)
= =
concatGens concatGens
[ genInitialInteractionsAndEndWith light =<< genTimeChangedToNight [ genInitialInteractionsAndEndWith light =<< genTimeChangedToRandomNightTime
genInteractionsExcept light isTimeChangedToDay genInteractionsExcept light isTimeChangedToAnyDayTime
genTimeChangedToDay |> Gen.map List.singleton genTimeChangedToRandomDayTime |> Gen.map List.singleton
genInteractionsExcept light ((=) (HumanInteraction RemotePressedOffButton)) ] genInteractionsExcept light ((=) (HumanInteraction RemotePressedOffButton)) ]
|> Arb.fromGen |> Arb.fromGen
|> Prop.forAll |> Prop.forAll
@ -111,7 +111,7 @@ type NightLightTests() =
[ genInitialInteractionsAndEndWith light (HumanInteraction RemotePressedOffButton) [ genInitialInteractionsAndEndWith light (HumanInteraction RemotePressedOffButton)
genInteractionsExcept light (fun interaction -> genInteractionsExcept light (fun interaction ->
interaction = HumanInteraction RemotePressedOnButton interaction = HumanInteraction RemotePressedOnButton
|| interaction |> isTimeChangedToDay) ] || interaction |> isTimeChangedToAnyDayTime) ]
|> Arb.fromGen |> Arb.fromGen
|> Prop.forAll |> Prop.forAll
<| fun interactions -> <| fun interactions ->

View file

@ -12,13 +12,15 @@ let private isTimeChangedMeetingCondition condition interaction =
| TimeChanged time when condition time -> true | TimeChanged time when condition time -> true
| _ -> false | _ -> false
let isTimeChangedToDay = isTimeChangedMeetingCondition isDay let isTimeChangedToAnyDayTime = isTimeChangedMeetingCondition isDay
let isTimeChangedToNight = isTimeChangedMeetingCondition (not << isDay) let isTimeChangedToAnyNightTime = isTimeChangedMeetingCondition (not << isDay)
let genTimeChanged = let genTimeChanged =
ArbMap.defaults |> ArbMap.generate<DateTime> |> Gen.map Interaction.TimeChanged ArbMap.defaults |> ArbMap.generate<DateTime> |> Gen.map Interaction.TimeChanged
let genTimeChangedToDay = genTimeChanged |> Gen.filter isTimeChangedToDay let genTimeChangedToRandomDayTime =
genTimeChanged |> Gen.filter isTimeChangedToAnyDayTime
let genTimeChangedToNight = genTimeChanged |> Gen.filter isTimeChangedToNight let genTimeChangedToRandomNightTime =
genTimeChanged |> Gen.filter isTimeChangedToAnyNightTime