swig/Examples/test-suite/python/li_std_string_runme.py

138 lines
3.1 KiB
Python

import sys
from li_std_string import *
def check(condition):
if not condition:
raise RuntimeError
# Bad Unicode input check
# This check is run first to check that %error_clear is called the first time SWIG_AsPtr_std_string()
# is called setting the descriptor singleton (by calling SWIG_TypeQuery()).
# Bug https://github.com/swig/swig/issues/3051.
exceptionRaised = False
try:
if sys.version_info[0:2] < (3, 0):
v = u"./\uDCFC.conf"
else:
v = "./\uDCFC.conf"
test_value(v)
except TypeError:
exceptionRaised = True
check(exceptionRaised)
# Checking expected use of %typemap(in) std::string {}
test_value("Fee")
# Checking expected result of %typemap(out) std::string {}
check(test_value("Fi") == "Fi")
# Verify type-checking for %typemap(in) std::string {}
exceptionRaised = False
try:
test_value(0)
except TypeError:
exceptionRaised = True
check(exceptionRaised)
# Checking expected use of %typemap(in) const std::string & {}
test_const_reference("Fo")
# Checking expected result of %typemap(out) const std::string& {}
check(test_const_reference("Fum") == "Fum")
# Verify type-checking for %typemap(in) const std::string & {}
exceptionRaised = False
try:
test_const_reference(0)
except TypeError:
exceptionRaised = True
check(exceptionRaised)
#
# Input and output typemaps for pointers and non-const references to
# std::string are *not* supported; the following tests confirm
# that none of these cases are slipping through.
#
exceptionRaised = False
try:
test_pointer("foo")
except TypeError:
exceptionRaised = True
check(exceptionRaised)
result = test_pointer_out()
check(not isinstance(result, str))
exceptionRaised = False
try:
test_const_pointer("bar")
except TypeError:
exceptionRaised = True
check(exceptionRaised)
result = test_const_pointer_out()
check(not isinstance(result, str))
exceptionRaised = False
try:
test_reference("foo")
except TypeError:
exceptionRaised = True
check(exceptionRaised)
result = test_reference_out()
check(not isinstance(result, str))
# Member Strings
myStructure = Structure()
if myStructure.MemberString2 != "member string 2":
raise RuntimeError
s = "Hello"
myStructure.MemberString2 = s
if myStructure.MemberString2 != s:
raise RuntimeError
if myStructure.ConstMemberString != "const member string":
raise RuntimeError
if cvar.Structure_StaticMemberString2 != "static member string 2":
raise RuntimeError
cvar.Structure_StaticMemberString2 = s
if cvar.Structure_StaticMemberString2 != s:
raise RuntimeError
if Structure.ConstStaticMemberString != "const static member string":
raise RuntimeError
if test_reference_input("hello") != "hello":
raise RuntimeError
s = test_reference_inout("hello")
if s != "hellohello":
raise RuntimeError
if test_reference_output() != "output":
raise RuntimeError
if stdstring_empty() != "":
raise RuntimeError
if c_empty() != "":
raise RuntimeError
if c_null() != None:
raise RuntimeError
if get_null(c_null()) != None:
raise RuntimeError
if get_null(c_empty()) != "non-null":
raise RuntimeError
if get_null(stdstring_empty()) != "non-null":
raise RuntimeError