1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-11-25 05:58:35 +01:00
MLEM/Tests/TestGame.cs

66 lines
1.8 KiB
C#
Raw Normal View History

using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using MLEM.Data.Content;
using MLEM.Font;
2021-04-02 17:12:27 +02:00
using MLEM.Startup;
using NUnit.Framework;
2021-04-02 17:12:27 +02:00
2022-12-13 13:11:36 +01:00
namespace Tests;
2021-04-02 17:12:27 +02:00
2022-10-27 10:22:25 +02:00
public class TestGame : MlemGame {
2021-04-02 17:12:27 +02:00
2022-10-27 10:22:25 +02:00
public RawContentManager RawContent { get; private set; }
2021-04-02 17:12:27 +02:00
private TestGame() {
#if KNI
// allow textures larger than 4096x4096 for our texture packer tests
this.GraphicsDeviceManager.GraphicsProfile = GraphicsProfile.FL11_0;
#endif
}
2021-04-02 17:12:27 +02:00
2022-10-27 10:22:25 +02:00
protected override void LoadContent() {
base.LoadContent();
this.RawContent = new RawContentManager(this.Services, this.Content.RootDirectory);
// make sure that the viewport is always the same size, since RunOneFrame doesn't ensure window size is correct
this.UiSystem.Viewport = new Rectangle(0, 0, 1280, 720);
// we use precompiled fonts and kni uses a different asset compilation system, so we just have both stored
this.UiSystem.Style.Font = new GenericSpriteFont(MlemGame.LoadContent<SpriteFont>(
#if KNI
"TestFontKni"
#else
"TestFont"
#endif
));
// make sure we catch a potential ui stack overflow as part of the tests by ensuring a sufficient execution stack
this.UiSystem.OnElementAreaUpdated += _ => RuntimeHelpers.EnsureSufficientExecutionStack();
2022-10-27 10:22:25 +02:00
}
2021-04-02 17:12:27 +02:00
2022-10-27 10:22:25 +02:00
public static TestGame Create() {
var game = new TestGame();
game.RunOneFrame();
return game;
2021-04-02 17:12:27 +02:00
}
2022-10-27 10:22:25 +02:00
2022-06-17 18:23:47 +02:00
}
public class GameTestFixture {
protected TestGame Game { get; private set; }
[SetUp]
public void SetUpGame() {
this.Game = TestGame.Create();
}
[TearDown]
public void TearDownGame() {
this.Game?.Dispose();
this.Game = null;
}
}