diff --git a/.gitignore b/.gitignore index 27d3e27e..0f5e8f3d 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,11 @@ build_output.txt /test_interface/ # Local-only verification project -/MFAAvalonia.Tests/ +/MFAAvalonia.Tests/* +# 策略编辑器的回归测试随功能保留,其他本地核对文件继续忽略。 +!/MFAAvalonia.Tests/MFAAvalonia.Tests.csproj +!/MFAAvalonia.Tests/CombatStrategy*Tests.cs /MFAAvalonia/AssemblyInfo.cs workflows/android/__pycache__/mfa_android_agent.cpython-312.pyc +# MAP 本地定制迁移设计文档 +/docs/map定制迁移/ diff --git a/MFAAvalonia.Desktop/MFAAvalonia.Desktop.csproj b/MFAAvalonia.Desktop/MFAAvalonia.Desktop.csproj index ffce18df..a1dddf5f 100644 --- a/MFAAvalonia.Desktop/MFAAvalonia.Desktop.csproj +++ b/MFAAvalonia.Desktop/MFAAvalonia.Desktop.csproj @@ -1,8 +1,8 @@  WinExe - MFAAvalonia - MFAAvalonia + MaaPazugiri + MaaPazugiri net10.0 enable true diff --git a/MFAAvalonia.Desktop/Program.cs b/MFAAvalonia.Desktop/Program.cs index 8c5d6323..8b9fffdf 100644 --- a/MFAAvalonia.Desktop/Program.cs +++ b/MFAAvalonia.Desktop/Program.cs @@ -46,7 +46,7 @@ public static void Main(string[] args) try { - var executablePath = Environment.ProcessPath ?? Path.Combine(AppContext.BaseDirectory, "MFAAvalonia.exe"); + var executablePath = Environment.ProcessPath ?? Path.Combine(AppContext.BaseDirectory, "MaaPazugiri.exe"); var instanceKey = AppRuntime.CreateInstanceKey(executablePath); AppRuntime.Initialize(args, instanceKey); TelemetryService.InitializeBootstrapFromInterface(AppContext.BaseDirectory); diff --git a/MFAAvalonia.Tests/CombatStrategyControlsTests.cs b/MFAAvalonia.Tests/CombatStrategyControlsTests.cs new file mode 100644 index 00000000..4a268715 --- /dev/null +++ b/MFAAvalonia.Tests/CombatStrategyControlsTests.cs @@ -0,0 +1,93 @@ +using Avalonia.Controls; +using Avalonia.Controls.Primitives; +using Avalonia.Interactivity; +using Avalonia.LogicalTree; +using Avalonia.Input; +using MFAAvalonia.Features.CombatStrategies; +using MFAAvalonia.Features.CombatStrategies.Controls; +using System.Linq; +using System; +using System.IO; +using System.Text.Json; +using MFAAvalonia.Views.Pages; +using Xunit; + +namespace MFAAvalonia.Tests; + +[Collection("策略界面")] +public sealed class CombatStrategyControlsTests +{ + [Theory] + [InlineData(0, 60, 0)] + [InlineData(0, 150, 0)] + [InlineData(0, 190, 1)] + [InlineData(0, 350, 2)] + [InlineData(2, 20, 0)] + [InlineData(2, 140, 1)] + public void DragDrop_AccountsForRemovedSourceRow(int from, double y, int expected) + { + var reorder = typeof(StrategyStageCard).Assembly.GetType("MFAAvalonia.Features.CombatStrategies.Controls.StrategyReorder")!; + var calculate = reorder.GetMethod("CalculateDropIndex", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)!; + Avalonia.Rect[] rows = [new(0, 0, 200, 100), new(0, 110, 200, 100), new(0, 220, 200, 100)]; + Assert.Equal(expected, calculate.Invoke(null, [rows, from, y])); + } + + [Fact] + public void PageControls_SaveStageAndUltimateEditsToRealJson() + { + var directory = Path.Combine(Path.GetTempPath(), "map-page-tests", Guid.NewGuid().ToString("N")); + try + { + var session = new StrategyEditorSession(new StrategyStore(directory)); + session.Create("界面策略"); + var view = new CombatStrategyView(session); + view.FindControl