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);
|
2020-12-20 01:19:03 +00:00
|
|
|
|
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) {
|
2020-12-20 01:19:03 +00:00
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|