diff --git a/MuConvert.csproj b/MuConvert.csproj index 733beb2..d49fce8 100644 --- a/MuConvert.csproj +++ b/MuConvert.csproj @@ -52,7 +52,7 @@ - + MSBuild:Compile false true diff --git a/Program.cs b/Program.cs index 528779e..1f1fa1f 100644 --- a/Program.cs +++ b/Program.cs @@ -1,9 +1,7 @@ using System.CommandLine; using System.Text; using System.Text.RegularExpressions; -using MuConvert.generator; -using MuConvert.maidata; -using MuConvert.parser; +using MuConvert.mai; using MuConvert.utils; namespace MuConvert; diff --git a/chart/BaseChart.cs b/chart/BaseChart.cs new file mode 100644 index 0000000..8d7cf15 --- /dev/null +++ b/chart/BaseChart.cs @@ -0,0 +1,36 @@ +namespace MuConvert.chart; + +public interface IBaseChart; + +/** + * 所有的谱面均应该继承自此类。 + * 此类中提供了Notes列表,作为存储音符的核心列表;存储的音符类型是特定于谱面的(继承时传入泛型) + * 此外,应当重写以下四个抽象的getter。 + */ +public abstract class BaseChart : IBaseChart +{ + /** + * 所有音符构成的列表 + */ + public List Notes = []; + + /** + * 谱面开头的BPM + */ + public abstract decimal StartBpm { get; } + + /** + * 获得谱面开始的时刻(即谱面中第一个音符的开始时刻)。单位为秒 + */ + public abstract decimal StartTime { get; } + + /** + * 获得谱面结束的时刻(即谱面中最后一个音符的完成时刻)。单位为秒 + */ + public abstract decimal EndTime { get; } + + /** + * 总音符数量(物量) + */ + public abstract int TotalNotes { get; } +} \ No newline at end of file diff --git a/chart/Duration.cs b/chart/mai/Duration.cs similarity index 99% rename from chart/Duration.cs rename to chart/mai/Duration.cs index b310372..15c9f54 100644 --- a/chart/Duration.cs +++ b/chart/mai/Duration.cs @@ -1,7 +1,8 @@ using System.Diagnostics; +using MuConvert.chart; using Rationals; -namespace MuConvert.chart; +namespace MuConvert.mai; /** * 用于表示持续时间的类,使用于hold和slide的持续时长以及slide的等待时长中。 diff --git a/chart/Chart.cs b/chart/mai/MaiChart.cs similarity index 90% rename from chart/Chart.cs rename to chart/mai/MaiChart.cs index 52a9f79..b638280 100644 --- a/chart/Chart.cs +++ b/chart/mai/MaiChart.cs @@ -1,12 +1,12 @@ +using MuConvert.chart; using MuConvert.utils; using Rationals; -namespace MuConvert.chart; +namespace MuConvert.mai; -public class Chart +public class MaiChart: BaseChart { public BPMList BpmList = []; - public List Notes = []; public string DefaultTouchSize = "M1"; @@ -33,13 +33,16 @@ public void Sort() } // 谱面开头的BPM - public decimal StartBpm { + public override decimal StartBpm { get { Utils.Assert(BpmList[0].Time == 0, "BPM列表的开头必须为0时刻"); return BpmList[0].Bpm; } } + public override decimal StartTime => (decimal)FirstNoteTime.Seconds; + public override decimal EndTime => (decimal)ToSecond(Notes.Select(x=>x.EndTime).Max()); + public override int TotalNotes => Statistics.Total; /** * 获得“谱面中第一个音符的时刻”,或者返回的Duration也可以理解成“从谱面开头到出现第一个音符所经过的时长”。 @@ -81,14 +84,11 @@ public void Shift(Rational offset, decimal? bpm = null) public Statistics Statistics => new(this); - // 总音符数量(物量) - public int TotalNotes => Statistics.Total; - /** * 这是MA2语句中,通过CLK指令所显式指定的哒哒哒哒的时刻。 * 一般来说极少会用到,这里只是忠实地记录一下;一方面符合我们“0信息损失”的原则、忠实地记录铺面中的信息; * 另一方面,可以用作ClockCount自动推导的来源之一。 * 普通用户理论上极少会用到这个东西。 */ - public List? ExplicitClocks = null; + public List? ExplicitClocks; } diff --git a/chart/Note.cs b/chart/mai/Note.cs similarity index 88% rename from chart/Note.cs rename to chart/mai/Note.cs index e9bf8e7..f603dbb 100644 --- a/chart/Note.cs +++ b/chart/mai/Note.cs @@ -2,11 +2,11 @@ using MuConvert.utils; using Rationals; -namespace MuConvert.chart; +namespace MuConvert.mai; public abstract class Note { - public readonly Chart Chart; + public readonly MaiChart Chart; public Rational Time { get; set => field = value.CanonicalForm; } protected int _key; @@ -33,7 +33,7 @@ public virtual int Key } } - protected Note(Chart chart, Rational time) + protected Note(MaiChart chart, Rational time) { Chart = chart; Time = time; @@ -64,10 +64,12 @@ protected Note(Chart chart, Rational time) } internal virtual string DebuggerDisplay() => ""; + + public virtual Rational EndTime => Time + Duration.Bar; } [DebuggerDisplay("{DebuggerDisplay(),nq}")] -public class Tap(Chart chart, Rational time) : Note(chart, time) +public class Tap(MaiChart chart, Rational time) : Note(chart, time) { public Tap(Tap inTake): this(inTake.Chart, inTake.Time) // 拷贝构造函数 { @@ -85,13 +87,13 @@ public class Hold : Tap { public override Duration Duration { get; set; } - public Hold(Chart chart, Rational time) : base(chart, time) { Duration = new Duration(this); } + public Hold(MaiChart chart, Rational time) : base(chart, time) { Duration = new Duration(this); } internal override string DebuggerDisplay() => $"{Key}h{Modifiers}{Duration.DebuggerDisplay()}"; } [DebuggerDisplay("{DebuggerDisplay(),nq}")] -public class Touch(Chart chart, Rational time) : Note(chart, time) +public class Touch(MaiChart chart, Rational time) : Note(chart, time) { private TouchSeries _touchSeries; @@ -130,10 +132,10 @@ public class TouchHold : Touch { public override Duration Duration { get; set; } - public TouchHold(Chart chart, Rational time) : base(chart, time) { Duration = new Duration(this); } + public TouchHold(MaiChart chart, Rational time) : base(chart, time) { Duration = new Duration(this); } internal override string DebuggerDisplay() => $"{TouchArea}h{Modifiers}{Duration.DebuggerDisplay()}"; } // 仅用于内部实现某些trick时使用的“伪音符”。用户在正常的谱面中是不会看到这个的。 -internal class PseudoNote(Chart chart) : Note(chart, 0); +internal class PseudoNote(MaiChart chart) : Note(chart, 0); diff --git a/chart/Slide.cs b/chart/mai/Slide.cs similarity index 93% rename from chart/Slide.cs rename to chart/mai/Slide.cs index 99340db..a573506 100644 --- a/chart/Slide.cs +++ b/chart/mai/Slide.cs @@ -2,11 +2,11 @@ using MuConvert.utils; using Rationals; -namespace MuConvert.chart; +namespace MuConvert.mai; public class Star : Tap { - public Star(Chart chart, Rational time): base(chart, time) {} + public Star(MaiChart chart, Rational time): base(chart, time) {} public Star(Tap inTake): base(inTake) {} // 拷贝构造函数 } @@ -24,7 +24,7 @@ public class Slide : Note public List segments = new(); public Duration WaitTime; - public Slide(Chart chart, Rational time) : base(chart, time) + public Slide(MaiChart chart, Rational time) : base(chart, time) { WaitTime = new Duration(this) { InvariantBar = new Rational(1, 4) }; } @@ -93,6 +93,8 @@ internal override string DebuggerDisplay() result += Modifiers; return result; } + + public override Rational EndTime => base.EndTime + WaitTime.Bar; } public class SlideSegment(Slide slide) diff --git a/chart/Statistics.cs b/chart/mai/Statistics.cs similarity index 98% rename from chart/Statistics.cs rename to chart/mai/Statistics.cs index 63fec5d..9859c18 100644 --- a/chart/Statistics.cs +++ b/chart/mai/Statistics.cs @@ -1,7 +1,7 @@ using MuConvert.utils; using Rationals; -namespace MuConvert.chart; +namespace MuConvert.mai; public class Statistics { @@ -57,7 +57,7 @@ private void AddNote(Note note) } } - public Statistics(Chart chart) + public Statistics(MaiChart chart) { foreach (var note in chart.Notes) AddNote(note); } diff --git a/maidata/Maidata.cs b/collection/Maidata.cs similarity index 99% rename from maidata/Maidata.cs rename to collection/Maidata.cs index e789435..0695b9f 100644 --- a/maidata/Maidata.cs +++ b/collection/Maidata.cs @@ -2,7 +2,7 @@ using System.Text; using MuConvert.utils; -namespace MuConvert.maidata; +namespace MuConvert.mai; public record MaidataChart(string Inote, string? Level = null, string? NoteDesigner = null); diff --git a/generator/IGenerator.cs b/generator/IGenerator.cs index 611daa3..3077b68 100644 --- a/generator/IGenerator.cs +++ b/generator/IGenerator.cs @@ -3,7 +3,7 @@ namespace MuConvert.generator; -public interface IGenerator +public interface IGenerator where TChart : IBaseChart { - public (string, List) Generate(Chart chart); + public (string, List) Generate(TChart chart); } \ No newline at end of file diff --git a/generator/MA2Generator.cs b/generator/mai/MA2Generator.cs similarity index 98% rename from generator/MA2Generator.cs rename to generator/mai/MA2Generator.cs index 72295a1..641c6e4 100644 --- a/generator/MA2Generator.cs +++ b/generator/mai/MA2Generator.cs @@ -1,12 +1,12 @@ using System.Text; -using MuConvert.chart; +using MuConvert.generator; using MuConvert.utils; using Rationals; using static MuConvert.utils.Alert.LEVEL; -namespace MuConvert.generator; +namespace MuConvert.mai; -public class MA2Generator : IGenerator +public class MA2Generator : IGenerator { protected record MA2Line(string Name, int Bar, int Tick, int Key, string Extra = "") { @@ -29,7 +29,7 @@ public MA2Generator(bool isUtage = false) public int MA2Version = 105; public int RSL = 384; - protected Chart chart; + protected MaiChart chart; protected List lines = []; protected readonly List alerts = []; @@ -315,7 +315,7 @@ protected void GenerateStatistics(StringBuilder result, Statistics stats) result.AppendLine(); } - public (string, List) Generate(Chart _chart) + public (string, List) Generate(MaiChart _chart) { if (chart != null) throw new Exception(Locale.InstanceMultipleUsage); chart = _chart; diff --git a/generator/MA2_103Generator.cs b/generator/mai/MA2_103Generator.cs similarity index 97% rename from generator/MA2_103Generator.cs rename to generator/mai/MA2_103Generator.cs index 3fb6caf..daa20a1 100644 --- a/generator/MA2_103Generator.cs +++ b/generator/mai/MA2_103Generator.cs @@ -1,7 +1,6 @@ -using MuConvert.chart; -using MuConvert.utils; +using MuConvert.utils; -namespace MuConvert.generator; +namespace MuConvert.mai; public class MA2_103Generator : MA2Generator { diff --git a/generator/SimaiGenerator.cs b/generator/mai/SimaiGenerator.cs similarity index 98% rename from generator/SimaiGenerator.cs rename to generator/mai/SimaiGenerator.cs index ae9fa6d..2336ebf 100644 --- a/generator/SimaiGenerator.cs +++ b/generator/mai/SimaiGenerator.cs @@ -1,10 +1,10 @@ using System.Numerics; -using MuConvert.chart; +using MuConvert.generator; using MuConvert.utils; using Rationals; using static MuConvert.utils.Alert.LEVEL; -namespace MuConvert.generator; +namespace MuConvert.mai; class SimaiNote { @@ -22,7 +22,7 @@ public SimaiNote(Rational time, string note, int falseEachIndex, bool isBpm = fa } }; -public class SimaiGenerator : IGenerator +public class SimaiGenerator : IGenerator { /** * 这是一个Workaround的选项。 @@ -36,7 +36,7 @@ public class SimaiGenerator : IGenerator private readonly List alerts = []; private string result = ""; // 不用StringBuilder是因为生成过程不可避免地需要对字符串做一些回溯的操作,需要倒着从字符串中查找字符。这样的场景下,StringBuilder并无性能优势,用string就够了。 #pragma warning disable CS8618 - private Chart chart; + private MaiChart chart; #pragma warning restore CS8618 private int bpmIdx = 0; // 当前遍历到了哪个bpm @@ -129,7 +129,7 @@ private string DurationStr(Rational start, Duration duration, bool forceAbsTime private string DurationStr(Note note) => DurationStr(note.Time, note.Duration); - public (string, List) Generate(Chart _chart) + public (string, List) Generate(MaiChart _chart) { if (chart != null) throw new Exception(Locale.InstanceMultipleUsage); chart = _chart; diff --git a/i18n/Locale.Designer.cs b/i18n/Locale.Designer.cs index 60758d9..8690ef7 100644 --- a/i18n/Locale.Designer.cs +++ b/i18n/Locale.Designer.cs @@ -338,6 +338,15 @@ public static string MessageAt { } } + /// + /// Looks up a localized string similar to bar time {0:W}. + /// + public static string MessageBar { + get { + return ResourceManager.GetString("MessageBar", resourceCulture); + } + } + /// /// Looks up a localized string similar to line {0}. /// @@ -357,7 +366,7 @@ public static string MessageParsing { } /// - /// Looks up a localized string similar to bar time {0:W}({1:F2}s). + /// Looks up a localized string similar to {0:F2}s. /// public static string MessageTime { get { @@ -365,6 +374,15 @@ public static string MessageTime { } } + /// + /// Looks up a localized string similar to bar time {0:W}({1:F2}s). + /// + public static string MessageTimeAndBar { + get { + return ResourceManager.GetString("MessageTimeAndBar", resourceCulture); + } + } + /// /// Looks up a localized string similar to The chart has no BPM line; parsing cannot continue!. /// diff --git a/i18n/Locale.ja.resx b/i18n/Locale.ja.resx index 2e02323..ab5bab3 100644 --- a/i18n/Locale.ja.resx +++ b/i18n/Locale.ja.resx @@ -79,9 +79,15 @@ {0} 行目 - + {0:W} 小節({1:F2} 秒) + + {0:F2} 秒 + + + {0:W} 小節 + 「{0}」の解析中 diff --git a/i18n/Locale.ko.resx b/i18n/Locale.ko.resx index f57ab91..edb8843 100644 --- a/i18n/Locale.ko.resx +++ b/i18n/Locale.ko.resx @@ -79,9 +79,15 @@ {0}번째 줄 - + {0:W}마디({1:F2}초) + + {0:F2}초 + + + {0:W}마디 + "{0}" 파싱 중 diff --git a/i18n/Locale.resx b/i18n/Locale.resx index 68c3dd4..6b292ce 100644 --- a/i18n/Locale.resx +++ b/i18n/Locale.resx @@ -79,9 +79,15 @@ line {0} - + bar time {0:W}({1:F2}s) + + {0:F2}s + + + bar time {0:W} + parsing "{0}" diff --git a/i18n/Locale.zh-hant.resx b/i18n/Locale.zh-hant.resx index aba622a..095e0cd 100644 --- a/i18n/Locale.zh-hant.resx +++ b/i18n/Locale.zh-hant.resx @@ -79,9 +79,15 @@ 第{0}行 - + 第{0:W}小節({1:F2}秒) + + 第{0:F2}秒 + + + 第{0:W}小節 + 解析 "{0}" 時 diff --git a/i18n/Locale.zh.resx b/i18n/Locale.zh.resx index d4a0d5c..47c8cd8 100644 --- a/i18n/Locale.zh.resx +++ b/i18n/Locale.zh.resx @@ -79,9 +79,15 @@ 第{0}行 - + 第{0:W}小节({1:F2}秒) + + 第{0:F2}秒 + + + 第{0:W}小节 + 解析 "{0}" 时 diff --git a/parser/IParser.cs b/parser/IParser.cs index 65bd095..9339afc 100644 --- a/parser/IParser.cs +++ b/parser/IParser.cs @@ -3,7 +3,7 @@ namespace MuConvert.parser; -public interface IParser +public interface IParser where TChart : IBaseChart { - public (Chart, List) Parse(string text); + public (TChart, List) Parse(string text); } \ No newline at end of file diff --git a/parser/simai/ErrorStrategy.cs b/parser/mai/ErrorStrategy.cs similarity index 99% rename from parser/simai/ErrorStrategy.cs rename to parser/mai/ErrorStrategy.cs index ec26ca4..dc068e2 100644 --- a/parser/simai/ErrorStrategy.cs +++ b/parser/mai/ErrorStrategy.cs @@ -6,7 +6,7 @@ using P = MuConvert.Antlr.SimaiParser; using Utils = MuConvert.utils.Utils; -namespace MuConvert.parser.simai; +namespace MuConvert.mai; public class ErrorListener(SimaiParser simaiParser): BaseErrorListener, IAntlrErrorListener { diff --git a/parser/MA2Parser.cs b/parser/mai/MA2Parser.cs similarity index 93% rename from parser/MA2Parser.cs rename to parser/mai/MA2Parser.cs index 6964adf..27673b4 100644 --- a/parser/MA2Parser.cs +++ b/parser/mai/MA2Parser.cs @@ -1,14 +1,15 @@ using System.Text.RegularExpressions; using MuConvert.chart; +using MuConvert.parser; using MuConvert.utils; using Rationals; using static MuConvert.utils.Alert.LEVEL; -namespace MuConvert.parser; +namespace MuConvert.mai; -public class MA2Parser : IParser +public class MA2Parser : IParser { - private readonly Chart chart = new(); + private readonly MaiChart chart = new(); private readonly List alerts = []; private bool bpmRead = false; @@ -26,23 +27,24 @@ private bool AssertInHeader(int lineNo, ReadOnlySpan line) private void Fail(string reason, int lineNo, ReadOnlySpan line) { - alerts.Add(new Alert(Error, reason, null, lineNo, line.ToString())); + alerts.Add(new Alert(Error, reason, lineNo, line.ToString())); throw new ConversionException(alerts); } private void WarnParamsCount(int lineNo, ReadOnlySpan line, Rational? time) { - alerts.Add(new Alert(Warning, Locale.MA2NoteSentenceTooManyParam, time != null ? (chart, time.Value) : null, lineNo, line.ToString())); + Alert alert; + if (time != null) alert = new Alert(Warning, Locale.MA2NoteSentenceTooManyParam, (chart, time.Value), lineNo, line.ToString()); + else alert = new Alert(Warning, Locale.MA2NoteSentenceTooManyParam, lineNo, line.ToString()); + alerts.Add(alert); } - private Rational _endTime(Slide slide) => slide.Time + slide.WaitTime.Bar + slide.Duration.Bar; - private Dictionary Cmd103 = new() { ["BRK"] = "BRTAP", ["XTP"] = "EXTAP", ["XHO"] = "EXHLD", ["BST"] = "BRSTR", ["XST"] = "EXSTR" }; - public (Chart, List) Parse(string text) + public (MaiChart, List) Parse(string text) { if (bpmRead) throw new Exception(Locale.InstanceMultipleUsage); @@ -164,14 +166,14 @@ private void WarnParamsCount(int lineNo, ReadOnlySpan line, Rational? time slide.segments.Add(segment); // 根据最新的segment结果,更新缓存里的值,以便万一有CN星星接在这后面的话,可以找到 - _slides.Add((_endTime(slide), slide.EndKey), slide); + _slides.Add((slide.EndTime, slide.EndKey), slide); if (values.Length != 7) WarnParamsCount(lineNo, line, time); } else { if (bpmRead) Fail(Locale.InvalidMA2Sentence, lineNo, line); // 在主体部分的不认识语句,直接失败 - else alerts.Add(new Alert(Warning, Locale.InvalidMA2SentenceWarning, null, lineNo, line.ToString())); // 在头部分的,只给一个警告 + else alerts.Add(new Alert(Warning, Locale.InvalidMA2SentenceWarning, lineNo, line.ToString())); // 在头部分的,只给一个警告 continue; } @@ -195,7 +197,7 @@ private void WarnParamsCount(int lineNo, ReadOnlySpan line, Rational? time else { if (bpmRead) Fail(Locale.InvalidMA2Sentence, lineNo, line); // 在主体部分的不认识语句,直接失败 - else alerts.Add(new Alert(Warning, Locale.InvalidMA2SentenceWarning, null, lineNo, line.ToString())); // 在头部分的,只给一个警告 + else alerts.Add(new Alert(Warning, Locale.InvalidMA2SentenceWarning, lineNo, line.ToString())); // 在头部分的,只给一个警告 } } diff --git a/parser/simai/Simai.g4 b/parser/mai/Simai.g4 similarity index 100% rename from parser/simai/Simai.g4 rename to parser/mai/Simai.g4 diff --git a/parser/simai/SimaiParser.cs b/parser/mai/SimaiParser.cs similarity index 99% rename from parser/simai/SimaiParser.cs rename to parser/mai/SimaiParser.cs index 9e3f17d..cc0a56e 100644 --- a/parser/simai/SimaiParser.cs +++ b/parser/mai/SimaiParser.cs @@ -4,7 +4,7 @@ using Antlr4.Runtime.Tree; using MuConvert.Antlr; using MuConvert.chart; -using MuConvert.parser.simai; +using MuConvert.parser; using MuConvert.utils; using Rationals; using static MuConvert.utils.Alert.LEVEL; @@ -12,9 +12,9 @@ using L = MuConvert.Antlr.SimaiLexer; using Utils = MuConvert.utils.Utils; -namespace MuConvert.parser; +namespace MuConvert.mai; -public partial class SimaiParser : SimaiBaseVisitor, IParser +public partial class SimaiParser : SimaiBaseVisitor, IParser { /** * 表示parser工作的严格程度的枚举。默认为Normal。 @@ -26,7 +26,7 @@ public partial class SimaiParser : SimaiBaseVisitor, IParser public enum StrictLevelEnum { Strict, Normal, Lax } public StrictLevelEnum StrictLevel; - internal readonly Chart chart; + internal readonly MaiChart chart; internal readonly List alerts = []; private Rational now = 0; @@ -44,7 +44,7 @@ public enum StrictLevelEnum { Strict, Normal, Lax } public SimaiParser(bool bigTouch = false, int clockCount = 4, StrictLevelEnum strictLevel = StrictLevelEnum.Normal) { - chart = new Chart { DefaultTouchSize = bigTouch ? "L1" : "M1", ClockCount = clockCount}; + chart = new MaiChart { DefaultTouchSize = bigTouch ? "L1" : "M1", ClockCount = clockCount}; StrictLevel = strictLevel; } @@ -115,7 +115,7 @@ private CommonTokenStream TokenProcess(CommonTokenStream src) return new CommonTokenStream(lexer); } - public (Chart, List) Parse(string text) + public (MaiChart, List) Parse(string text) { if (now != 0) throw new Exception(Locale.InstanceMultipleUsage); P.ChartContext root; diff --git a/tests/chu/example.cs b/tests/chu/example.cs new file mode 100644 index 0000000..8ea2b17 --- /dev/null +++ b/tests/chu/example.cs @@ -0,0 +1,12 @@ +namespace MuConvert.Tests.chu; + +public class Example +{ + // TODO 示例测试,仅用来把文件夹创出来(git不会跟踪空文件夹) + // 之后删掉即可 + [Fact] + public void ExampleTest() + { + Assert.Equal(1, 1); + } +} \ No newline at end of file diff --git a/tests/chu/testset/placeholder.txt b/tests/chu/testset/placeholder.txt new file mode 100644 index 0000000..a94df34 --- /dev/null +++ b/tests/chu/testset/placeholder.txt @@ -0,0 +1,2 @@ +TODO 示例测试数据,仅用来把文件夹创出来(git不会跟踪空文件夹) +中二相关的测试数据,请按一定的结构组织在这里(tests/chu/testset)下。 \ No newline at end of file diff --git "a/tests/BPMList\346\265\213\350\257\225.cs" "b/tests/mai/BPMList\346\265\213\350\257\225.cs" similarity index 96% rename from "tests/BPMList\346\265\213\350\257\225.cs" rename to "tests/mai/BPMList\346\265\213\350\257\225.cs" index ab19e33..ec035d1 100644 --- "a/tests/BPMList\346\265\213\350\257\225.cs" +++ "b/tests/mai/BPMList\346\265\213\350\257\225.cs" @@ -1,8 +1,8 @@ using MuConvert.chart; using Rationals; -using static MuConvert.Tests.TestUtils; +using static MuConvert.Tests.mai.TestUtils; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; public class BPMList测试 { diff --git "a/tests/ChartShift\346\265\213\350\257\225.cs" "b/tests/mai/ChartShift\346\265\213\350\257\225.cs" similarity index 94% rename from "tests/ChartShift\346\265\213\350\257\225.cs" rename to "tests/mai/ChartShift\346\265\213\350\257\225.cs" index 50ff4ab..26e066d 100644 --- "a/tests/ChartShift\346\265\213\350\257\225.cs" +++ "b/tests/mai/ChartShift\346\265\213\350\257\225.cs" @@ -1,22 +1,23 @@ using MuConvert.chart; +using MuConvert.mai; using Rationals; -using static MuConvert.Tests.TestUtils; +using static MuConvert.Tests.mai.TestUtils; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; /// -/// :使用某官谱(SimaiParser 解析)作为真实谱面数据。 +/// :使用某官谱(SimaiParser 解析)作为真实谱面数据。 /// public class ChartShift测试 { private static readonly Rational QuarterBar = new(1, 4); - private static List<(Rational Time, int FalseEachIdx)> NotesInStableOrder(Chart c) => + private static List<(Rational Time, int FalseEachIdx)> NotesInStableOrder(MaiChart c) => c.Notes.OrderBy(n => n.Time).ThenBy(n => n.FalseEachIdx).Select(n => (n.Time, n.FalseEachIdx)).ToList(); - private static List BpmInOrder(Chart c) => c.BpmList.OrderBy(x => x.Time).ToList(); + private static List BpmInOrder(MaiChart c) => c.BpmList.OrderBy(x => x.Time).ToList(); - private static void AssertShiftResultTimelineValid(Chart c) + private static void AssertShiftResultTimelineValid(MaiChart c) { Assert.True(c.BpmList[0].Time == 0, "BPM 起点应在 0"); foreach (var b in c.BpmList) diff --git "a/tests/MA2_103\346\265\213\350\257\225.cs" "b/tests/mai/MA2_103\346\265\213\350\257\225.cs" similarity index 94% rename from "tests/MA2_103\346\265\213\350\257\225.cs" rename to "tests/mai/MA2_103\346\265\213\350\257\225.cs" index 4537bf4..53f68ca 100644 --- "a/tests/MA2_103\346\265\213\350\257\225.cs" +++ "b/tests/mai/MA2_103\346\265\213\350\257\225.cs" @@ -1,11 +1,9 @@ using System.Text; -using MuConvert.generator; -using MuConvert.maidata; -using MuConvert.parser; +using MuConvert.mai; using MuConvert.utils; -using static MuConvert.Tests.TestUtils; +using static MuConvert.Tests.mai.TestUtils; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; /// /// 官谱中 golden MA2 头为 1.03.00 的谱面:Simai(lv5)→ 与对应 *03.ma2 音符段一致。 @@ -15,8 +13,7 @@ public class MA2_103测试 public static IEnumerable Official103Lv5() { const int levelId = 5; - var repoRoot = FindRepoRoot(); - var testsetRoot = Path.Combine(repoRoot.FullName, "tests", "testset", "官谱"); + var testsetRoot = Path.Combine(FindTestsetRoot().FullName, "官谱"); if (!Directory.Exists(testsetRoot)) throw new DirectoryNotFoundException($"Testset root not found: {testsetRoot}"); diff --git "a/tests/MA2\350\275\254Simai\346\265\213\350\257\225.cs" "b/tests/mai/MA2\350\275\254Simai\346\265\213\350\257\225.cs" similarity index 98% rename from "tests/MA2\350\275\254Simai\346\265\213\350\257\225.cs" rename to "tests/mai/MA2\350\275\254Simai\346\265\213\350\257\225.cs" index da22fe2..ce845a2 100644 --- "a/tests/MA2\350\275\254Simai\346\265\213\350\257\225.cs" +++ "b/tests/mai/MA2\350\275\254Simai\346\265\213\350\257\225.cs" @@ -1,14 +1,11 @@ using System.Globalization; using System.Text; using System.Text.RegularExpressions; -using MuConvert.chart; -using MuConvert.generator; -using MuConvert.maidata; -using MuConvert.parser; +using MuConvert.mai; using Rationals; using Xunit.Abstractions; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; /// /// 官谱 MA2 → Simai 与 maidata 中 inote 的比对:不逐字对比 Simai 文本,而是把双方按「顶层逗号」展开为 @@ -79,7 +76,7 @@ public static List Flatten(string simai) public static void AssertTimelineEqual( IReadOnlyList expected, IReadOnlyList actual, - Chart chart, + MaiChart chart, ITestOutputHelper? output = null) { static IEnumerable Canon(IReadOnlyList e) => @@ -111,7 +108,7 @@ static IEnumerable Canon(IReadOnlyList e) => private static bool Near(double a, double b) => Math.Abs(a - b) < 1e-3; - private static void AssertNoteEqual(string expected, string actual, int noteIdx, Rational time, Chart chart) + private static void AssertNoteEqual(string expected, string actual, int noteIdx, Rational time, MaiChart chart) { var expArr = RearrangeNote(expected).Split('/', '`'); var actArr = RearrangeNote(actual).Split('/', '`'); diff --git "a/tests/Maidata\346\250\241\345\235\227\346\265\213\350\257\225.cs" "b/tests/mai/Maidata\346\250\241\345\235\227\346\265\213\350\257\225.cs" similarity index 93% rename from "tests/Maidata\346\250\241\345\235\227\346\265\213\350\257\225.cs" rename to "tests/mai/Maidata\346\250\241\345\235\227\346\265\213\350\257\225.cs" index 11621f5..8cc72a5 100644 --- "a/tests/Maidata\346\250\241\345\235\227\346\265\213\350\257\225.cs" +++ "b/tests/mai/Maidata\346\250\241\345\235\227\346\265\213\350\257\225.cs" @@ -1,8 +1,8 @@ using System.Text; -using MuConvert.maidata; -using static MuConvert.Tests.TestUtils; +using MuConvert.mai; +using static MuConvert.Tests.mai.TestUtils; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; /// /// Maidata 读写与 ToString 往返:testset 中的 maidata.txt 为输入。 @@ -16,8 +16,7 @@ public class Maidata模块测试 public static IEnumerable MaidataFiles() { - var root = FindRepoRoot(); - var dir = Path.Combine(root.FullName, "tests", "testset", "自制谱"); + var dir = Path.Combine(FindTestsetRoot().FullName, "自制谱"); string[] TO_TEST_CHARTS = ["Pre-STAR", "蝴蝶", "流光(Light Me Up)"]; foreach (var chart in TO_TEST_CHARTS) { diff --git "a/tests/Simai\347\211\207\346\256\265\346\265\213\350\257\225.cs" "b/tests/mai/Simai\347\211\207\346\256\265\346\265\213\350\257\225.cs" similarity index 95% rename from "tests/Simai\347\211\207\346\256\265\346\265\213\350\257\225.cs" rename to "tests/mai/Simai\347\211\207\346\256\265\346\265\213\350\257\225.cs" index b190b57..6300ee7 100644 --- "a/tests/Simai\347\211\207\346\256\265\346\265\213\350\257\225.cs" +++ "b/tests/mai/Simai\347\211\207\346\256\265\346\265\213\350\257\225.cs" @@ -1,17 +1,16 @@ using System.Globalization; using System.Text; -using MuConvert.generator; -using MuConvert.parser; +using MuConvert.mai; using MuConvert.utils; -using static MuConvert.Tests.TestUtils; +using static MuConvert.Tests.mai.TestUtils; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; public class Simai片段测试 { public static IEnumerable FragmentYamlFiles() { - var root = Path.Combine(FindRepoRoot().FullName, "tests", "testset", "片段"); + var root = Path.Combine(FindTestsetRoot().FullName, "片段"); if (!Directory.Exists(root)) throw new DirectoryNotFoundException($"片段测例目录不存在: {root}"); diff --git "a/tests/Simai\347\272\240\351\224\231\346\265\213\350\257\225.cs" "b/tests/mai/Simai\347\272\240\351\224\231\346\265\213\350\257\225.cs" similarity index 99% rename from "tests/Simai\347\272\240\351\224\231\346\265\213\350\257\225.cs" rename to "tests/mai/Simai\347\272\240\351\224\231\346\265\213\350\257\225.cs" index 5bb81e8..7fc6f18 100644 --- "a/tests/Simai\347\272\240\351\224\231\346\265\213\350\257\225.cs" +++ "b/tests/mai/Simai\347\272\240\351\224\231\346\265\213\350\257\225.cs" @@ -1,9 +1,8 @@ -using MuConvert.generator; -using MuConvert.parser; +using MuConvert.mai; using Xunit.Abstractions; using static MuConvert.utils.Alert.LEVEL; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; /// /// 针对另一项目中 FixChartSimaiSharp / SimaiParser.Preprocess 计划支持的常见非标准 Simai 写法。 diff --git "a/tests/Simai\350\275\254MA2\346\265\213\350\257\225.cs" "b/tests/mai/Simai\350\275\254MA2\346\265\213\350\257\225.cs" similarity index 95% rename from "tests/Simai\350\275\254MA2\346\265\213\350\257\225.cs" rename to "tests/mai/Simai\350\275\254MA2\346\265\213\350\257\225.cs" index e32afdb..f2ab435 100644 --- "a/tests/Simai\350\275\254MA2\346\265\213\350\257\225.cs" +++ "b/tests/mai/Simai\350\275\254MA2\346\265\213\350\257\225.cs" @@ -1,12 +1,10 @@ using System.Text; -using MuConvert.generator; -using MuConvert.maidata; -using MuConvert.parser; +using MuConvert.mai; using MuConvert.utils; using Xunit.Abstractions; -using static MuConvert.Tests.TestUtils; +using static MuConvert.Tests.mai.TestUtils; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; /* 都是让AI写的 */ public class Simai转MA2测试 @@ -16,8 +14,7 @@ public class Simai转MA2测试 public Simai转MA2测试(ITestOutputHelper output) => _output = output; public static IEnumerable GetTestInputs(string dataDir) => TestUtils.GetTestInputs(dataDir); - - // TODO 再多找一些自制谱加进来吧 + [Theory] [MemberData(nameof(GetTestInputs), "自制谱")] public void 自制谱转MA2测试(TestInput c) => TestChart(c); diff --git "a/tests/Statistics\346\265\213\350\257\225.cs" "b/tests/mai/Statistics\346\265\213\350\257\225.cs" similarity index 94% rename from "tests/Statistics\346\265\213\350\257\225.cs" rename to "tests/mai/Statistics\346\265\213\350\257\225.cs" index b92d09a..af9f404 100644 --- "a/tests/Statistics\346\265\213\350\257\225.cs" +++ "b/tests/mai/Statistics\346\265\213\350\257\225.cs" @@ -1,10 +1,9 @@ using System.Text; -using MuConvert.generator; -using MuConvert.parser; +using MuConvert.mai; using Xunit.Abstractions; -using static MuConvert.Tests.TestUtils; +using static MuConvert.Tests.mai.TestUtils; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; /// /// 官谱 MA2 → Chart()→ MA2( / )轮回合后, @@ -20,8 +19,7 @@ public class Statistics测试 public static IEnumerable OfficialLevel5() { const int levelId = 5; - var repoRoot = FindRepoRoot(); - var testsetRoot = Path.Combine(repoRoot.FullName, "tests", "testset", "官谱"); + var testsetRoot = Path.Combine(FindTestsetRoot().FullName, "官谱"); if (!Directory.Exists(testsetRoot)) throw new DirectoryNotFoundException($"Testset root not found: {testsetRoot}"); diff --git a/tests/TestUtils.cs b/tests/mai/TestUtils.cs similarity index 87% rename from tests/TestUtils.cs rename to tests/mai/TestUtils.cs index 93f0ee5..9001a56 100644 --- a/tests/TestUtils.cs +++ b/tests/mai/TestUtils.cs @@ -1,32 +1,28 @@ using System.Text; using System.Text.RegularExpressions; -using MuConvert.chart; -using MuConvert.maidata; -using MuConvert.parser; +using MuConvert.mai; using MuConvert.utils; using YamlDotNet.Serialization; -namespace MuConvert.Tests; +namespace MuConvert.Tests.mai; internal static class TestUtils { private static readonly Regex Ma2ClkDefLineRegex = new(@"^CLK_DEF\t(\d+)\s*$", RegexOptions.Multiline | RegexOptions.CultureInvariant); private static readonly Regex Ma2ClkLineRegex = new(@"^CLK\t(\d+)\s", RegexOptions.Multiline | RegexOptions.CultureInvariant); - /// - /// 从测试运行目录向上查找包含 MuConvert.csproj 的仓库根目录。 - /// - public static DirectoryInfo FindRepoRoot() + // 查找到测试数据的根目录(tests/mai/testset) + public static DirectoryInfo FindTestsetRoot() { - var dir = new DirectoryInfo(AppContext.BaseDirectory); - while (dir != null && !File.Exists(Path.Combine(dir.FullName, "MuConvert.csproj"))) - dir = dir.Parent; - return dir ?? throw new DirectoryNotFoundException("Could not locate repo root (MuConvert.csproj)."); + var dir = AppContext.BaseDirectory; + while (dir != null && !File.Exists(Path.Combine(dir, "MuConvert.Tests.csproj"))) + dir = Path.GetDirectoryName(dir); + return new DirectoryInfo(Path.Combine(dir ?? throw new DirectoryNotFoundException("Could not locate repo root."), "mai", "testset")); } /// /// 自 MA2 文本中用正则匹配首行 CLK_DEF\t…(官机头字段名;部分资料误写为 CLOCK_DEF),返回其整数值; - /// 与 的关系为 CLK_DEF = 96 * ClockCountRESOLUTION 为 384 时)。 + /// 与 的关系为 CLK_DEF = 96 * ClockCountRESOLUTION 为 384 时)。 /// public static int? TryParseMa2ClkDef(string ma2Text) { @@ -107,10 +103,9 @@ private static bool IsMa2HeaderOrBpmLine(string line) => line.StartsWith("MET\t", StringComparison.Ordinal) || line.StartsWith("CLK\t", StringComparison.Ordinal); - public static Chart LoadOneChart(out List alerts) + public static MaiChart LoadOneChart(out List alerts) { - var repo = FindRepoRoot(); - var maidataPath = Path.Combine(repo.FullName, "tests", "testset", "官谱", "Xaleid◆scopiX [DX]", "maidata.txt"); + var maidataPath = Path.Combine(FindTestsetRoot().FullName, "官谱", "Xaleid◆scopiX [DX]", "maidata.txt"); Assert.True(File.Exists(maidataPath), $"Missing test maidata: {maidataPath}"); var maidata = new Maidata(File.ReadAllText(maidataPath, Encoding.UTF8)); @@ -131,8 +126,7 @@ public static Chart LoadOneChart(out List alerts) public static IEnumerable GetTestInputs(string dataDir, int? lv = null, string? title = null) { - var repoRoot = FindRepoRoot(); - var testsetRoot = Path.Combine(repoRoot.FullName, "tests", "testset", dataDir); + var testsetRoot = Path.Combine(FindTestsetRoot().FullName, dataDir); if (!Directory.Exists(testsetRoot)) throw new DirectoryNotFoundException($"Testset root not found: {testsetRoot}"); diff --git "a/tests/testset/\345\256\230\350\260\261/Believe the Rainbow/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Believe the Rainbow/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Believe the Rainbow/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Believe the Rainbow/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Believe the Rainbow/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Believe the Rainbow/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Believe the Rainbow/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Believe the Rainbow/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Believe the Rainbow/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Believe the Rainbow/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Believe the Rainbow/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Catch the Wave [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Catch the Wave [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Crazy Circle [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Crazy Circle [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/DETARAME ROCK&ROLL THEORY/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ether Strike [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Ether Strike [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Grievous Lady [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Grievous Lady [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/04.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/04.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/04.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/04.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/PANDORA PARADOXXX/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/QuiQ [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/QuiQ [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/QuiQ [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/QuiQ [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/QuiQ [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/QuiQ [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/QuiQ [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/QuiQ [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/QuiQ [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/QuiQ [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/QuiQ [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Ref\357\274\232rain (for 7th Heaven) [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/04.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/04.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/04.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/04.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STARTLINER [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/STARTLINER [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/04.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/04.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/04.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/04.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/STEREOSCAPE [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Transcend Lights [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Transcend Lights [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/04.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/04.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/04.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/04.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/Xaleid\342\227\206scopiX [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/[\345\215\224]\344\270\211\345\246\226\347\262\276SAY YA!!!/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/[\345\233\236]\345\233\236\343\202\213\347\251\272\343\201\206\343\201\225\343\201\216/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/[\347\226\221]\343\203\255\343\202\255/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\244\343\203\263\343\203\211\343\202\242\347\263\273\343\201\252\343\202\211\343\203\210\343\203\251\343\203\203\343\202\257\343\203\241\343\202\244\343\202\253\343\203\274 [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/\343\202\246\343\203\237\343\203\246\343\203\252\346\265\267\345\272\225\350\255\232/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/04.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/04.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/04.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/04.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\263\273\343\201\216\343\201\246 [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/\347\276\244\351\235\222\343\202\267\343\202\260\343\203\212\343\203\253 [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\204\263\346\274\277\347\202\270\350\243\202\343\202\254\343\203\274\343\203\253 [DX]/maidata.txt" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/00.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/00.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/00.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/00.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/01.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/01.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/01.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/01.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/02.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/02.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/02.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/02.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/03.ma2" "b/tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/03.ma2" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/03.ma2" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/03.ma2" diff --git "a/tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/maidata.txt" "b/tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/maidata.txt" similarity index 100% rename from "tests/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/maidata.txt" rename to "tests/mai/testset/\345\256\230\350\260\261/\350\272\257\346\250\271\343\201\256\345\242\223\345\256\210 [DX]/maidata.txt" diff --git "a/tests/testset/\347\211\207\346\256\265/tap\345\217\214\346\212\274\346\262\241\346\234\211\346\226\234\346\235\240.yaml" "b/tests/mai/testset/\347\211\207\346\256\265/tap\345\217\214\346\212\274\346\262\241\346\234\211\346\226\234\346\235\240.yaml" similarity index 100% rename from "tests/testset/\347\211\207\346\256\265/tap\345\217\214\346\212\274\346\262\241\346\234\211\346\226\234\346\235\240.yaml" rename to "tests/mai/testset/\347\211\207\346\256\265/tap\345\217\214\346\212\274\346\262\241\346\234\211\346\226\234\346\235\240.yaml" diff --git "a/tests/testset/\347\211\207\346\256\265/\344\274\252\345\217\214\346\212\274.yaml" "b/tests/mai/testset/\347\211\207\346\256\265/\344\274\252\345\217\214\346\212\274.yaml" similarity index 100% rename from "tests/testset/\347\211\207\346\256\265/\344\274\252\345\217\214\346\212\274.yaml" rename to "tests/mai/testset/\347\211\207\346\256\265/\344\274\252\345\217\214\346\212\274.yaml" diff --git "a/tests/testset/\347\211\207\346\256\265/\345\220\204\347\247\215\351\224\231\350\257\257\345\244\247\346\267\267\345\220\210.yaml" "b/tests/mai/testset/\347\211\207\346\256\265/\345\220\204\347\247\215\351\224\231\350\257\257\345\244\247\346\267\267\345\220\210.yaml" similarity index 100% rename from "tests/testset/\347\211\207\346\256\265/\345\220\204\347\247\215\351\224\231\350\257\257\345\244\247\346\267\267\345\220\210.yaml" rename to "tests/mai/testset/\347\211\207\346\256\265/\345\220\204\347\247\215\351\224\231\350\257\257\345\244\247\346\267\267\345\220\210.yaml" diff --git "a/tests/testset/\347\211\207\346\256\265/\345\244\232\346\254\241\350\277\236\347\273\255\344\274\252\345\217\214\346\212\274\347\254\246\345\217\267.yaml" "b/tests/mai/testset/\347\211\207\346\256\265/\345\244\232\346\254\241\350\277\236\347\273\255\344\274\252\345\217\214\346\212\274\347\254\246\345\217\267.yaml" similarity index 100% rename from "tests/testset/\347\211\207\346\256\265/\345\244\232\346\254\241\350\277\236\347\273\255\344\274\252\345\217\214\346\212\274\347\254\246\345\217\267.yaml" rename to "tests/mai/testset/\347\211\207\346\256\265/\345\244\232\346\254\241\350\277\236\347\273\255\344\274\252\345\217\214\346\212\274\347\254\246\345\217\267.yaml" diff --git "a/tests/testset/\347\211\207\346\256\265/\346\231\256\351\200\232\345\244\264\346\230\237\346\230\237\344\277\256\351\245\260\347\254\246.yaml" "b/tests/mai/testset/\347\211\207\346\256\265/\346\231\256\351\200\232\345\244\264\346\230\237\346\230\237\344\277\256\351\245\260\347\254\246.yaml" similarity index 100% rename from "tests/testset/\347\211\207\346\256\265/\346\231\256\351\200\232\345\244\264\346\230\237\346\230\237\344\277\256\351\245\260\347\254\246.yaml" rename to "tests/mai/testset/\347\211\207\346\256\265/\346\231\256\351\200\232\345\244\264\346\230\237\346\230\237\344\277\256\351\245\260\347\254\246.yaml" diff --git "a/tests/testset/\347\211\207\346\256\265/\350\277\236\347\273\255\347\232\204pp.yaml" "b/tests/mai/testset/\347\211\207\346\256\265/\350\277\236\347\273\255\347\232\204pp.yaml" similarity index 100% rename from "tests/testset/\347\211\207\346\256\265/\350\277\236\347\273\255\347\232\204pp.yaml" rename to "tests/mai/testset/\347\211\207\346\256\265/\350\277\236\347\273\255\347\232\204pp.yaml" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Alone intelligence/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/02.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/02.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/02.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/02.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Asphodelus/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/005016_04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Auburn Halo/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/BLUE_NOTES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Big Money/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Big Money/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Big Money/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Big Money/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Big Money/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Big Money/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Big Money/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Big Money/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Big Money/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Big Money/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Big Money/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Big Money/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/California Gurls/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/California Gurls/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/California Gurls/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/California Gurls/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/California Gurls/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/California Gurls/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/California Gurls/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/California Gurls/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/California Gurls/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/California Gurls/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/California Gurls/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/California Gurls/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/02.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/02.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/02.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/02.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Cuvism3/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/D_N_A/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/D_N_A/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/D_N_A/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/D_N_A/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/D_N_A/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/D_N_A/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/D_N_A/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/D_N_A/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/D_N_A/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/D_N_A/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/D_N_A/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/D_N_A/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Divide et impera!/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Doll's Garden/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/EFX/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/EFX/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/EFX/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/EFX/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/EFX/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/EFX/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/EFX/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/EFX/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/EFX/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/EFX/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/EFX/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/EFX/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/015015_04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/015015_04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/015015_04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/015015_04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Ex-Otogibanashi (Anime ver.)/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/First Snow/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/First Snow/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/First Snow/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/First Snow/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/First Snow/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/First Snow/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/First Snow/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/First Snow/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/First Snow/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/First Snow/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/First Snow/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/First Snow/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/GO CRY GO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Immaculate/04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Immaculate/04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Immaculate/04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Immaculate/04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Immaculate/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Immaculate/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Immaculate/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Immaculate/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Immaculate/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Immaculate/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Immaculate/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Immaculate/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/LibrariA/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/LibrariA/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/LibrariA/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/LibrariA/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/LibrariA/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/LibrariA/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/LibrariA/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/LibrariA/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/LibrariA/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/LibrariA/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/LibrariA/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/LibrariA/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/MENDES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/MENDES/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Not Your Angel/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_02.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_02.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_02.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_02.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/015002_03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Pre-STAR/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Run/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Run/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Run/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Run/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Run/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Run/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Run/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Run/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Run/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Run/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Run/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Run/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Soranji/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Soranji/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Soranji/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Soranji/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Soranji/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Soranji/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Soranji/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Soranji/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Soranji/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Soranji/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Soranji/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Soranji/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Super Driver/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Super Driver/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Super Driver/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Super Driver/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Super Driver/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Super Driver/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Super Driver/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Super Driver/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Super Driver/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Super Driver/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Super Driver/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Super Driver/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Teriqma/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Teriqma/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Tiny Giant \345\260\217\345\267\250\346\230\237/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/Unlimited Hyperlink/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/X\346\254\241\345\205\203\343\201\270\343\202\210\343\201\206\343\201\223\343\201\235/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/YOUNITHM/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\206\343\201\276\343\201\231\343\201\216\343\202\260\343\203\253\343\203\241\343\203\220\343\203\254\343\203\274\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\201\250\343\201\206\343\201\273\343\201\206\342\230\206\343\203\257\343\203\263\343\203\200\343\203\274\343\203\251\343\203\263\343\203\211 feat.\345\210\235\351\237\263\343\203\237\343\202\257 \303\227 \351\217\241\351\237\263\343\203\252\343\203\263 \303\227 \351\217\241\351\237\263\343\203\254\343\203\263 \303\227 KAITO/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\343\202\267\343\203\206\343\202\243\343\203\251\343\202\244\343\203\204/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\344\273\212\343\200\201\346\255\251\343\201\215\345\207\272\343\201\231\345\220\233\343\201\270\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\206\231\345\204\200\343\201\256\345\260\221\345\245\263Lix/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/02.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/02.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/02.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/02.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\345\244\242\350\246\213\343\202\213\343\201\276\343\201\276\343\201\253\346\201\213\343\202\222\343\201\227\343\201\246/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\231\202\351\233\250/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\234\252\345\256\214\346\210\220\343\202\271\343\203\210\343\203\251\343\202\244\343\203\211/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\250\261\351\233\252\345\272\247/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\255\246\350\243\205\344\271\231\345\245\263/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_02.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_02.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_02.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_02.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/015006_04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\201\345\205\211\357\274\210Light Me Up\357\274\211/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\346\265\267\347\245\236/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\206\261\346\203\205\343\201\256\343\202\271\343\203\232\343\202\257\343\203\210\343\203\251\343\203\240/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\207\246\343\200\205/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\210\261\350\250\200\345\217\266V/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\347\247\201\343\200\201\346\241\210\345\261\261\345\255\220\343\200\202/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_02.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_02.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_02.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_02.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_04.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_04.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_04.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/015004_04.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\350\235\264\350\235\266/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\255\224\347\220\206\346\262\231\343\201\253\343\201\252\343\202\212\343\201\237\343\201\204\343\201\243\357\274\201/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/03.ma2" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/03.ma2" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/03.ma2" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/03.ma2" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/maidata.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/maidata.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/maidata.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/maidata.txt" diff --git "a/tests/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/\346\235\245\346\272\220\350\257\264\346\230\216.txt" "b/tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/\346\235\245\346\272\220\350\257\264\346\230\216.txt" similarity index 100% rename from "tests/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/\346\235\245\346\272\220\350\257\264\346\230\216.txt" rename to "tests/mai/testset/\350\207\252\345\210\266\350\260\261/\351\273\204\350\211\262\345\217\221\347\273\231\346\210\221/\346\235\245\346\272\220\350\257\264\346\230\216.txt" diff --git a/utils/Error.cs b/utils/Error.cs index 8ce9e7e..d3ce27f 100644 --- a/utils/Error.cs +++ b/utils/Error.cs @@ -1,5 +1,4 @@ -using MuConvert.chart; -using Rationals; +using Rationals; namespace MuConvert.utils; @@ -8,31 +7,48 @@ public class Alert public enum LEVEL { Error, Warning, Info, Debug } public LEVEL Level; - public (Chart, Rational)? BarTime; + public Rational? TimeInBar; + public double? TimeInSeconds; public int? Line; public string? RelevantNote; public string Description; - public Alert(LEVEL level, string description, (Chart, Rational)? barTime = null, int? line = null, string? relevantNote = null) + public Alert(LEVEL level, string description) { Level = level; Description = description; - BarTime = barTime; + } + + public Alert(LEVEL level, string description, int? line = null, string? relevantNote = null) + : this(level, description) + { Line = line; RelevantNote = relevantNote; } + + public Alert(LEVEL level, string description, Rational? timeInBar = null, double? timeInSeconds = null, int? line = null, string? relevantNote = null) + : this(level, description, line, relevantNote) + { + TimeInBar = timeInBar; + TimeInSeconds = timeInSeconds; + } + + public Alert(LEVEL level, string description, (mai.MaiChart, Rational) barTime, int? line = null, string? relevantNote = null) + : this(level, description, line, relevantNote) + { + var (chart, time) = barTime; + TimeInBar = time; + if (chart.BpmList.Count > 0) TimeInSeconds = (double)chart.ToSecond(time); + } public override string ToString() { List tags = []; if (Line != null) tags.Add(string.Format(Locale.MessageLine, Line)); - if (BarTime != null) - { - var (chart, time) = BarTime.Value; - var sec = chart.BpmList.Count > 0 ? (float)chart.ToSecond(time) : float.NaN; - tags.Add(string.Format(Locale.MessageTime, time.CanonicalForm, sec)); - } + if (TimeInBar != null && TimeInSeconds != null) tags.Add(string.Format(Locale.MessageTimeAndBar, TimeInBar.Value.CanonicalForm, TimeInSeconds.Value)); + else if (TimeInBar != null) tags.Add(string.Format(Locale.MessageBar, TimeInBar.Value.CanonicalForm)); + else if (TimeInSeconds != null) tags.Add(string.Format(Locale.MessageTime, TimeInSeconds.Value)); if (RelevantNote != null) tags.Add(string.Format(Locale.MessageParsing, RelevantNote)); var tagString = tags.Count > 0 ? $"({Locale.MessageAt} {string.Join(", ", tags)}) " : "";