move engine builder test

This commit is contained in:
Ilan Schnell 2012-09-22 20:59:03 -05:00
commit 7b0f3cc0c7
2 changed files with 51 additions and 56 deletions

View file

@ -20,6 +20,7 @@ else:
import llvm
from llvm.core import (Module, Type, GlobalVariable, Function, Builder,
Constant, MetaData, MetaDataString, inline_function)
from llvm.ee import EngineBuilder
import llvm.core as lc
import llvm.passes as lp
import llvm.ee as le
@ -383,6 +384,56 @@ tests.append(TestPasses)
# ---------------------------------------------------------------------------
class TestEngineBuilder(unittest.TestCase):
def make_test_module(self):
module = Module.new("testmodule")
fnty = Type.function(Type.int(), [])
function = module.add_function(fnty, 'foo')
bb_entry = function.append_basic_block('entry')
builder = Builder.new(bb_entry)
builder.ret(Constant.int(Type.int(), 0xcafe))
module.verify()
return module
def run_foo(self, ee, module):
function = module.get_function_named('foo')
retval = ee.run_function(function, [])
self.assertEqual(retval.as_int(), 0xcafe)
def test_enginebuilder_basic(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).create()
with self.assertRaises(llvm.LLVMException):
# Ensure the module is owned.
llvm._util.check_is_unowned(module)
self.run_foo(ee, module)
def test_enginebuilder_force_jit(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).force_jit().create()
self.run_foo(ee, module)
def test_enginebuilder_force_interpreter(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).force_interpreter().create()
self.run_foo(ee, module)
def test_enginebuilder_opt(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).opt(3).create()
self.run_foo(ee, module)
tests.append(TestEngineBuilder)
# ---------------------------------------------------------------------------
class TestObjCache(unittest.TestCase):
def test_objcache(self):

View file

@ -1,56 +0,0 @@
from llvm.ee import *
from llvm.core import *
from llvm import _util, LLVMException
from ctypes import *
import unittest, logging
class TestEngineBuilder(unittest.TestCase):
def make_test_module(self):
module = Module.new("testmodule")
fnty = Type.function(Type.int(), [])
function = module.add_function(fnty, 'foo')
bb_entry = function.append_basic_block('entry')
builder = Builder.new(bb_entry)
builder.ret(Constant.int(Type.int(), 0xcafe))
module.verify()
return module
def run_foo(self, ee, module):
function = module.get_function_named('foo')
retval = ee.run_function(function, [])
self.assertEqual(retval.as_int(), 0xcafe)
def test_enginebuilder_basic(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).create()
with self.assertRaises(LLVMException):
# Ensure the module is owned.
_util.check_is_unowned(module)
self.run_foo(ee, module)
def test_enginebuilder_force_jit(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).force_jit().create()
self.run_foo(ee, module)
def test_enginebuilder_force_interpreter(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).force_interpreter().create()
self.run_foo(ee, module)
def test_enginebuilder_opt(self):
module = self.make_test_module()
ee = EngineBuilder.new(module).opt(3).create()
self.run_foo(ee, module)
if __name__ == '__main__':
unittest.main()