using Azimuth; using Blacklight.Core.Cameras; namespace Blacklight.Core.UnitTests.Cameras { public class LockedPointerTests : UnitTestSharp.TestFixture { public static readonly Vector GrabPoint = new Vector(40, 30); public static LockedPointer LockedAtTheGrabPoint() { var pointer = new LockedPointer(); pointer.Lock(GrabPoint); return pointer; } public class CtorTests : UnitTestSharp.TestFixture { public void StartsUnlocked() { CheckFalse(new LockedPointer().Locked); } } public class LockTests : UnitTestSharp.TestFixture { public void Always_Locks() { CheckTrue(LockedAtTheGrabPoint().Locked); } public void Always_StartsThePositionAtTheHostsPosition() { CheckEqual(GrabPoint, LockedAtTheGrabPoint().Position); } public void Always_RemembersWhereTheLockBegan() { LockedPointer pointer = LockedAtTheGrabPoint(); pointer.Move(new Vector(5, 5)); CheckEqual(GrabPoint, pointer.LockedAt); } } public class MoveTests : UnitTestSharp.TestFixture { public void WhileLocked_AddsUpPastAnyEdge() { LockedPointer pointer = LockedAtTheGrabPoint(); pointer.Move(new Vector(-100, 0)); pointer.Move(new Vector(-100, -50)); CheckEqual(new Vector(-160, -20), pointer.Position); } public void AfterUnlock_IsIgnored() { LockedPointer pointer = LockedAtTheGrabPoint(); pointer.Unlock(); pointer.Move(new Vector(5, 5)); CheckEqual(GrabPoint, pointer.Position); } } public class UnlockTests : UnitTestSharp.TestFixture { public void Always_Unlocks() { LockedPointer pointer = LockedAtTheGrabPoint(); pointer.Unlock(); CheckFalse(pointer.Locked); } } public class PositionForTests : UnitTestSharp.TestFixture { public void Unlocked_IsTheHostsPosition() { CheckEqual(new Vector(7, 8), new LockedPointer().PositionFor(new Vector(7, 8))); } public void Locked_IsTheBuiltUpPositionWhateverTheHostSays() { LockedPointer pointer = LockedAtTheGrabPoint(); pointer.Move(new Vector(5, 0)); CheckEqual(new Vector(45, 30), pointer.PositionFor(new Vector(7, 8))); } } } }