NoSoliciting/NoSoliciting.Tests/DefinitionsTests/DefinitionsTests.cs

69 lines
2.3 KiB
C#
Raw Normal View History

2020-09-04 18:00:46 +00:00
using Dalamud.Game.Chat;
2020-09-05 18:30:37 +00:00
using System.Collections.Generic;
2020-09-04 18:00:46 +00:00
using System.IO;
using System.Linq;
using Xunit;
namespace NoSoliciting.Tests.DefinitionsTests {
2021-01-02 13:08:28 +00:00
public static class DefUtils {
public static object[][] DataFromStrings(IEnumerable<string> strings) => strings.Select(s => new object[] { s }).ToArray();
public static object[][] DataFromMessages(IEnumerable<TestMessage> messages) => messages.Select(m => new object[] { m }).ToArray();
2020-09-04 18:00:46 +00:00
}
public class DefinitionsFixture {
2021-01-02 13:08:28 +00:00
internal Definitions Defs { get; }
2020-09-05 18:30:37 +00:00
public DefinitionsFixture() {
2021-01-02 13:08:28 +00:00
this.Defs = Definitions.Load(File.ReadAllText("../../../../NoSoliciting/definitions.yaml"));
2020-09-05 18:30:37 +00:00
2021-01-02 13:08:28 +00:00
var allDefs = this.Defs.Chat
.Concat(this.Defs.PartyFinder)
.Concat(this.Defs.Global);
foreach (var entry in allDefs) {
2020-09-05 18:30:37 +00:00
entry.Value.Initialise(entry.Key);
}
}
2020-09-04 18:00:46 +00:00
}
public class TestMessage {
2021-01-02 13:08:28 +00:00
internal ChatType Channel { get; }
internal string Content { get; }
2020-09-04 18:00:46 +00:00
public TestMessage(string content) : this(ChatType.None, content) { }
public TestMessage(ChatType channel, string content) {
2021-01-02 13:08:28 +00:00
this.Content = content;
this.Channel = channel;
2020-09-04 18:00:46 +00:00
}
public override string ToString() {
2021-01-02 13:08:28 +00:00
var name = this.Channel == ChatType.None ? "PF" : this.Channel.ToString();
return $"[{name}] {this.Content}";
2020-09-04 18:00:46 +00:00
}
}
public enum CheckType {
Positive,
Negative,
}
internal static class DefinitionExt {
internal static void Check(this Definition def, string message, CheckType type) {
var testMsg = new TestMessage(message);
2020-09-04 18:00:46 +00:00
def.Check(testMsg, type);
}
internal static void Check(this Definition def, TestMessage message, CheckType type) {
switch (type) {
case CheckType.Positive:
2021-01-02 13:08:28 +00:00
Assert.True(def.Matches((XivChatType)message.Channel, message.Content), message.Content);
2020-09-04 18:00:46 +00:00
break;
case CheckType.Negative:
2021-01-02 13:08:28 +00:00
Assert.False(def.Matches((XivChatType)message.Channel, message.Content), message.Content);
2020-09-04 18:00:46 +00:00
break;
}
}
}
}