Simplify tests to prepare for a more complicated remote
This commit is contained in:
parent
a4b11e1ffa
commit
6ecb6d07ac
3 changed files with 24 additions and 26 deletions
|
|
@ -69,10 +69,8 @@ type NightLightTests() =
|
|||
fakeHome.LightShouldHaveState light _.IsOn
|
||||
|
||||
[<Property(Arbitrary = [| typeof<ArbitraryRemotelyControlledLight> |])>]
|
||||
let ``All remote controlled lights with power should be on if the 'Off' button on the remote was never pressed``
|
||||
(light: Light)
|
||||
=
|
||||
genRandomInteractionsExcept light ((=) (HumanInteraction RemotePressedOffButton))
|
||||
let ``All remote controlled lights with power should be on if the remote was never used`` (light: Light) =
|
||||
genRandomInteractionsExcept light _.IsRemoteInteraction
|
||||
|> ensureStartsWithTimeChanged
|
||||
|> ensureLightHasPower light
|
||||
|> Arb.fromGen
|
||||
|
|
@ -82,13 +80,13 @@ type NightLightTests() =
|
|||
fakeHome.LightShouldHaveState light _.IsOn
|
||||
|
||||
[<Property(Arbitrary = [| typeof<ArbitraryRemotelyControlledLight> |])>]
|
||||
let ``After pressing 'On' on the remote, if the 'Off' button isn't pressed, all remotely controlled lights with power should be on``
|
||||
let ``After pressing 'On' on the remote, if the remote isn't used again, all remotely controlled lights with power should be on``
|
||||
(light: Light)
|
||||
=
|
||||
concatGens
|
||||
[ genRandomInteractions light
|
||||
HumanInteraction RemotePressedOnButton |> List.singleton |> Gen.constant
|
||||
genRandomInteractionsExcept light ((=) (HumanInteraction RemotePressedOffButton)) ]
|
||||
RemoteInteraction RemotePressedOnButton |> List.singleton |> Gen.constant
|
||||
genRandomInteractionsExcept light _.IsRemoteInteraction ]
|
||||
|> ensureStartsWithTimeChanged
|
||||
|> ensureLightHasPower light
|
||||
|> Arb.fromGen
|
||||
|
|
@ -98,7 +96,7 @@ type NightLightTests() =
|
|||
fakeHome.LightShouldHaveState light _.IsOn
|
||||
|
||||
[<Property(Arbitrary = [| typeof<ArbitraryRemotelyControlledLight> |])>]
|
||||
let ``After a new day starts, if the 'Off' button isn't pressed, all remotely controlled lights with power should be on``
|
||||
let ``After a new day starts, if the remote isn't used, all remotely controlled lights with power should be on``
|
||||
(light: Light)
|
||||
=
|
||||
concatGens
|
||||
|
|
@ -106,7 +104,7 @@ type NightLightTests() =
|
|||
genTimeChangedToRandomNightTime |> Gen.map List.singleton
|
||||
genRandomInteractionsExcept light isTimeChangedToAnyDayTime
|
||||
genTimeChangedToRandomDayTime |> Gen.map List.singleton
|
||||
genRandomInteractionsExcept light ((=) (HumanInteraction RemotePressedOffButton)) ]
|
||||
genRandomInteractionsExcept light _.IsRemoteInteraction ]
|
||||
|> ensureStartsWithTimeChanged
|
||||
|> ensureLightHasPower light
|
||||
|> Arb.fromGen
|
||||
|
|
@ -116,15 +114,14 @@ type NightLightTests() =
|
|||
fakeHome.LightShouldHaveState light _.IsOn
|
||||
|
||||
[<Property(Arbitrary = [| typeof<ArbitraryRemotelyControlledLight> |])>]
|
||||
let ``After pressing 'Off' on the remote, if the 'On' button isn't pressed and a new day doesn't start, all remotely controlled lights should be off``
|
||||
let ``After pressing 'Off' on the remote, if the remote isn't used again and a new day doesn't start, all remotely controlled lights should be off``
|
||||
(light: Light)
|
||||
=
|
||||
concatGens
|
||||
[ genRandomInteractions light
|
||||
HumanInteraction RemotePressedOffButton |> List.singleton |> Gen.constant
|
||||
RemoteInteraction RemotePressedOffButton |> List.singleton |> Gen.constant
|
||||
genRandomInteractionsExcept light (fun interaction ->
|
||||
interaction = HumanInteraction RemotePressedOnButton
|
||||
|| interaction |> isTimeChangedToAnyDayTime) ]
|
||||
interaction.IsRemoteInteraction || interaction |> isTimeChangedToAnyDayTime) ]
|
||||
|> ensureStartsWithTimeChanged
|
||||
|> Arb.fromGen
|
||||
|> Prop.forAll
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue