summaryrefslogtreecommitdiff
path: root/tests/scan.py
diff options
context:
space:
mode:
authorStefan Sauer <ensonic@users.sf.net>2018-11-20 10:31:39 +0100
committerStefan Sauer <ensonic@users.sf.net>2018-11-20 10:53:56 +0100
commit75eed8a453ae342e13c6d461196e52308a4189eb (patch)
tree4bfb2af89d976db764fff4953e9c529d4a8139cb /tests/scan.py
parentf4a67cb4afb86ae77b601eca70e78adb657b0f15 (diff)
downloadgtk-doc-75eed8a453ae342e13c6d461196e52308a4189eb.tar.gz
scan: refactor testsuite to prepare for more tests
Extract a base-class so that we can have test classes for each decl-type. Remove 'tests' from the 'bugs' suite that we now cover in the unit-tests.
Diffstat (limited to 'tests/scan.py')
-rw-r--r--tests/scan.py68
1 files changed, 57 insertions, 11 deletions
diff --git a/tests/scan.py b/tests/scan.py
index a58c9d2..fc78aa4 100644
--- a/tests/scan.py
+++ b/tests/scan.py
@@ -24,24 +24,35 @@ import unittest
from gtkdoc import scan
-class ScanHeaderContent(unittest.TestCase):
+class ScanHeaderContetTestCase(unittest.TestCase):
+ """Baseclass for the header scanner tests."""
def setUp(self):
self.decls = []
self.types = []
- self.options = argparse.Namespace(deprecated_guards='')
+ self.options = argparse.Namespace(deprecated_guards='', ignore_decorators='')
def scanHeaderContent(self, content):
return scan.ScanHeaderContent(content, self.decls, self.types,
self.options)
- def test_EmptyInput(self):
- slist, doc_comments = self.scanHeaderContent([])
+ def assertNoDeclFound(self, slist):
self.assertEqual([], slist)
- self.assertEqual({}, doc_comments)
self.assertEqual([], self.decls)
self.assertEqual([], self.types)
+ def assertNothingFound(self, slist, doc_comments):
+ self.assertEqual({}, doc_comments)
+ self.assertNoDeclFound(slist)
+
+
+class ScanHeaderContent(ScanHeaderContetTestCase):
+ """Test generic scanner behaviour."""
+
+ def test_EmptyInput(self):
+ slist, doc_comments = self.scanHeaderContent([])
+ self.assertNothingFound(slist, doc_comments)
+
def test_FindsDocComment(self):
slist, doc_comments = self.scanHeaderContent([
'/** FooBar:',
@@ -55,11 +66,9 @@ class ScanHeaderContent(unittest.TestCase):
'/** FooBar:',
' */'
])
- self.assertEqual([], slist)
- self.assertEqual([], self.decls)
- self.assertEqual([], self.types)
+ self.assertNoDeclFound(slist)
- # test /* < private_header > */ maker
+ # TODO: test /* < private_header > */ maker
def test_SkipSymbolWithPreprocessor(self):
slist, doc_comments = self.scanHeaderContent([
@@ -67,10 +76,47 @@ class ScanHeaderContent(unittest.TestCase):
'extern int bug_512565(void);'
'#endif'
])
- self.assertEqual([], slist)
- self.assertEqual([], self.decls)
+ self.assertNoDeclFound(slist)
+
+
+# ENUM
+
+
+# FUNCTION
+
+
+class ScanHeaderContentMacros(ScanHeaderContetTestCase):
+ """Test parsing of macro declarations."""
+
+ def assertDecl(self, name, decl):
+ d = '<MACRO>\n<NAME>%s</NAME>\n%s</MACRO>\n' % (name, decl)
+ self.assertEqual([d], self.decls)
self.assertEqual([], self.types)
+ def test_FindsMacroNumber(self):
+ slist, doc_comments = self.scanHeaderContent([
+ '#define FOO 1'
+ ])
+ self.assertEqual(['FOO'], slist)
+ self.assertDecl('FOO', '#define FOO 1')
+
+ def test_FindsMacroExpression(self):
+ slist, doc_comments = self.scanHeaderContent([
+ '#define FOO (1 << 1)'
+ ])
+ self.assertEqual(['FOO'], slist)
+ self.assertDecl('FOO', '#define FOO (1 << 1)')
+
+ # TODO: test for a few variants
+ def test_IgnoresInternalMacro(self):
+ slist, doc_comments = self.scanHeaderContent([
+ '#define _BUG_000000b (a) (a*a)'
+ ])
+ self.assertNoDeclFound(slist)
+
+
+# STRUCT
+
if __name__ == '__main__':
unittest.main()