aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2020-08-20 20:57:06 -0400
committerBob Arnson <bob@firegiant.com>2020-08-20 20:57:06 -0400
commit137d438f743198030c6df626b046af04d10abb99 (patch)
tree16d77c6d7df7bba4ac56115dd28b3684173dcd02 /src
parent1fb8fc82e54c9651fe2922c4fc5470c26761afdf (diff)
downloadwix-137d438f743198030c6df626b046af04d10abb99.tar.gz
wix-137d438f743198030c6df626b046af04d10abb99.tar.bz2
wix-137d438f743198030c6df626b046af04d10abb99.zip
Add CompareXml methods to assert XML equality.
Diffstat (limited to 'src')
-rw-r--r--src/WixBuildTools.TestSupport/WixAssert.cs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/WixBuildTools.TestSupport/WixAssert.cs b/src/WixBuildTools.TestSupport/WixAssert.cs
index 32a98463..0882e26e 100644
--- a/src/WixBuildTools.TestSupport/WixAssert.cs
+++ b/src/WixBuildTools.TestSupport/WixAssert.cs
@@ -3,6 +3,8 @@
3namespace WixBuildTools.TestSupport 3namespace WixBuildTools.TestSupport
4{ 4{
5 using System; 5 using System;
6 using System.Linq;
7 using System.Xml.Linq;
6 using Xunit; 8 using Xunit;
7 9
8 public class WixAssert : Assert 10 public class WixAssert : Assert
@@ -14,9 +16,26 @@ namespace WixBuildTools.TestSupport
14 Assert.True(actualLines.Length > i, $"{i}: expectedLines longer than actualLines"); 16 Assert.True(actualLines.Length > i, $"{i}: expectedLines longer than actualLines");
15 Assert.Equal($"{i}: {expectedLines[i]}", $"{i}: {actualLines[i]}"); 17 Assert.Equal($"{i}: {expectedLines[i]}", $"{i}: {actualLines[i]}");
16 } 18 }
19
17 Assert.True(expectedLines.Length == actualLines.Length, "actualLines longer than expectedLines"); 20 Assert.True(expectedLines.Length == actualLines.Length, "actualLines longer than expectedLines");
18 } 21 }
19 22
23 public static void CompareXml(XContainer xExpected, XContainer xActual)
24 {
25 var actuals = xActual.Descendants().Select(x => $"{x.Name.LocalName}:{String.Join(",", x.Attributes().OrderBy(a => a.Name.LocalName).Select(a => $"{a.Name.LocalName}={a.Value}"))}");
26 var expecteds = xExpected.Descendants().Select(x => $"{x.Name.LocalName}:{String.Join(",", x.Attributes().OrderBy(a => a.Name.LocalName).Select(a => $"{a.Name.LocalName}={a.Value}"))}");
27
28 CompareLineByLine(expecteds.OrderBy(s => s).ToArray(), actuals.OrderBy(s => s).ToArray());
29 }
30
31 public static void CompareXml(string expectedPath, string actualPath)
32 {
33 var expectedDoc = XDocument.Load(expectedPath, LoadOptions.PreserveWhitespace | LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);
34 var actualDoc = XDocument.Load(actualPath, LoadOptions.PreserveWhitespace | LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);
35
36 CompareXml(expectedDoc, actualDoc);
37 }
38
20 public static void Succeeded(int hr, string format, params object[] formatArgs) 39 public static void Succeeded(int hr, string format, params object[] formatArgs)
21 { 40 {
22 if (0 > hr) 41 if (0 > hr)