Beispiel #1
0
        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());
            }
        }
Beispiel #2
0
        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());
                }
            }
        }
Beispiel #3
0
        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());
                }
            }
        }