forked from jbcoe/py_cppmodel
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_py_cppmodel.py
More file actions
62 lines (51 loc) · 2.07 KB
/
test_py_cppmodel.py
File metadata and controls
62 lines (51 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import clang
import py_cppmodel
import unittest
clang.cindex.Config.set_library_path("/Library/Developer/CommandLineTools/usr/lib/")
class TestCppModel(unittest.TestCase):
def setUp(self):
tu = clang.cindex.TranslationUnit.from_source(
"sample.cc", ["-x", "c++", "-std=c++20", "-stdlib=libc++"]
)
self.model = py_cppmodel.Model(tu)
def test_filename(self):
self.assertEqual(self.model.filename, "sample.cc")
def test_functions(self):
self.assertEqual(len(self.model.functions), 2)
self.assertEqual(
str(self.model.functions[0]), "<py_cppmodel.Function double bar(double)>"
)
self.assertEqual(
str(self.model.functions[1]), "<py_cppmodel.Function int main()>"
)
def test_classes(self):
self.assertEqual(len(self.model.classes), 1)
self.assertEqual(str(self.model.classes[0]), "<py_cppmodel.Class A>")
self.assertEqual(len(self.model.classes[0].members), 3)
self.assertEqual(
str(self.model.classes[0].members[0]),
"<py_cppmodel.Member <py_cppmodel.Type int> a>",
)
self.assertEqual(
str(self.model.classes[0].members[1]),
"<py_cppmodel.Member <py_cppmodel.Type double> b>",
)
self.assertEqual(
str(self.model.classes[0].members[2]),
"<py_cppmodel.Member <py_cppmodel.Type char[8]> c>",
)
self.assertEqual(len(self.model.classes[0].methods), 1)
self.assertEqual(
str(self.model.classes[0].methods[0]), "<py_cppmodel.Method int foo(int)>"
)
self.assertEqual(len(self.model.unmodelled_nodes), 2)
self.assertEqual(
str(self.model.unmodelled_nodes[0]),
"<py_cppmodel.Unmodelled z <SourceLocation file 'sample.cc', line 1, column 5>>",
)
self.assertEqual(
str(self.model.unmodelled_nodes[1]),
"<py_cppmodel.Unmodelled B<T> <SourceLocation file 'sample.cc', line 12, column 7>>",
)
if __name__ == "__main__":
unittest.main()