public void TestRecursive2() { using (var container = new Win64Container()) { container.VirtualMachine.LoadFunctionsAsAssembly(new List <ManagedFunction>() { TestProgramGenerator.MainWithIntCall(container, "fib", 11), TestProgramGenerator.RecursiveFib(container) }); Assert.AreEqual(89, container.Execute()); } }
public void TestArguments() { for (int i = 1; i <= 16; i++) { using (var container = new Win64Container()) { container.VirtualMachine.LoadFunctionsAsAssembly(new List <ManagedFunction>() { TestProgramGenerator.AddMainFunction(container, i), TestProgramGenerator.AddFunction(container, i) }); Assert.AreEqual(i * (1 + i) / 2, container.Execute()); } } }
public void TestFloatArguments() { for (int i = 1; i <= 16; i++) { using (var container = new Win64Container()) { container.VirtualMachine.LoadFunctionsAsAssembly(new List <ManagedFunction>() { TestProgramGenerator.FloatAddMainFunction(container, i), TestProgramGenerator.FloatAddFunction(container, i) }); container.VirtualMachine.Compile(); var funcPtr = Marshal.GetDelegateForFunctionPointer <FloatMain>( container.VirtualMachine.Binder.GetFunction("floatMain()").EntryPoint); Assert.AreEqual(i * (1 + i) / 2, funcPtr()); } } }