Demonstrate a bug
This commit is contained in:
parent
e792a57cb4
commit
7472825140
4 changed files with 23 additions and 1 deletions
|
|
@ -3,6 +3,7 @@ module NightLight.Core.Tests.ArbitraryInteractionLists
|
||||||
open System
|
open System
|
||||||
open FsCheck.FSharp
|
open FsCheck.FSharp
|
||||||
open NightLight.Core.Tests.InteractionListGenerators
|
open NightLight.Core.Tests.InteractionListGenerators
|
||||||
|
open NightLight.Core.Models
|
||||||
|
|
||||||
let private isDay (time: DateTime) =
|
let private isDay (time: DateTime) =
|
||||||
time.TimeOfDay >= TimeSpan.FromHours 5.5
|
time.TimeOfDay >= TimeSpan.FromHours 5.5
|
||||||
|
|
|
||||||
|
|
@ -139,3 +139,8 @@ type FakeHome with
|
||||||
| On(brightness, color) -> Some(light, brightness, color)
|
| On(brightness, color) -> Some(light, brightness, color)
|
||||||
| Off -> None)
|
| Off -> None)
|
||||||
|> Seq.forall condition
|
|> Seq.forall condition
|
||||||
|
|
||||||
|
member this.ForAllRemotelyControlledLights condition =
|
||||||
|
this.LightStates
|
||||||
|
|> Seq.filter (fst >> _.ControlledWithRemote)
|
||||||
|
|> Seq.forall condition
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ let private genInteractionsListThatStartsWithTimeChanged =
|
||||||
return firstInteraction :: remainingInteractions
|
return firstInteraction :: remainingInteractions
|
||||||
}
|
}
|
||||||
|
|
||||||
let private genInteractionListContaining containingInteraction afterFilter =
|
let genInteractionListContaining containingInteraction afterFilter =
|
||||||
gen {
|
gen {
|
||||||
let genNonTrivialList =
|
let genNonTrivialList =
|
||||||
gen {
|
gen {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@ namespace NightLight.Core.Tests
|
||||||
|
|
||||||
open NightLight.Core.Core
|
open NightLight.Core.Core
|
||||||
open NightLight.Core.Tests.ArbitraryInteractionLists
|
open NightLight.Core.Tests.ArbitraryInteractionLists
|
||||||
|
open NightLight.Core.Tests.InteractionListGenerators
|
||||||
|
open FsCheck
|
||||||
open FsCheck.Xunit
|
open FsCheck.Xunit
|
||||||
|
open FsCheck.FSharp
|
||||||
|
|
||||||
type NightLightTests() =
|
type NightLightTests() =
|
||||||
let createFakeHomeWithNightLightAndInteract (interactions: Interaction list) =
|
let createFakeHomeWithNightLightAndInteract (interactions: Interaction list) =
|
||||||
|
|
@ -30,3 +33,16 @@ type NightLightTests() =
|
||||||
let ``All lights that are on should be red during the night`` (interactions: Interaction list) =
|
let ``All lights that are on should be red during the night`` (interactions: Interaction list) =
|
||||||
let fakeHome = createFakeHomeWithNightLightAndInteract interactions
|
let fakeHome = createFakeHomeWithNightLightAndInteract interactions
|
||||||
fakeHome.ForAllLightsThatAreOn(fun (_, _, color) -> color = Red)
|
fakeHome.ForAllLightsThatAreOn(fun (_, _, color) -> color = Red)
|
||||||
|
|
||||||
|
[<Property>]
|
||||||
|
let ``After pressing 'Off' on the remote, the remotely controlled lights should stay off until 'On' is pressed again``
|
||||||
|
()
|
||||||
|
=
|
||||||
|
genInteractionListContaining
|
||||||
|
(HumanInteraction RemotePressedOffButton)
|
||||||
|
((<>) (HumanInteraction RemotePressedOnButton))
|
||||||
|
|> Arb.fromGen
|
||||||
|
|> Prop.forAll
|
||||||
|
<| fun interactions ->
|
||||||
|
let fakeHome = createFakeHomeWithNightLightAndInteract interactions
|
||||||
|
fakeHome.ForAllRemotelyControlledLights(fun (_, state) -> state = Off)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue