From 911d28993cfd3a30304afb2b9e327f941a8afc35 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 15 Oct 2020 23:16:00 +0100 Subject: [PATCH] Enable additional tests --- .../Tests/FeatureTestRunnerTests.cs | 341 ++++++++++-------- 1 file changed, 183 insertions(+), 158 deletions(-) diff --git a/tests/ImageSharp.Tests/TestUtilities/Tests/FeatureTestRunnerTests.cs b/tests/ImageSharp.Tests/TestUtilities/Tests/FeatureTestRunnerTests.cs index 8eb5c9fd62..eea22592bc 100644 --- a/tests/ImageSharp.Tests/TestUtilities/Tests/FeatureTestRunnerTests.cs +++ b/tests/ImageSharp.Tests/TestUtilities/Tests/FeatureTestRunnerTests.cs @@ -46,7 +46,7 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests public void AllowsAllHwIntrinsicFeatures() { FeatureTestRunner.RunWithHwIntrinsicsFeature( - () => Assert.True(Vector.IsHardwareAccelerated, nameof(Vector.IsHardwareAccelerated)), + () => Assert.True(Vector.IsHardwareAccelerated), HwIntrinsics.AllowAll); } @@ -54,7 +54,7 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests public void CanLimitHwIntrinsicSIMDFeatures() { FeatureTestRunner.RunWithHwIntrinsicsFeature( - () => Assert.False(Vector.IsHardwareAccelerated, nameof(Vector.IsHardwareAccelerated)), + () => Assert.False(Vector.IsHardwareAccelerated), HwIntrinsics.DisableSIMD); } @@ -87,170 +87,195 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.Tests } #endif - // [Fact] - // public void CanLimitHwIntrinsicFeaturesWithIntrinsicsParam() - // { - // static void AssertHwIntrinsicsFeatureDisabled(string intrinsic) - // { - // Assert.NotNull(intrinsic); + [Fact] + public void CanLimitHwIntrinsicFeaturesWithIntrinsicsParam() + { + static void AssertHwIntrinsicsFeatureDisabled(string intrinsic) + { + Assert.NotNull(intrinsic); - // switch ((HwIntrinsics)Enum.Parse(typeof(HwIntrinsics), intrinsic)) - // { - // case HwIntrinsics.DisableSIMD: - // Assert.False(Vector.IsHardwareAccelerated); - // break; - //#if SUPPORTS_RUNTIME_INTRINSICS - // case HwIntrinsics.DisableHWIntrinsic: - // Assert.False(Vector.IsHardwareAccelerated); - // break; - // case HwIntrinsics.DisableSSE: - // Assert.False(Sse.IsSupported); - // break; - // case HwIntrinsics.DisableSSE2: - // Assert.False(Sse2.IsSupported); - // break; - // case HwIntrinsics.DisableAES: - // Assert.False(Aes.IsSupported); - // break; - // case HwIntrinsics.DisablePCLMULQDQ: - // Assert.False(Pclmulqdq.IsSupported); - // break; - // case HwIntrinsics.DisableSSE3: - // Assert.False(Sse3.IsSupported); - // break; - // case HwIntrinsics.DisableSSSE3: - // Assert.False(Ssse3.IsSupported); - // break; - // case HwIntrinsics.DisableSSE41: - // Assert.False(Sse41.IsSupported); - // break; - // case HwIntrinsics.DisableSSE42: - // Assert.False(Sse42.IsSupported); - // break; - // case HwIntrinsics.DisablePOPCNT: - // Assert.False(Popcnt.IsSupported); - // break; - // case HwIntrinsics.DisableAVX: - // Assert.False(Avx.IsSupported); - // break; - // case HwIntrinsics.DisableFMA: - // Assert.False(Fma.IsSupported); - // break; - // case HwIntrinsics.DisableAVX2: - // Assert.False(Avx2.IsSupported); - // break; - // case HwIntrinsics.DisableBMI1: - // Assert.False(Bmi1.IsSupported); - // break; - // case HwIntrinsics.DisableBMI2: - // Assert.False(Bmi2.IsSupported); - // break; - // case HwIntrinsics.DisableLZCNT: - // Assert.False(Lzcnt.IsSupported); - // break; - //#endif - // } - // } + switch ((HwIntrinsics)Enum.Parse(typeof(HwIntrinsics), intrinsic)) + { + case HwIntrinsics.DisableSIMD: + Assert.False(Vector.IsHardwareAccelerated); + break; +#if SUPPORTS_RUNTIME_INTRINSICS + case HwIntrinsics.DisableHWIntrinsic: + Assert.False(Sse.IsSupported); + Assert.False(Sse2.IsSupported); + Assert.False(Aes.IsSupported); + Assert.False(Pclmulqdq.IsSupported); + Assert.False(Sse3.IsSupported); + Assert.False(Ssse3.IsSupported); + Assert.False(Sse41.IsSupported); + Assert.False(Sse42.IsSupported); + Assert.False(Popcnt.IsSupported); + Assert.False(Avx.IsSupported); + Assert.False(Fma.IsSupported); + Assert.False(Avx2.IsSupported); + Assert.False(Bmi1.IsSupported); + Assert.False(Bmi2.IsSupported); + Assert.False(Lzcnt.IsSupported); + break; + case HwIntrinsics.DisableSSE: + Assert.False(Sse.IsSupported); + break; + case HwIntrinsics.DisableSSE2: + Assert.False(Sse2.IsSupported); + break; + case HwIntrinsics.DisableAES: + Assert.False(Aes.IsSupported); + break; + case HwIntrinsics.DisablePCLMULQDQ: + Assert.False(Pclmulqdq.IsSupported); + break; + case HwIntrinsics.DisableSSE3: + Assert.False(Sse3.IsSupported); + break; + case HwIntrinsics.DisableSSSE3: + Assert.False(Ssse3.IsSupported); + break; + case HwIntrinsics.DisableSSE41: + Assert.False(Sse41.IsSupported); + break; + case HwIntrinsics.DisableSSE42: + Assert.False(Sse42.IsSupported); + break; + case HwIntrinsics.DisablePOPCNT: + Assert.False(Popcnt.IsSupported); + break; + case HwIntrinsics.DisableAVX: + Assert.False(Avx.IsSupported); + break; + case HwIntrinsics.DisableFMA: + Assert.False(Fma.IsSupported); + break; + case HwIntrinsics.DisableAVX2: + Assert.False(Avx2.IsSupported); + break; + case HwIntrinsics.DisableBMI1: + Assert.False(Bmi1.IsSupported); + break; + case HwIntrinsics.DisableBMI2: + Assert.False(Bmi2.IsSupported); + break; + case HwIntrinsics.DisableLZCNT: + Assert.False(Lzcnt.IsSupported); + break; +#endif + } + } - // foreach (HwIntrinsics intrinsic in (HwIntrinsics[])Enum.GetValues(typeof(HwIntrinsics))) - // { - // FeatureTestRunner.RunWithHwIntrinsicsFeature(AssertHwIntrinsicsFeatureDisabled, intrinsic); - // } - // } + foreach (HwIntrinsics intrinsic in (HwIntrinsics[])Enum.GetValues(typeof(HwIntrinsics))) + { + FeatureTestRunner.RunWithHwIntrinsicsFeature(AssertHwIntrinsicsFeatureDisabled, intrinsic); + } + } - // [Fact] - // public void CanLimitHwIntrinsicFeaturesWithSerializableParam() - // { - // static void AssertHwIntrinsicsFeatureDisabled(string serializable) - // { - // Assert.NotNull(serializable); - // Assert.NotNull(FeatureTestRunner.Deserialize(serializable)); + [Fact] + public void CanLimitHwIntrinsicFeaturesWithSerializableParam() + { + static void AssertHwIntrinsicsFeatureDisabled(string serializable) + { + Assert.NotNull(serializable); + Assert.NotNull(FeatureTestRunner.Deserialize(serializable)); - //#if SUPPORTS_RUNTIME_INTRINSICS - // Assert.False(Sse.IsSupported); - //#endif - // } +#if SUPPORTS_RUNTIME_INTRINSICS + Assert.False(Sse.IsSupported); +#endif + } - // foreach (HwIntrinsics intrinsic in (HwIntrinsics[])Enum.GetValues(typeof(HwIntrinsics))) - // { - // FeatureTestRunner.RunWithHwIntrinsicsFeature( - // AssertHwIntrinsicsFeatureDisabled, - // HwIntrinsics.DisableSSE, - // new FakeSerializable()); - // } - // } + FeatureTestRunner.RunWithHwIntrinsicsFeature( + AssertHwIntrinsicsFeatureDisabled, + HwIntrinsics.DisableSSE, + new FakeSerializable()); + } - // [Fact] - // public void CanLimitHwIntrinsicFeaturesWithSerializableAndIntrinsicsParams() - // { - // static void AssertHwIntrinsicsFeatureDisabled(string serializable, string intrinsic) - // { - // Assert.NotNull(serializable); - // Assert.NotNull(FeatureTestRunner.Deserialize(serializable)); + [Fact] + public void CanLimitHwIntrinsicFeaturesWithSerializableAndIntrinsicsParams() + { + static void AssertHwIntrinsicsFeatureDisabled(string serializable, string intrinsic) + { + Assert.NotNull(serializable); + Assert.NotNull(FeatureTestRunner.Deserialize(serializable)); - // switch ((HwIntrinsics)Enum.Parse(typeof(HwIntrinsics), intrinsic)) - // { - // case HwIntrinsics.DisableSIMD: - // Assert.False(Vector.IsHardwareAccelerated, nameof(Vector.IsHardwareAccelerated)); - // break; - //#if SUPPORTS_RUNTIME_INTRINSICS - // case HwIntrinsics.DisableHWIntrinsic: - // Assert.False(Vector.IsHardwareAccelerated, nameof(Vector.IsHardwareAccelerated)); - // break; - // case HwIntrinsics.DisableSSE: - // Assert.False(Sse.IsSupported); - // break; - // case HwIntrinsics.DisableSSE2: - // Assert.False(Sse2.IsSupported); - // break; - // case HwIntrinsics.DisableAES: - // Assert.False(Aes.IsSupported); - // break; - // case HwIntrinsics.DisablePCLMULQDQ: - // Assert.False(Pclmulqdq.IsSupported); - // break; - // case HwIntrinsics.DisableSSE3: - // Assert.False(Sse3.IsSupported); - // break; - // case HwIntrinsics.DisableSSSE3: - // Assert.False(Ssse3.IsSupported); - // break; - // case HwIntrinsics.DisableSSE41: - // Assert.False(Sse41.IsSupported); - // break; - // case HwIntrinsics.DisableSSE42: - // Assert.False(Sse42.IsSupported); - // break; - // case HwIntrinsics.DisablePOPCNT: - // Assert.False(Popcnt.IsSupported); - // break; - // case HwIntrinsics.DisableAVX: - // Assert.False(Avx.IsSupported); - // break; - // case HwIntrinsics.DisableFMA: - // Assert.False(Fma.IsSupported); - // break; - // case HwIntrinsics.DisableAVX2: - // Assert.False(Avx2.IsSupported); - // break; - // case HwIntrinsics.DisableBMI1: - // Assert.False(Bmi1.IsSupported); - // break; - // case HwIntrinsics.DisableBMI2: - // Assert.False(Bmi2.IsSupported); - // break; - // case HwIntrinsics.DisableLZCNT: - // Assert.False(Lzcnt.IsSupported); - // break; - //#endif - // } - // } + switch ((HwIntrinsics)Enum.Parse(typeof(HwIntrinsics), intrinsic)) + { + case HwIntrinsics.DisableSIMD: + Assert.False(Vector.IsHardwareAccelerated, nameof(Vector.IsHardwareAccelerated)); + break; +#if SUPPORTS_RUNTIME_INTRINSICS + case HwIntrinsics.DisableHWIntrinsic: + Assert.False(Sse.IsSupported); + Assert.False(Sse2.IsSupported); + Assert.False(Aes.IsSupported); + Assert.False(Pclmulqdq.IsSupported); + Assert.False(Sse3.IsSupported); + Assert.False(Ssse3.IsSupported); + Assert.False(Sse41.IsSupported); + Assert.False(Sse42.IsSupported); + Assert.False(Popcnt.IsSupported); + Assert.False(Avx.IsSupported); + Assert.False(Fma.IsSupported); + Assert.False(Avx2.IsSupported); + Assert.False(Bmi1.IsSupported); + Assert.False(Bmi2.IsSupported); + Assert.False(Lzcnt.IsSupported); + break; + case HwIntrinsics.DisableSSE: + Assert.False(Sse.IsSupported); + break; + case HwIntrinsics.DisableSSE2: + Assert.False(Sse2.IsSupported); + break; + case HwIntrinsics.DisableAES: + Assert.False(Aes.IsSupported); + break; + case HwIntrinsics.DisablePCLMULQDQ: + Assert.False(Pclmulqdq.IsSupported); + break; + case HwIntrinsics.DisableSSE3: + Assert.False(Sse3.IsSupported); + break; + case HwIntrinsics.DisableSSSE3: + Assert.False(Ssse3.IsSupported); + break; + case HwIntrinsics.DisableSSE41: + Assert.False(Sse41.IsSupported); + break; + case HwIntrinsics.DisableSSE42: + Assert.False(Sse42.IsSupported); + break; + case HwIntrinsics.DisablePOPCNT: + Assert.False(Popcnt.IsSupported); + break; + case HwIntrinsics.DisableAVX: + Assert.False(Avx.IsSupported); + break; + case HwIntrinsics.DisableFMA: + Assert.False(Fma.IsSupported); + break; + case HwIntrinsics.DisableAVX2: + Assert.False(Avx2.IsSupported); + break; + case HwIntrinsics.DisableBMI1: + Assert.False(Bmi1.IsSupported); + break; + case HwIntrinsics.DisableBMI2: + Assert.False(Bmi2.IsSupported); + break; + case HwIntrinsics.DisableLZCNT: + Assert.False(Lzcnt.IsSupported); + break; +#endif + } + } - // foreach (HwIntrinsics intrinsic in (HwIntrinsics[])Enum.GetValues(typeof(HwIntrinsics))) - // { - // FeatureTestRunner.RunWithHwIntrinsicsFeature(AssertHwIntrinsicsFeatureDisabled, intrinsic, new FakeSerializable()); - // } - // } + foreach (HwIntrinsics intrinsic in (HwIntrinsics[])Enum.GetValues(typeof(HwIntrinsics))) + { + FeatureTestRunner.RunWithHwIntrinsicsFeature(AssertHwIntrinsicsFeatureDisabled, intrinsic, new FakeSerializable()); + } + } public class FakeSerializable : IXunitSerializable {