diff --git a/ICSharpCode.Decompiler/Tests/Helpers/CodeAssert.cs b/ICSharpCode.Decompiler/Tests/Helpers/CodeAssert.cs index e03e3948c..65a86d42e 100644 --- a/ICSharpCode.Decompiler/Tests/Helpers/CodeAssert.cs +++ b/ICSharpCode.Decompiler/Tests/Helpers/CodeAssert.cs @@ -6,27 +6,30 @@ using NUnit.Framework; namespace ICSharpCode.Decompiler.Tests.Helpers { - public class CodeAssert + public static class CodeAssert { public static void FilesAreEqual(string fileName1, string fileName2) { AreEqual(File.ReadAllText(fileName1), File.ReadAllText(fileName2)); } - + public static void AreEqual(string input1, string input2) { var diff = new StringWriter(); - if (!Compare(input1, input2, diff)) { + if (!CodeComparer.Compare(input1, input2, diff, CodeComparer.NormalizeLine)) { Assert.Fail(diff.ToString()); } } + } - static bool Compare(string input1, string input2, StringWriter diff) + public static class CodeComparer + { + public static bool Compare(string input1, string input2, StringWriter diff, Func normalizeLine) { var differ = new AlignedDiff( NormalizeAndSplitCode(input1), NormalizeAndSplitCode(input2), - new CodeLineEqualityComparer(), + new CodeLineEqualityComparer(normalizeLine), new StringSimilarityComparer(), new StringAlignmentFilter()); @@ -71,12 +74,18 @@ namespace ICSharpCode.Decompiler.Tests.Helpers class CodeLineEqualityComparer : IEqualityComparer { private IEqualityComparer baseComparer = EqualityComparer.Default; + private Func normalizeLine; + + public CodeLineEqualityComparer(Func normalizeLine) + { + this.normalizeLine = normalizeLine; + } public bool Equals(string x, string y) { return baseComparer.Equals( - NormalizeLine(x), - NormalizeLine(y) + normalizeLine(x), + normalizeLine(y) ); } @@ -86,13 +95,13 @@ namespace ICSharpCode.Decompiler.Tests.Helpers } } - private static string NormalizeLine(string line) + public static string NormalizeLine(string line) { line = line.Trim(); - var index = line.IndexOf("//"); + var index = line.IndexOf("//", StringComparison.Ordinal); if (index >= 0) { return line.Substring(0, index); - } else if (line.StartsWith("#")) { + } else if (line.StartsWith("#", StringComparison.Ordinal)) { return string.Empty; } else { return line; diff --git a/ILSpy.BamlDecompiler/Tests/BamlTestRunner.cs b/ILSpy.BamlDecompiler/Tests/BamlTestRunner.cs index b1e12a735..61819f0d9 100644 --- a/ILSpy.BamlDecompiler/Tests/BamlTestRunner.cs +++ b/ILSpy.BamlDecompiler/Tests/BamlTestRunner.cs @@ -64,7 +64,7 @@ namespace ILSpy.BamlDecompiler.Tests { RunTest("cases/dictionary1"); } - + [Test] public void MarkupExtension() { @@ -110,9 +110,22 @@ namespace ILSpy.BamlDecompiler.Tests Assert.IsNotNull(bamlStream); XDocument document = BamlResourceEntryNode.LoadIntoDocument(resolver, assembly, bamlStream); - CodeAssert.AreEqual(File.ReadAllText(sourcePath), document.ToString()); + XamlIsEqual(File.ReadAllText(sourcePath), document.ToString()); } - + + void XamlIsEqual(string input1, string input2) + { + var diff = new StringWriter(); + if (!CodeComparer.Compare(input1, input2, diff, NormalizeLine)) { + Assert.Fail(diff.ToString()); + } + } + + string NormalizeLine(string line) + { + return line.Trim(); + } + Stream LoadBaml(Resource res, string name) { EmbeddedResource er = res as EmbeddedResource; diff --git a/ILSpy.BamlDecompiler/Tests/Cases/Issue445.xaml b/ILSpy.BamlDecompiler/Tests/Cases/Issue445.xaml index 1c447620d..204dd7e8c 100644 --- a/ILSpy.BamlDecompiler/Tests/Cases/Issue445.xaml +++ b/ILSpy.BamlDecompiler/Tests/Cases/Issue445.xaml @@ -1,4 +1,4 @@ - +