112391Sjason@lowepower.comfrom pybind11_tests import docstring_options as m
211986Sandreas.sandberg@arm.com
311986Sandreas.sandberg@arm.com
411986Sandreas.sandberg@arm.comdef test_docstring_options():
512391Sjason@lowepower.com    # options.disable_function_signatures()
612391Sjason@lowepower.com    assert not m.test_function1.__doc__
711986Sandreas.sandberg@arm.com
812391Sjason@lowepower.com    assert m.test_function2.__doc__ == "A custom docstring"
911986Sandreas.sandberg@arm.com
1012037Sandreas.sandberg@arm.com    # docstring specified on just the first overload definition:
1112391Sjason@lowepower.com    assert m.test_overloaded1.__doc__ == "Overload docstring"
1212037Sandreas.sandberg@arm.com
1312037Sandreas.sandberg@arm.com    # docstring on both overloads:
1412391Sjason@lowepower.com    assert m.test_overloaded2.__doc__ == "overload docstring 1\noverload docstring 2"
1512037Sandreas.sandberg@arm.com
1612037Sandreas.sandberg@arm.com    # docstring on only second overload:
1712391Sjason@lowepower.com    assert m.test_overloaded3.__doc__ == "Overload docstr"
1812037Sandreas.sandberg@arm.com
1911986Sandreas.sandberg@arm.com    # options.enable_function_signatures()
2012391Sjason@lowepower.com    assert m.test_function3.__doc__ .startswith("test_function3(a: int, b: int) -> None")
2111986Sandreas.sandberg@arm.com
2212391Sjason@lowepower.com    assert m.test_function4.__doc__ .startswith("test_function4(a: int, b: int) -> None")
2312391Sjason@lowepower.com    assert m.test_function4.__doc__ .endswith("A custom docstring\n")
2411986Sandreas.sandberg@arm.com
2511986Sandreas.sandberg@arm.com    # options.disable_function_signatures()
2611986Sandreas.sandberg@arm.com    # options.disable_user_defined_docstrings()
2712391Sjason@lowepower.com    assert not m.test_function5.__doc__
2811986Sandreas.sandberg@arm.com
2911986Sandreas.sandberg@arm.com    # nested options.enable_user_defined_docstrings()
3012391Sjason@lowepower.com    assert m.test_function6.__doc__ == "A custom docstring"
3111986Sandreas.sandberg@arm.com
3211986Sandreas.sandberg@arm.com    # RAII destructor
3312391Sjason@lowepower.com    assert m.test_function7.__doc__ .startswith("test_function7(a: int, b: int) -> None")
3412391Sjason@lowepower.com    assert m.test_function7.__doc__ .endswith("A custom docstring\n")
3511986Sandreas.sandberg@arm.com
3611986Sandreas.sandberg@arm.com    # Suppression of user-defined docstrings for non-function objects
3712391Sjason@lowepower.com    assert not m.DocstringTestFoo.__doc__
3812391Sjason@lowepower.com    assert not m.DocstringTestFoo.value_prop.__doc__
39