public void FromPixelSpace()
        {
            var window = new TestResolver().Resolve<Window>();
            var camera = new Camera2DControlledQuadraticScreenSpace(window)
            {
                LookAt = new Point(-0.5f, 0.6f),
                Zoom = 2.0f
            };

            Assert.AreEqual(new Point(-0.75f, 0.44375f), camera.FromPixelSpace(Point.Zero));
            Assert.AreEqual(new Point(-0.25f, 0.75625f),
                camera.FromPixelSpace((Point)window.ViewportPixelSize));
            Assert.AreEqual(camera.LookAt, camera.FromPixelSpace((Point)window.ViewportPixelSize / 2));
        }
        public void EdgesAfterPanning()
        {
            var camera = new Camera2DControlledQuadraticScreenSpace(new TestResolver().Resolve<Window>())
            {
                LookAt = new Point(0.75f, 0.6f)
            };

            Assert.AreEqual(new Point(0.25f, 0.2875f), camera.TopLeft);
            Assert.AreEqual(new Point(1.25f, 0.9125f), camera.BottomRight);
            Assert.AreEqual(0.2875f, camera.Top, 0.0001f);
            Assert.AreEqual(0.25f, camera.Left, 0.0001f);
            Assert.AreEqual(0.9125f, camera.Bottom, 0.0001f);
            Assert.AreEqual(1.25f, camera.Right, 0.0001f);
        }
        public void EdgesAfterZoomingIn()
        {
            var camera = new Camera2DControlledQuadraticScreenSpace(new TestResolver().Resolve<Window>())
            {
                Zoom = 2.0f
            };

            Assert.AreEqual(new Point(0.25f, 0.34375f), camera.TopLeft);
            Assert.AreEqual(new Point(0.75f, 0.65625f), camera.BottomRight);
            Assert.AreEqual(0.34375f, camera.Top, 0.0001f);
            Assert.AreEqual(0.25f, camera.Left, 0.0001f);
            Assert.AreEqual(0.65625f, camera.Bottom, 0.0001f);
            Assert.AreEqual(0.75f, camera.Right, 0.0001f);
        }
        public void EdgesAfterPanningAndZooming()
        {
            var camera = new Camera2DControlledQuadraticScreenSpace(new TestResolver().Resolve<Window>())
            {
                LookAt = new Point(0.4f, 0.5f),
                Zoom = 0.5f
            };

            Assert.AreEqual(new Point(-0.6f, -0.125f), camera.TopLeft);
            Assert.AreEqual(new Point(1.4f, 1.125f), camera.BottomRight);
            Assert.AreEqual(-0.125f, camera.Top, 0.0001f);
            Assert.AreEqual(-0.6f, camera.Left, 0.0001f);
            Assert.AreEqual(1.125f, camera.Bottom, 0.0001f);
            Assert.AreEqual(1.4f, camera.Right, 0.0001f);
        }
 public void Zoom()
 {
     var camera = new Camera2DControlledQuadraticScreenSpace(new TestResolver().Resolve<Window>());
     Assert.AreEqual(1.0f, camera.Zoom);
     camera.Zoom = 2.5f;
     Assert.AreEqual(2.5f, camera.Zoom);
 }
        public void ToPixelSpace()
        {
            var window = new TestResolver().Resolve<Window>();
            var quadraticSize = new Size(window.ViewportPixelSize.Width);
            var camera = new Camera2DControlledQuadraticScreenSpace(window)
            {
                LookAt = new Point(-0.5f, 0.6f),
                Zoom = 2.0f
            };

            Assert.AreEqual(quadraticSize.Width * 1.5f, camera.ToPixelSpace(Point.Zero).X);
            Assert.AreEqual(new Point(2560, 115.2f), camera.ToPixelSpace(Point.Half));
            Assert.AreEqual(new Point(3584, 1139.2f), camera.ToPixelSpace(Point.One));
            Assert.AreEqual(quadraticSize, camera.ToPixelSpace(Size.Half));
        }
        public void LoopingToAndFromPixelSpaceLeavesAPointUnchanged()
        {
            var window = new TestResolver().Resolve<Window>();
            var camera = new Camera2DControlledQuadraticScreenSpace(window)
            {
                LookAt = new Point(-0.5f, 0.6f),
                Zoom = 3.0f
            };

            Assert.AreEqual(new Point(1.2f, 3.4f),
                camera.ToPixelSpace(camera.FromPixelSpace(new Point(1.2f, 3.4f))));
            Assert.AreEqual(new Point(1.2f, 3.4f),
                camera.FromPixelSpace(camera.ToPixelSpace(new Point(1.2f, 3.4f))));
        }
 public void LookAt()
 {
     var camera = new Camera2DControlledQuadraticScreenSpace(new TestResolver().Resolve<Window>());
     Assert.AreEqual(Point.Half, camera.LookAt);
     camera.LookAt = Point.One;
     Assert.AreEqual(Point.One, camera.LookAt);
 }