diff --git a/MPF.Core/Converters/EnumConverter.cs b/MPF.Core/Converters/EnumConverter.cs
index 4bcc092e..e1da0fce 100644
--- a/MPF.Core/Converters/EnumConverter.cs
+++ b/MPF.Core/Converters/EnumConverter.cs
@@ -2,10 +2,10 @@
using System.Collections.Concurrent;
using System.IO;
using System.Reflection;
-using MPF.Core.Data;
#if NET_FRAMEWORK
using IMAPI2;
#endif
+using MPF.Core.Data;
using RedumpLib.Data;
namespace MPF.Core.Converters
@@ -103,7 +103,6 @@ namespace MPF.Core.Converters
if (method == null)
method = typeof(EnumConverter).GetMethod("LongName", new[] { typeof(Nullable<>).MakeGenericType(sourceType) });
-
LongNameMethods.TryAdd(sourceType, method);
}
diff --git a/MPF.Library/MPF.Library.csproj b/MPF.Library/MPF.Library.csproj
index 3012d25f..0f2bcd64 100644
--- a/MPF.Library/MPF.Library.csproj
+++ b/MPF.Library/MPF.Library.csproj
@@ -21,6 +21,10 @@
false
+
+ NET_FRAMEWORK
+
+
diff --git a/MPF.Test/Core/Converters/EnumConverterTests.cs b/MPF.Test/Core/Converters/EnumConverterTests.cs
new file mode 100644
index 00000000..e7c5119d
--- /dev/null
+++ b/MPF.Test/Core/Converters/EnumConverterTests.cs
@@ -0,0 +1,168 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+#if NET_FRAMEWORK
+using IMAPI2;
+#endif
+using MPF.Core.Converters;
+using MPF.Core.Data;
+using Xunit;
+
+namespace MPF.Test.Core.Converters
+{
+ public class EnumConverterTests
+ {
+ #region Cross-enumeration conversions
+
+ ///
+ /// DiscType values that map to InternalDriveType
+ ///
+ private static readonly DriveType[] _mappableDriveTypes = new DriveType[]
+ {
+ DriveType.CDRom,
+ DriveType.Fixed,
+ DriveType.Removable,
+ };
+
+#if NET_FRAMEWORK
+ ///
+ /// IMAPI_MEDIA_PHYSICAL_TYPE values that map to MediaType
+ ///
+ private static readonly IMAPI_MEDIA_PHYSICAL_TYPE[] _mappableImapiTypes = new IMAPI_MEDIA_PHYSICAL_TYPE[]
+ {
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_UNKNOWN,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_CDROM,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_CDR,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_CDRW,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDROM,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDRAM,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDPLUSR,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDPLUSRW,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDPLUSR_DUALLAYER,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDDASHR,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDDASHRW,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDDASHR_DUALLAYER,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DISK,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DVDPLUSRW_DUALLAYER,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_HDDVDROM,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_HDDVDR,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_HDDVDRAM,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_BDROM,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_BDR,
+ IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_BDRE,
+ };
+#endif
+
+ ///
+ /// Check that every supported DriveType maps to an InternalDriveType
+ ///
+ /// DriveType value to check
+ /// True to expect a null mapping, false otherwise
+ [Theory]
+ [MemberData(nameof(GenerateDriveTypeMappingTestData))]
+ public void ToInternalDriveTypeTest(DriveType driveType, bool expectNull)
+ {
+ var actual = driveType.ToInternalDriveType();
+
+ if (expectNull)
+ Assert.Null(actual);
+ else
+ Assert.NotNull(actual);
+ }
+
+#if NET_FRAMEWORK
+ ///
+ /// Check that every supported IMAPI_MEDIA_PHYSICAL_TYPE maps to an MediaType
+ ///
+ /// IMAPI_MEDIA_PHYSICAL_TYPE value to check
+ /// True to expect a null mapping, false otherwise
+ [Theory]
+ [MemberData(nameof(GenerateImapiTypeMappingTestData))]
+ public void IMAPIToMediaTypeTest(IMAPI_MEDIA_PHYSICAL_TYPE imapiType, bool expectNull)
+ {
+ var actual = imapiType.IMAPIToMediaType();
+
+ if (expectNull)
+ Assert.Null(actual);
+ else
+ Assert.NotNull(actual);
+ }
+#endif
+
+ ///
+ /// Generate a test set of DriveType values
+ ///
+ /// MemberData-compatible list of DriveType values
+ public static List