using UnitTestSharp; namespace Glass.UnitTests { public class MouseLockTests : TestFixture { public class CtorTests : TestFixture { public void GivenAControl_HoldsOnToIt() { var control = new Control("locked"); CheckEqual(control, new MouseManager.MouseLock(control).Control); } public void GivenNull_HoldsNoControl() { CheckNull(new MouseManager.MouseLock(null).Control); } } public class LiveTests : TestFixture { public void FreshlyTaken_IsLive() { Check(new MouseManager.MouseLock(new Control("locked")).Live); } public void AfterItsControlCancels_IsNotLive() { var control = new Control("locked"); var mouseLock = new MouseManager.MouseLock(control); control.CancelMouseInput(); CheckFalse(mouseLock.Live); } public void AfterItsControlCancelsTwice_IsStillNotLive() { var control = new Control("locked"); var mouseLock = new MouseManager.MouseLock(control); control.CancelMouseInput(); control.CancelMouseInput(); CheckFalse(mouseLock.Live); } public void TakenAfterAnEarlierCancel_IsLive() { var control = new Control("locked"); control.CancelMouseInput(); Check(new MouseManager.MouseLock(control).Live); } public void WhenSomeOtherControlCancels_StaysLive() { var control = new Control("locked"); var mouseLock = new MouseManager.MouseLock(control); new Control("stranger").CancelMouseInput(); Check(mouseLock.Live); } public void Default_IsNotLive() { CheckFalse(default(MouseManager.MouseLock).Live); } public void OverANullControl_IsNotLive() { CheckFalse(new MouseManager.MouseLock(null).Live); } } } }