flabbet 1 год назад
Родитель
Сommit
70195a6204

BIN
src/PixiEditor.Extensions.Wasm/build/PixiEditor.Api.CGlueMSBuild.dll


+ 1 - 1
tests/CGlueTestLib/Imports.cs

@@ -6,5 +6,5 @@ namespace CGlueTestLib;
 internal static class Imports
 {
     [MethodImpl(MethodImplOptions.InternalCall)]
-    internal static extern void test();
+    internal static extern string string_return_method();
 }

+ 1 - 2
tests/CGlueTestLib/Program.cs

@@ -4,7 +4,6 @@ public static class Program
 {
     public static void Main()
     {
-        Imports.test();
-        Exports.TestExport();
+        
     }
 }

+ 20 - 0
tests/PixiEditor.Api.CGlueMSBuild.Tests/CApiGeneratorTests.cs

@@ -41,6 +41,26 @@ public class CApiGeneratorTests
         Assert.Contains("__attribute__((import_name(\"subscribe_to_event\")))", sanitizedImports);
         Assert.Contains("void subscribe_to_event(int32_t internalControlId, char* eventName, int32_t eventNameLength);", sanitizedImports);
     }
+    
+    [Fact]
+    public void TestThatGenerateImportsForStringReturnTypeGeneratesConversionCorrectly()
+    {
+        CApiGenerator apiGenerator = new CApiGenerator("", (message) => { });
+        AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly("TestAssets/CGlueTestLib.dll");
+        var assemblies = apiGenerator.LoadAssemblies(assembly, "TestAssets");
+
+        var importedMethods = CApiGenerator.GetImportedMethods(assemblies.SelectMany(a => a.MainModule.Types).ToArray());
+        string imports = apiGenerator.GenerateImports([importedMethods.First(x => x.Name == "string_return_method")]);
+
+        string sanitizedImports = imports.Replace("\n", "").Replace("\r", "");
+
+        Assert.Contains("__attribute__((import_name(\"string_return_method\")))", sanitizedImports);
+        Assert.Contains("char* string_return_method();", sanitizedImports);
+        Assert.Contains("MonoString* internal_string_return_method(){", sanitizedImports);
+        Assert.Contains("char* result = string_return_method();", sanitizedImports);
+        Assert.Contains("MonoString* mono_result = mono_string_new(mono_domain_get(), result)", sanitizedImports);
+        Assert.Contains("return mono_result;", sanitizedImports);
+    }
 
     [Fact]
     public void TestThatGenerateExportsGeneratesCorrectExports()

BIN
tests/PixiEditor.Api.CGlueMSBuild.Tests/TestAssets/CGlueTestLib.dll