sphinx-autoapi/tests/test_objects.py

145 lines
6.2 KiB
Python
Raw Normal View History

# coding=utf8
2019-01-27 05:20:45 +00:00
"""Test .NET autoapi objects"""
2015-08-19 01:18:54 +00:00
import os
import unittest
from collections import namedtuple
import mock
from jinja2 import Environment, FileSystemLoader
2015-06-10 21:23:50 +00:00
from autoapi.mappers import dotnet
from autoapi.mappers import python
from autoapi.settings import TEMPLATE_DIR
2015-10-27 18:13:08 +00:00
class DotNetObjectTests(unittest.TestCase):
def test_type(self):
2019-01-27 05:20:45 +00:00
"""Test types of some of the objects"""
obj = dotnet.DotNetNamespace({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "namespace")
self.assertEqual(obj.ref_type, "namespace")
self.assertEqual(obj.ref_directive, "ns")
obj = dotnet.DotNetMethod({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "method")
self.assertEqual(obj.ref_type, "method")
self.assertEqual(obj.ref_directive, "meth")
obj = dotnet.DotNetProperty({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "property")
self.assertEqual(obj.ref_type, "property")
self.assertEqual(obj.ref_directive, "prop")
obj = dotnet.DotNetEnum({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "enum")
self.assertEqual(obj.ref_type, "enumeration")
self.assertEqual(obj.ref_directive, "enum")
obj = dotnet.DotNetStruct({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "struct")
self.assertEqual(obj.ref_type, "structure")
self.assertEqual(obj.ref_directive, "struct")
obj = dotnet.DotNetConstructor({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "constructor")
self.assertEqual(obj.ref_type, "constructor")
self.assertEqual(obj.ref_directive, "ctor")
obj = dotnet.DotNetInterface({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "interface")
self.assertEqual(obj.ref_type, "interface")
self.assertEqual(obj.ref_directive, "iface")
obj = dotnet.DotNetDelegate({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "delegate")
self.assertEqual(obj.ref_type, "delegate")
self.assertEqual(obj.ref_directive, "del")
obj = dotnet.DotNetClass({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "class")
self.assertEqual(obj.ref_type, "class")
self.assertEqual(obj.ref_directive, "cls")
obj = dotnet.DotNetField({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "field")
self.assertEqual(obj.ref_type, "field")
self.assertEqual(obj.ref_directive, "field")
obj = dotnet.DotNetEvent({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.type, "event")
self.assertEqual(obj.ref_type, "event")
self.assertEqual(obj.ref_directive, "event")
def test_names(self):
2019-01-27 05:20:45 +00:00
"""Test names of objects"""
obj = dotnet.DotNetNamespace({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.name, "Foo.Bar")
self.assertEqual(obj.short_name, "Bar")
obj = dotnet.DotNetNamespace(
{"id": "Foo.Bar.Something`1"}, jinja_env=None, app=None
)
2019-01-27 05:20:45 +00:00
self.assertEqual(obj.name, "Foo.Bar.Something`1")
self.assertEqual(obj.short_name, "Something`1")
def test_namespace_namespace(self):
2019-01-27 05:20:45 +00:00
"""Namespace parent resolution"""
ns = dotnet.DotNetNamespace({"id": "Foo.Bar.Widgets"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(ns.namespace, "Foo.Bar")
ns = dotnet.DotNetNamespace({"id": "Foo.Bar"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(ns.namespace, "Foo")
ns = dotnet.DotNetNamespace({"id": "Foo"}, jinja_env=None, app=None)
self.assertIsNone(ns.namespace)
def test_class_namespace(self):
2019-01-27 05:20:45 +00:00
"""Class parent resolution"""
2019-10-05 23:09:26 +00:00
cls = dotnet.DotNetClass(
dict(id="Foo.Bar.Widget", type="class"), jinja_env=None, app=None,
2019-10-05 23:09:26 +00:00
)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.namespace, "Foo.Bar")
cls = dotnet.DotNetClass(
dict(id="Foo.Bar", type="class"), jinja_env=None, app=None
)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.namespace, "Foo")
cls = dotnet.DotNetClass(dict(id="Foo", type="class"), jinja_env=None, app=None)
self.assertIsNone(cls.namespace)
def test_filename(self):
2019-01-27 05:20:45 +00:00
"""Object file name"""
cls = dotnet.DotNetClass({"id": "Foo.Bar.Widget"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.pathname, os.path.join("Foo", "Bar", "Widget"))
cls = dotnet.DotNetClass({"id": "Foo.Bar.Widget<T>"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.pathname, os.path.join("Foo", "Bar", "Widget-T"))
cls = dotnet.DotNetClass(
{"id": "Foo.Bar.Widget<T>(TFoo)"}, jinja_env=None, app=None
)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.pathname, os.path.join("Foo", "Bar", "Widget-T"))
cls = dotnet.DotNetClass(
{"id": "Foo.Foo-Bar.Widget<T>(TFoo)"}, jinja_env=None, app=None
)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.pathname, os.path.join("Foo", "FooBar", "Widget-T"))
cls = dotnet.DotNetClass({"id": u"Foo.Bär"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.pathname, os.path.join("Foo", "Bar"))
cls = dotnet.DotNetClass({"id": u"Ащщ.юИфк"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.pathname, os.path.join("Ashchshch", "iuIfk"))
def test_rendered_class_escaping(self):
"""Rendered class escaping"""
2019-01-27 05:20:45 +00:00
jinja_env = Environment(loader=FileSystemLoader([TEMPLATE_DIR]))
cls = dotnet.DotNetClass(
{"id": "Foo.Bar`1", "inheritance": ["Foo.Baz`1"]},
jinja_env=jinja_env,
app=mock.MagicMock(),
2019-01-27 05:20:45 +00:00
)
self.assertIn("* :dn:cls:`Foo.Baz\\`1`\n", cls.render())
2015-10-27 18:13:08 +00:00
def test_include_path(self):
"""Include path"""
cls = dotnet.DotNetClass({"id": "Foo.Bar.Widget"}, jinja_env=None, app=None)
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.include_path, "/autoapi/Foo/Bar/Widget/index")
cls = dotnet.DotNetClass({"id": "Foo.Bar.Widget"}, jinja_env=None, app=None)
2019-10-05 22:11:23 +00:00
cls.url_root = "/autofoo"
2019-01-27 05:20:45 +00:00
self.assertEqual(cls.include_path, "/autofoo/Foo/Bar/Widget/index")