예제 #1
0
        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 });
            }
        }