e5fffbae59cc1cfac7db4b036981ad1790e12457
[oota-llvm.git] / bindings / python / llvm / tests / test_core.py
1 from .base import TestBase
2 from ..core import OpCode
3 from ..core import MemoryBuffer
4 from ..core import PassRegistry
5 from ..core import Context
6 from ..core import Module
7
8 class TestCore(TestBase):
9     def test_opcode(self):
10         self.assertTrue(hasattr(OpCode, 'Ret'))
11         self.assertTrue(isinstance(OpCode.Ret, OpCode))
12         self.assertEqual(OpCode.Ret.value, 1)
13
14         op = OpCode.from_value(1)
15         self.assertTrue(isinstance(op, OpCode))
16         self.assertEqual(op, OpCode.Ret)
17
18     def test_memory_buffer_create_from_file(self):
19         source = self.get_test_file()
20
21         MemoryBuffer(filename=source)
22
23     def test_memory_buffer_failing(self):
24         with self.assertRaises(Exception):
25             MemoryBuffer(filename="/hopefully/this/path/doesnt/exist")
26
27     def test_memory_buffer_len(self):
28         source = self.get_test_file()
29         m = MemoryBuffer(filename=source)
30         self.assertEqual(len(m), 50)
31
32     def test_create_passregistry(self):
33         PassRegistry()
34
35     def test_create_context(self):
36         Context.GetGlobalContext()
37
38     def test_create_module_with_name(self):
39         # Make sure we can not create a module without a LLVMModuleRef.
40         with self.assertRaises(RuntimeError):
41             m = Module()
42         m = Module.CreateWithName("test-module")
43
44     def test_module_getset_datalayout(self):
45         m = Module.CreateWithName("test-module")
46         dl = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
47         m.datalayout = dl
48         self.assertEqual(m.datalayout, dl)
49
50     def test_module_getset_target(self):
51         m = Module.CreateWithName("test-module")
52         m.target = "thumbv7-apple-ios5.0.0"
53         self.assertEqual(m.target, target)
54
55     def test_module_print_module_to_file(self):
56         m = Module.CreateWithName("test")
57         dl = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
58         m.datalayout = dl
59         target = "thumbv7-apple-ios5.0.0"
60         m.target = target
61         m.print_module_to_file("test2.ll")
62