From a46ef0eebafea0e5b38c0c6e960be778c2dbb852 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 19 Jan 2023 00:18:26 -0600 Subject: Finish the XML documentation in WixToolset.Mba.Core. 4623 --- .../burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/api/burn/test/WixToolsetTest.Mba.Core') diff --git a/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs b/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs index 6fb8aced..9c213945 100644 --- a/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs +++ b/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs @@ -45,7 +45,7 @@ namespace WixToolsetTest.Mba.Core public void CanCreateFromQword() { var version = new Version(100, 200, 300, 400); - var qwVersion = Engine.VersionToLong(version); + var qwVersion = VersionToLong(version); using var parsedVersion = VerUtil.VersionFromQword(qwVersion); Assert.Equal("100.200.300.400", parsedVersion.Version); @@ -99,5 +99,17 @@ namespace WixToolsetTest.Mba.Core Assert.True(parsedVersion.ReleaseLabels[4].IsNumeric); Assert.Equal(5u, parsedVersion.ReleaseLabels[4].Value); } + + private static long VersionToLong(Version version) + { + // In Windows, each version component has a max value of 65535, + // so we truncate the version before shifting it, which will overflow if invalid. + long major = (long)(ushort)version.Major << 48; + long minor = (long)(ushort)version.Minor << 32; + long build = (long)(ushort)version.Build << 16; + long revision = (long)(ushort)version.Revision; + + return major | minor | build | revision; + } } } -- cgit v1.2.3-55-g6feb