sphinx-autoapi/tests/test_domains.py

115 lines
4.8 KiB
Python
Raw Normal View History

'''Test .NET autoapi domain'''
import unittest
from mock import patch
2015-06-10 21:23:50 +00:00
from autoapi.mappers import dotnet
class DomainTests(unittest.TestCase):
2015-06-01 19:37:22 +00:00
def setUp(self):
'''Test setup'''
class _config(object):
autoapi_dir = '/tmp/autoapi/tmp'
autoapi_root = '/tmp/autoapi/root'
class _application(object):
config = _config()
2015-06-01 19:37:22 +00:00
def warn(self, *args, **kwargs):
pass
self.application = _application()
def test_create_class(self):
'''Test .NET class instance creation helper'''
2015-06-10 21:23:50 +00:00
dom = dotnet.DotNetSphinxMapper(self.application)
2015-06-01 19:37:22 +00:00
def _create_class(data):
return list(dom.create_class(data))[0]
cls = _create_class({'id': 'Foo.Bar', 'type': 'Namespace'})
self.assertIsInstance(cls, dotnet.DotNetNamespace)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Class'})
self.assertIsInstance(cls, dotnet.DotNetClass)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Property'})
self.assertIsInstance(cls, dotnet.DotNetProperty)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Method'})
self.assertIsInstance(cls, dotnet.DotNetMethod)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Enum'})
self.assertIsInstance(cls, dotnet.DotNetEnum)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Constructor'})
self.assertIsInstance(cls, dotnet.DotNetConstructor)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Struct'})
self.assertIsInstance(cls, dotnet.DotNetStruct)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Interface'})
self.assertIsInstance(cls, dotnet.DotNetInterface)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Delegate'})
self.assertIsInstance(cls, dotnet.DotNetDelegate)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Field'})
self.assertIsInstance(cls, dotnet.DotNetField)
2015-06-01 19:37:22 +00:00
cls = _create_class({'id': 'Foo.Bar', 'type': 'Event'})
self.assertIsInstance(cls, dotnet.DotNetEvent)
def test_create_class_with_children(self):
2015-06-10 21:23:50 +00:00
dom = dotnet.DotNetSphinxMapper(self.application)
2015-06-01 19:37:22 +00:00
def _create_class(data):
return list(dom.create_class(data))[0]
cls = _create_class({'id': 'Foo.Bar',
'type': 'Class',
'items': [
{'id': 'Foo.Bar.Baz',
'type': 'Method'}
]})
self.assertIsInstance(cls, dotnet.DotNetClass)
self.assertDictEqual(cls.item_map, {})
@patch('subprocess.check_output', lambda foo: foo)
def test_get_objects(self):
'''Test basic get objects'''
objs = []
2015-08-05 17:27:35 +00:00
def _mock_find(self, patterns, **kwargs):
return {'items': ['foo', 'bar']}
def _mock_read(self, path):
return {'items': [{'id': 'Foo.Bar', 'name': 'Foo', 'type': 'property'},
{'id': 'Foo.Bar2', 'name': 'Bar', 'type': 'property'}],
'id': 'Foo.Bar', 'type': 'Class', 'summary': path}
with patch('autoapi.mappers.dotnet.DotNetSphinxMapper.find_files', _mock_find):
with patch('autoapi.mappers.dotnet.DotNetSphinxMapper.read_file', _mock_read):
dom = dotnet.DotNetSphinxMapper(self.application)
dom.load('', '', '', raise_error=False)
dom.map()
objs = dom.objects
self.assertEqual(len(objs), 2)
self.assertEqual(objs['Foo.Bar'].id, 'Foo.Bar')
self.assertEqual(objs['Foo.Bar'].name, 'Foo.Bar')
self.assertEqual(objs['Foo.Bar2'].id, 'Foo.Bar2')
self.assertEqual(objs['Foo.Bar2'].name, 'Foo.Bar2')
def test_xml_parse(self):
'''XML doc comment parsing'''
ret = dotnet.DotNetPythonMapper.transform_doc_comments(
'This is an example comment <see cref="FOO" />')
self.assertEqual(ret, 'This is an example comment :dn:ref:`FOO`')
ret = dotnet.DotNetPythonMapper.transform_doc_comments(
'This is an example comment <see cref="FOO">inner foo</see>')
self.assertEqual(ret, 'This is an example comment :dn:ref:`FOO`')
ret = dotnet.DotNetPythonMapper.transform_doc_comments(
'Test <see cref="FOO" /> and <see cref="BAR">Blah</see>')
self.assertEqual(ret, 'Test :dn:ref:`FOO` and :dn:ref:`BAR`')
ret = dotnet.DotNetPythonMapper.transform_doc_comments(
'This is an example comment <paramref name="FOO" />')
self.assertEqual(ret, 'This is an example comment ``FOO``')
ret = dotnet.DotNetPythonMapper.transform_doc_comments(
'This is an example comment <typeparamref name="FOO" />')
self.assertEqual(ret, 'This is an example comment ``FOO``')