Add tests for parsing achievement tags in chat
These tests ensure that `ChatManager.ParseMessage` will not throw on the server with TShock when given an achievement tag.
This commit is contained in:
parent
d0554abd46
commit
205c29bc88
2 changed files with 33 additions and 0 deletions
30
TShockLauncher.Tests/ChatTests.cs
Normal file
30
TShockLauncher.Tests/ChatTests.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using Terraria.UI.Chat;
|
||||||
|
|
||||||
|
namespace TShockLauncher.Tests;
|
||||||
|
|
||||||
|
public class ChatTests
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Ensures that the <see cref="Terraria.GameContent.UI.Chat.AchievementTagHandler"/> does not cause exceptions when used on the server.
|
||||||
|
/// </summary>
|
||||||
|
///
|
||||||
|
/// <remarks>The behaviour of TShock regarding the achievement tag handler changes depending on if TShock has
|
||||||
|
/// a <see cref="Terraria.Main"/> instance or not. Therefore, we do not check the correctness of the parsed message, but only if it
|
||||||
|
/// throws an exception.
|
||||||
|
/// </remarks>
|
||||||
|
[TestCase]
|
||||||
|
public void TestChatAchievementTagHandler()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
{
|
||||||
|
ChatManager.ParseMessage("No achievement tags", Color.White);
|
||||||
|
ChatManager.ParseMessage("One achievement tag: [a:KILL_THE_SUN]", Color.White);
|
||||||
|
ChatManager.ParseMessage("One achievement tag, using the longer variant: [achievement:KILL_THE_SUN]", Color.White);
|
||||||
|
ChatManager.ParseMessage("Multiple achievement tags: [a:KILL_THE_SUN] and [a:TOPPED_OFF]", Color.White);
|
||||||
|
ChatManager.ParseMessage("One achievement tag, referring to a non-existent achievement: [a:_THIS_WILL_NEVER_EXIST_]", Color.White);
|
||||||
|
ChatManager.ParseMessage("Both valid and invalid achievement tags: [a:KILL_THE_SUN] and [a:_THIS_WILL_NEVER_EXIST_]", Color.White);
|
||||||
|
}, Throws.Nothing);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
|
using Terraria.Initializers;
|
||||||
using Terraria.Localization;
|
using Terraria.Localization;
|
||||||
using TShockAPI;
|
using TShockAPI;
|
||||||
|
|
||||||
|
|
@ -15,6 +16,8 @@ public class TestSetup
|
||||||
[OneTimeSetUp]
|
[OneTimeSetUp]
|
||||||
public static void SetupTShock()
|
public static void SetupTShock()
|
||||||
{
|
{
|
||||||
|
ChatInitializer.Load();
|
||||||
|
|
||||||
Program.SavePath = ""; // 1.4.4.2 staticness introduced this where by default it is null, and any touch to Terraria.Main will use it and cause a crash.
|
Program.SavePath = ""; // 1.4.4.2 staticness introduced this where by default it is null, and any touch to Terraria.Main will use it and cause a crash.
|
||||||
LanguageManager.Instance.SetLanguage(GameCulture.DefaultCulture); // TShockAPI.Localization will fail without ActiveCulture set
|
LanguageManager.Instance.SetLanguage(GameCulture.DefaultCulture); // TShockAPI.Localization will fail without ActiveCulture set
|
||||||
Lang.InitializeLegacyLocalization(); // TShockAPI.Localization will fail without preparing NPC names etc
|
Lang.InitializeLegacyLocalization(); // TShockAPI.Localization will fail without preparing NPC names etc
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue