mirror of
https://github.com/AlexMacocian/MonoGame.Extended.git
synced 2026-07-22 02:09:31 +00:00
79 lines
3.4 KiB
C#
79 lines
3.4 KiB
C#
using Microsoft.Xna.Framework;
|
|
using MonoGame.Extended.Graphics;
|
|
using NSubstitute;
|
|
using NUnit.Framework;
|
|
|
|
namespace MonoGame.Extended.Tests.Graphics
|
|
{
|
|
[TestFixture]
|
|
public class Camera2DTests
|
|
{
|
|
[Test]
|
|
public void Camera2D_LookAt_Test()
|
|
{
|
|
var viewportAdapter = Substitute.For<ViewportAdapter>();
|
|
viewportAdapter.VirtualWidth.Returns(800);
|
|
viewportAdapter.VirtualHeight.Returns(480);
|
|
var camera = new Camera2D(viewportAdapter);
|
|
|
|
camera.LookAt(new Vector2(100, 200));
|
|
|
|
Assert.AreEqual(new Vector2(-300, -40), camera.Position);
|
|
}
|
|
|
|
[Test]
|
|
public void Camera2D_GetBoundingFrustum_Test()
|
|
{
|
|
var graphicsDevice = TestHelper.CreateGraphicsDevice();
|
|
var camera = new Camera2D(graphicsDevice);
|
|
var boundingFrustum = camera.GetBoundingFrustum();
|
|
var corners = boundingFrustum.GetCorners();
|
|
|
|
const float delta = 0.01f;
|
|
TestHelper.AreEqual(new Vector3(0.5f, 0.5f, 1), corners[0], delta);
|
|
TestHelper.AreEqual(new Vector3(800.5f, 0.5f, 1), corners[1], delta);
|
|
TestHelper.AreEqual(new Vector3(800.5f, 480.5f, 1), corners[2], delta);
|
|
TestHelper.AreEqual(new Vector3(0.5f, 480.5f, 1), corners[3], delta);
|
|
TestHelper.AreEqual(new Vector3(0.5f, 0.5f, 0), corners[4], delta);
|
|
TestHelper.AreEqual(new Vector3(800.5f, 0.5f, 0), corners[5], delta);
|
|
TestHelper.AreEqual(new Vector3(800.5f, 480.5f, 0), corners[6], delta);
|
|
TestHelper.AreEqual(new Vector3(0.5f, 480.5f, 0), corners[7], delta);
|
|
}
|
|
|
|
[Test]
|
|
public void Camera2D_ContainsPoint_Test()
|
|
{
|
|
var graphicsDevice = TestHelper.CreateGraphicsDevice();
|
|
var camera = new Camera2D(graphicsDevice);
|
|
|
|
Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Point(1, 1)));
|
|
Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Point(800, 480)));
|
|
Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Point(0, 0)));
|
|
Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Point(801, 481)));
|
|
}
|
|
|
|
[Test]
|
|
public void Camera2D_ContainsVector2_Test()
|
|
{
|
|
var graphicsDevice = TestHelper.CreateGraphicsDevice();
|
|
var camera = new Camera2D(graphicsDevice);
|
|
|
|
// the edge cases fall on the half pixel boundary
|
|
Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Vector2(0.45f, 0.45f)));
|
|
Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Vector2(800.45f, 480.45f)));
|
|
Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Vector2(0.55f, 0.55f)));
|
|
Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Vector2(800.55f, 480.55f)));
|
|
}
|
|
|
|
[Test]
|
|
public void Camera2D_ContainsRectangle_Test()
|
|
{
|
|
var graphicsDevice = TestHelper.CreateGraphicsDevice();
|
|
var camera = new Camera2D(graphicsDevice);
|
|
|
|
Assert.AreEqual(ContainmentType.Intersects, camera.Contains(new Rectangle(-50, -50, 100, 100)));
|
|
Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Rectangle(50, 50, 100, 100)));
|
|
Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Rectangle(850, 500, 100, 100)));
|
|
}
|
|
}
|
|
} |