|
1 | | -import unittest |
2 | | - |
| 1 | +import pytest |
3 | 2 | from clang.cindex import TranslationUnit |
4 | 3 |
|
5 | 4 | import py_cppmodel |
@@ -35,59 +34,53 @@ class B { |
35 | 34 | """ |
36 | 35 |
|
37 | 36 |
|
38 | | -class TestCppModel(unittest.TestCase): |
39 | | - def setUp(self): |
40 | | - tu = TranslationUnit.from_source( |
41 | | - "sample.cc", |
42 | | - COMPILER_ARGS, |
43 | | - unsaved_files=[("sample.cc", SOURCE)], |
44 | | - ) |
45 | | - self.model = py_cppmodel.Model(tu) |
46 | | - |
47 | | - def test_filename(self): |
48 | | - self.assertEqual(self.model.filename, "sample.cc") |
49 | | - |
50 | | - def test_functions(self): |
51 | | - self.assertEqual(len(self.model.functions), 2) |
52 | | - self.assertEqual(str(self.model.functions[0]), "<py_cppmodel.Function double bar(double)>") |
53 | | - self.assertEqual(str(self.model.functions[1]), "<py_cppmodel.Function int main()>") |
54 | | - |
55 | | - def test_classes(self): |
56 | | - self.assertEqual(len(self.model.classes), 1) |
57 | | - self.assertEqual(str(self.model.classes[0]), "<py_cppmodel.Class A>") |
58 | | - |
59 | | - self.assertEqual(len(self.model.classes[0].annotations), 1) |
60 | | - self.assertEqual(self.model.classes[0].annotations[0], "A") |
61 | | - |
62 | | - self.assertEqual(len(self.model.classes[0].members), 3) |
63 | | - self.assertEqual( |
64 | | - str(self.model.classes[0].members[0]), |
65 | | - "<py_cppmodel.Member <py_cppmodel.Type int> a>", |
66 | | - ) |
67 | | - self.assertEqual( |
68 | | - str(self.model.classes[0].members[1]), |
69 | | - "<py_cppmodel.Member <py_cppmodel.Type double> b>", |
70 | | - ) |
71 | | - self.assertEqual( |
72 | | - str(self.model.classes[0].members[2]), |
73 | | - "<py_cppmodel.Member <py_cppmodel.Type char[8]> c>", |
74 | | - ) |
75 | | - |
76 | | - self.assertEqual(len(self.model.classes[0].methods), 1) |
77 | | - self.assertEqual(str(self.model.classes[0].methods[0]), "<py_cppmodel.Method int foo(int)>") |
78 | | - self.assertEqual(len(self.model.classes[0].methods[0].annotations), 1) |
79 | | - self.assertEqual(self.model.classes[0].methods[0].annotations[0], "foo") |
80 | | - |
81 | | - self.assertEqual(len(self.model.unmodelled_nodes), 2) |
82 | | - self.assertEqual( |
83 | | - str(self.model.unmodelled_nodes[0]), |
84 | | - "<py_cppmodel.Unmodelled z <SourceLocation file 'sample.cc', line 1, column 5>>", |
85 | | - ) |
86 | | - self.assertEqual( |
87 | | - str(self.model.unmodelled_nodes[1]), |
88 | | - "<py_cppmodel.Unmodelled B<T> <SourceLocation file 'sample.cc', line 12, column 7>>", |
89 | | - ) |
90 | | - |
91 | | - |
92 | | -if __name__ == "__main__": |
93 | | - unittest.main() |
| 37 | +@pytest.fixture |
| 38 | +def model(): |
| 39 | + tu = TranslationUnit.from_source( |
| 40 | + "sample.cc", |
| 41 | + COMPILER_ARGS, |
| 42 | + unsaved_files=[("sample.cc", SOURCE)], |
| 43 | + ) |
| 44 | + return py_cppmodel.Model(tu) |
| 45 | + |
| 46 | + |
| 47 | +def test_filename(model): |
| 48 | + assert model.filename == "sample.cc" |
| 49 | + |
| 50 | + |
| 51 | +def test_functions(model): |
| 52 | + assert len(model.functions) == 2 |
| 53 | + assert str(model.functions[0]) == "<py_cppmodel.Function double bar(double)>" |
| 54 | + assert str(model.functions[1]) == "<py_cppmodel.Function int main()>" |
| 55 | + |
| 56 | + |
| 57 | +def test_classes(model): |
| 58 | + assert len(model.classes) == 1 |
| 59 | + assert str(model.classes[0]) == "<py_cppmodel.Class A>" |
| 60 | + |
| 61 | + assert len(model.classes[0].annotations) == 1 |
| 62 | + assert model.classes[0].annotations[0] == "A" |
| 63 | + |
| 64 | + |
| 65 | +def test_class_members(model): |
| 66 | + assert len(model.classes[0].members) == 3 |
| 67 | + assert str(model.classes[0].members[0]) == "<py_cppmodel.Member <py_cppmodel.Type int> a>" |
| 68 | + assert str(model.classes[0].members[1]) == "<py_cppmodel.Member <py_cppmodel.Type double> b>" |
| 69 | + assert str(model.classes[0].members[2]) == "<py_cppmodel.Member <py_cppmodel.Type char[8]> c>" |
| 70 | + |
| 71 | + assert len(model.classes[0].methods) == 1 |
| 72 | + assert str(model.classes[0].methods[0]) == "<py_cppmodel.Method int foo(int)>" |
| 73 | + assert len(model.classes[0].methods[0].annotations) == 1 |
| 74 | + assert model.classes[0].methods[0].annotations[0] == "foo" |
| 75 | + |
| 76 | + |
| 77 | +def test_unmodelled_nodes(model): |
| 78 | + assert len(model.unmodelled_nodes) == 2 |
| 79 | + assert ( |
| 80 | + str(model.unmodelled_nodes[0]) |
| 81 | + == "<py_cppmodel.Unmodelled z <SourceLocation file 'sample.cc', line 1, column 5>>" |
| 82 | + ) |
| 83 | + assert ( |
| 84 | + str(model.unmodelled_nodes[1]) |
| 85 | + == "<py_cppmodel.Unmodelled B<T> <SourceLocation file 'sample.cc', line 12, column 7>>" |
| 86 | + ) |
0 commit comments