diff --git a/readme.md b/readme.md index 73f962d2..7b69cf1d 100644 --- a/readme.md +++ b/readme.md @@ -72,8 +72,8 @@ DiffEngine manages launching and cleanup of diff tools. It is designed to be use * **[Diffinity](/docs/diff-tool.md#diffinity)** Windows (Cost: Free with option to donate) * **[ExamDiff](/docs/diff-tool.md#examdiff)** Windows (Cost: Paid) * **[Guiffy](/docs/diff-tool.md#guiffy)** Windows/OSX (Cost: Paid) - * **[KDiff3](/docs/diff-tool.md#kdiff3)** Windows/OSX (Cost: Free) * **[Kaleidoscope](/docs/diff-tool.md#kaleidoscope)** OSX (Cost: Paid) + * **[KDiff3](/docs/diff-tool.md#kdiff3)** Windows/OSX (Cost: Free) * **[Meld](/docs/diff-tool.md#meld)** Windows/OSX/Linux (Cost: Free) * **[MsExcelDiff](/docs/diff-tool.md#msexceldiff)** Windows (Cost: Free) * **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free) diff --git a/src/DiffEngine.Tests/DefinitionsTest.cs b/src/DiffEngine.Tests/DefinitionsTest.cs index 5d1b829d..143640bd 100644 --- a/src/DiffEngine.Tests/DefinitionsTest.cs +++ b/src/DiffEngine.Tests/DefinitionsTest.cs @@ -65,6 +65,14 @@ static string GetOsSupport(OsSupport osSupport) return builder.ToString(); } + [Test] + public async Task ToolOrderMatchesEnumOrder() + { + var definitionsOrder = Definitions.Tools.Select(_ => _.Tool).ToList(); + var enumOrder = Enum.GetValues(typeof(DiffTool)).Cast().ToList(); + await Assert.That(definitionsOrder).IsEquivalentTo(enumOrder); + } + [Test] public void WriteDefaultOrder() { diff --git a/src/DiffEngine/Definitions.cs b/src/DiffEngine/Definitions.cs index 20794294..9af1f297 100644 --- a/src/DiffEngine/Definitions.cs +++ b/src/DiffEngine/Definitions.cs @@ -5,6 +5,7 @@ public static class Definitions public static IReadOnlyCollection Tools { get; } static Definitions() => + // Order determines default tool priority. Keep in sync with the DiffTool enum. Tools = [ Implementation.MsWordDiff(), diff --git a/src/DiffEngine/DiffTool.cs b/src/DiffEngine/DiffTool.cs index 232acb97..ab96dddf 100644 --- a/src/DiffEngine/DiffTool.cs +++ b/src/DiffEngine/DiffTool.cs @@ -1,7 +1,11 @@ namespace DiffEngine; +// The order of this enum determines the default tool priority in DiffTools.Resolved. +// Keep this order in sync with Definitions.Tools. public enum DiffTool { + MsWordDiff, + MsExcelDiff, BeyondCompare, P4Merge, Kaleidoscope, @@ -25,6 +29,4 @@ public enum DiffTool VisualStudioCode, VisualStudio, Cursor, - MsWordDiff, - MsExcelDiff } \ No newline at end of file diff --git a/src/Directory.Build.props b/src/Directory.Build.props index f0b94416..62a03814 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -2,7 +2,7 @@ CS1591;CS0649;NU1608;NU1109 - 19.1.1 + 19.1.2 1.0.0 Testing, Snapshot, Diff, Compare Launches diff tools based on file extensions. Designed to be consumed by snapshot testing libraries.