def test_class_decl(): clazz = Clazz("test.hpp", "", "MyClass") exporter = CythonDeclarationExporter(Includes(), Config()) exporter.visit_clazz(clazz) exporter.visit_ast(None) decl = exporter.export() assert_multi_line_equal( decl.strip(), lines( "cdef extern from \"test.hpp\" namespace \"\":", " cdef cppclass MyClass:", " pass" ) )
def test_field_decl(): clazz = Clazz("test.hpp", "", "MyClass") field = Field("myField", "double", "MyClass") ignored_field = Field("myField", "double", "MyClass") ignored_field.ignored = True exporter = CythonDeclarationExporter(Includes(), Config()) exporter.visit_field(field) exporter.visit_field(ignored_field) exporter.visit_clazz(clazz) exporter.visit_ast(None) decl = exporter.export() assert_multi_line_equal( decl.strip(), lines( "cdef extern from \"test.hpp\" namespace \"\":", " cdef cppclass MyClass:", " double myField" ) )
def test_ctor_decl(): clazz = Clazz("test.hpp", "", "MyClass") ctor = Constructor("MyClass") ignored_ctor = Constructor("MyClass") ignored_ctor.ignored = True exporter = CythonDeclarationExporter(Includes(), Config()) exporter.visit_constructor(ctor) exporter.visit_constructor(ignored_ctor) exporter.visit_clazz(clazz) exporter.visit_ast(None) decl = exporter.export() assert_multi_line_equal( decl.strip(), lines( "cdef extern from \"test.hpp\" namespace \"\":", " cdef cppclass MyClass:", " MyClass()" ) )
def test_method_decl(): clazz = Clazz("test.hpp", "", "MyClass") method = Method("myMethod", "void", "MyClass") ignored_method = Method("", "", "") ignored_method.ignored = True exporter = CythonDeclarationExporter(Includes(), Config()) exporter.visit_param(Param("myParam", "double")) exporter.visit_method(method) exporter.visit_method(ignored_method) exporter.visit_clazz(clazz) exporter.visit_ast(None) decl = exporter.export() assert_multi_line_equal( decl.strip(), lines( "cdef extern from \"test.hpp\" namespace \"\":", " cdef cppclass MyClass:", " void myMethod(double myParam) except +" ) )