import li_std_string_extra x = "hello" if li_std_string_extra.test_ccvalue(x) != x: raise RuntimeError("bad string mapping") if li_std_string_extra.test_cvalue(x) != x: raise RuntimeError("bad string mapping") if li_std_string_extra.test_value(x) != x: raise RuntimeError("bad string mapping {} {}".format(x, li_std_string_extra.test_value(x))) if li_std_string_extra.test_const_reference(x) != x: raise RuntimeError("bad string mapping") s = li_std_string_extra.string("he") #s += "ll" # s.append("o") s = s + "llo" if s != x: raise RuntimeError("bad string mapping {} {}".format(s, x)) if s[1:4] != x[1:4]: raise RuntimeError("bad string mapping") if li_std_string_extra.test_value(s) != x: raise RuntimeError("bad string mapping") if li_std_string_extra.test_const_reference(s) != x: raise RuntimeError("bad string mapping") a = li_std_string_extra.A(s) if li_std_string_extra.test_value(a) != x: raise RuntimeError("bad string mapping") if li_std_string_extra.test_const_reference(a) != x: raise RuntimeError("bad string mapping") b = li_std_string_extra.string(" world") s = a + b if a + b != "hello world": raise RuntimeError("bad string mapping {}".format(a + b)) if a + " world" != "hello world": raise RuntimeError("bad string mapping") # This is expected to fail with -builtin option # Reverse operators not supported in builtin types if not li_std_string_extra.is_python_builtin(): if "hello" + b != "hello world": raise RuntimeError("bad string mapping") c = "hello" + b if c.find_last_of("l") != 9: raise RuntimeError("bad string mapping") s = "hello world" b = li_std_string_extra.B("hi") b.name = li_std_string_extra.string("hello") if b.name != "hello": raise RuntimeError("bad string mapping") b.a = li_std_string_extra.A("hello") if b.a != "hello": raise RuntimeError("bad string mapping") if li_std_string_extra.test_value_basic1(x) != x: raise RuntimeError("bad string mapping") if li_std_string_extra.test_value_basic2(x) != x: raise RuntimeError("bad string mapping") if li_std_string_extra.test_value_basic3(x) != x: raise RuntimeError("bad string mapping") if li_std_string_extra.test_value_basic_overload(x) != x: raise RuntimeError("bad overload string") if li_std_string_extra.test_value_basic_overload(123) != "int": raise RuntimeError("bad overload int") try: li_std_string_extra.test_value_basic_overload([x]) raise RuntimeError("should throw TypeError") except TypeError as e: if str(e).find("Possible C/C++ prototypes are:") == -1: raise RuntimeError("Incorrect error message text:\n{}".format(e)) pass try: li_std_string_extra.test_value_basic_overload([123]) raise RuntimeError("should throw TypeError") except TypeError as e: if str(e).find("Possible C/C++ prototypes are:") == -1: raise RuntimeError("Incorrect error message text:\n{}".format(e)) pass # Global variables s = "initial string" if li_std_string_extra.cvar.GlobalString2 != "global string 2": raise RuntimeError("GlobalString2 test 1") li_std_string_extra.cvar.GlobalString2 = s if li_std_string_extra.cvar.GlobalString2 != s: raise RuntimeError("GlobalString2 test 2") if li_std_string_extra.cvar.ConstGlobalString != "const global string": raise RuntimeError("ConstGlobalString test") # Member variables myStructure = li_std_string_extra.Structure() if myStructure.MemberString2 != "member string 2": raise RuntimeError("MemberString2 test 1") myStructure.MemberString2 = s if myStructure.MemberString2 != s: raise RuntimeError("MemberString2 test 2") if myStructure.ConstMemberString != "const member string": raise RuntimeError("ConstMemberString test") if li_std_string_extra.cvar.Structure_StaticMemberString2 != "static member string 2": raise RuntimeError("StaticMemberString2 test 1") li_std_string_extra.cvar.Structure_StaticMemberString2 = s if li_std_string_extra.cvar.Structure_StaticMemberString2 != s: raise RuntimeError("StaticMemberString2 test 2") if li_std_string_extra.cvar.Structure_ConstStaticMemberString != "const static member string": raise RuntimeError("ConstStaticMemberString test") if li_std_string_extra.test_reference_input("hello") != "hello": raise RuntimeError s = li_std_string_extra.test_reference_inout("hello") if s != "hellohello": raise RuntimeError if li_std_string_extra.stdstring_empty() != "": raise RuntimeError if li_std_string_extra.c_empty() != "": raise RuntimeError if li_std_string_extra.c_null() != None: raise RuntimeError