public static IEnumerable <object[]> CodeSnippetsToValidateFallbackForwarder() { yield return(new object[] { CodeSnippets.UserDefinedEntryPoint, TestTargetFramework.Net, true }); // Confirm that all unsupported target frameworks can be generated. { string code = CodeSnippets.BasicParametersAndModifiers <byte>(CodeSnippets.LibraryImportAttributeDeclaration); yield return(new object[] { code, TestTargetFramework.Net5, false }); yield return(new object[] { code, TestTargetFramework.Core, false }); yield return(new object[] { code, TestTargetFramework.Standard, false }); yield return(new object[] { code, TestTargetFramework.Framework, false }); } // Confirm that all unsupported target frameworks fall back to a forwarder. { string code = CodeSnippets.BasicParametersAndModifiers <byte[]>(CodeSnippets.LibraryImportAttributeDeclaration); yield return(new object[] { code, TestTargetFramework.Net5, true }); yield return(new object[] { code, TestTargetFramework.Core, true }); yield return(new object[] { code, TestTargetFramework.Standard, true }); yield return(new object[] { code, TestTargetFramework.Framework, true }); } // Confirm that all unsupported target frameworks fall back to a forwarder. { string code = CodeSnippets.BasicParametersAndModifiersWithStringMarshalling <string>(StringMarshalling.Utf16, CodeSnippets.LibraryImportAttributeDeclaration); yield return(new object[] { code, TestTargetFramework.Net5, true }); yield return(new object[] { code, TestTargetFramework.Core, true }); yield return(new object[] { code, TestTargetFramework.Standard, true }); yield return(new object[] { code, TestTargetFramework.Framework, true }); } // Confirm that if support is missing for any type (like arrays), we fall back to a forwarder even if other types are supported. { string code = CodeSnippets.BasicReturnAndParameterByValue("System.Runtime.InteropServices.SafeHandle", "int[]", CodeSnippets.LibraryImportAttributeDeclaration); yield return(new object[] { code, TestTargetFramework.Net5, true }); yield return(new object[] { code, TestTargetFramework.Core, true }); yield return(new object[] { code, TestTargetFramework.Standard, true }); yield return(new object[] { code, TestTargetFramework.Framework, true }); } }