public void TestCallMethodWithOutArgument() { const string typeName = "AssemblyForTests.StaticClass"; var engine = REngine.GetInstance(); ClrProxy.LoadAssembly(PATH); var sexp = engine.CreateNumeric(0.0); var arguments = new[] { (long)sexp.DangerousGetHandle() }; Assert.IsTrue(ClrProxy.CallStaticMethod(typeName, "TryGetValue", arguments, arguments.Length, out var results, out var resultsSize)); Assert.AreEqual(2, resultsSize); Assert.IsTrue(engine.CreateFromNativeSexp(new IntPtr(results[0])).AsLogical()[0]); Assert.AreEqual(12.4, engine.CreateFromNativeSexp(new IntPtr(results[1])).AsNumeric()[0]); Assert.IsTrue(ClrProxy.CreateObject("AssemblyForTests.DefaultCtorData", null, 0, out var ptr)); arguments = new[] { ptr }; Assert.IsTrue(ClrProxy.CallStaticMethod(typeName, "TryGetObject", arguments, arguments.Length, out results, out resultsSize)); Assert.AreEqual(2, resultsSize); Assert.IsTrue(engine.CreateFromNativeSexp(new IntPtr(results[0])).AsLogical()[0]); Assert.IsTrue(ClrProxy.GetProperty(results[1], "Name", out var namePtr)); Assert.AreEqual("Out object", engine.CreateFromNativeSexp(new IntPtr(namePtr)).AsCharacter()[0]); }
public void TestGetAndSetProperty() { var engine = REngine.GetInstance(); ClrProxy.LoadAssembly(PATH); Assert.IsTrue(ClrProxy.CreateObject("AssemblyForTests.DefaultCtorData", null, 0, out var externalPtr)); var sexp = engine.CreateCharacter("Test"); ClrProxy.SetProperty(externalPtr, "Name", sexp.DangerousGetHandle().ToInt64()); Assert.IsTrue(ClrProxy.GetProperty(externalPtr, "Name", out var result)); Assert.AreEqual("Test", engine.CreateFromNativeSexp(new IntPtr(result)).AsCharacter()[0]); }