using System.Linq; using UnitTestSharp; using static Clave.UnitTests.KeyFormulaTests; namespace Clave.UnitTests { public class KeySnapshotTests : TestFixture { public class IsConsistentTests : TestFixture { public void NothingAtAll_IsConsistent() { Check(Snapshot().IsConsistent()); } public void HeldWithoutEdges_IsConsistent() { Check(SingleKey(held: true, pressed: false, released: false).IsConsistent()); } public void PressedAndHeld_IsConsistent() { Check(SingleKey(held: true, pressed: true, released: false).IsConsistent()); } public void ReleasedAndNotHeld_IsConsistent() { Check(SingleKey(held: false, pressed: false, released: true).IsConsistent()); } public void TapWithinOneSample_IsConsistent() { Check(SingleKey(held: false, pressed: true, released: true).IsConsistent()); } public void PressedReleasedAndPressedAgain_IsConsistent() { Check(SingleKey(held: true, pressed: true, released: true).IsConsistent()); } public void PressedButNeitherHeldNorReleased_IsNotConsistent() { CheckFalse(SingleKey(held: false, pressed: true, released: false).IsConsistent()); } public void ReleasedButStillHeld_IsNotConsistent() { CheckFalse(SingleKey(held: true, pressed: false, released: true).IsConsistent()); } public void RepeatedWhileHeld_IsConsistent() { Check(SingleKey(held: true, pressed: false, released: false, repeated: true).IsConsistent()); } public void RepeatedButNotHeld_IsNotConsistent() { CheckFalse(SingleKey(held: false, pressed: false, released: false, repeated: true).IsConsistent()); } public void RepeatedAndPressed_IsNotConsistent() { CheckFalse(SingleKey(held: true, pressed: true, released: false, repeated: true).IsConsistent()); } public void RepeatedAndReleased_IsNotConsistent() { CheckFalse(SingleKey(held: true, pressed: true, released: true, repeated: true).IsConsistent()); } public void OneInconsistentKeyAmongConsistentOnes_IsNotConsistent() { CheckFalse(Snapshot(held: StateOf(KeyCode.A, KeyCode.B), pressed: StateOf(KeyCode.A, KeyCode.C)) .IsConsistent()); } public void KeyInTheHighHalf_IsJudgedLikeAnyOther() { Check(SingleKey(held: true, pressed: true, released: false, key: KeyCode.Numpad9).IsConsistent()); CheckFalse(SingleKey(held: false, pressed: true, released: false, key: KeyCode.Numpad9) .IsConsistent()); } public void EnumeratedSnapshots_AreConsistentExactlyWhenEveryKeyIs() { CheckEqual(ConsistentSnapshots.Length, AllSnapshots.Count(snapshot => snapshot.IsConsistent())); Check(ConsistentSnapshots.All(snapshot => snapshot.IsConsistent())); } } } }