| import li_std_wstring |
| import sys |
| |
| x = u"h" |
| |
| if li_std_wstring.test_wcvalue(x) != x: |
| print li_std_wstring.test_wcvalue(x) |
| raise RuntimeError("bad string mapping") |
| |
| x = u"hello" |
| if li_std_wstring.test_ccvalue(x) != x: |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_cvalue(x) != x: |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_wchar_overload(x) != x: |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_wchar_overload("not unicode") != "not unicode": |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_value(x) != x: |
| print x, li_std_wstring.test_value(x) |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_const_reference(x) != x: |
| raise RuntimeError("bad string mapping") |
| |
| |
| s = li_std_wstring.wstring(u"he") |
| s = s + u"llo" |
| |
| if s != x: |
| print s, x |
| raise RuntimeError("bad string mapping") |
| |
| if s[1:4] != x[1:4]: |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_value(s) != x: |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_const_reference(s) != x: |
| raise RuntimeError("bad string mapping") |
| |
| a = li_std_wstring.A(s) |
| |
| if li_std_wstring.test_value(a) != x: |
| raise RuntimeError("bad string mapping") |
| |
| if li_std_wstring.test_const_reference(a) != x: |
| raise RuntimeError("bad string mapping") |
| |
| b = li_std_wstring.wstring(" world") |
| |
| if a + b != "hello world": |
| raise RuntimeError("bad string mapping") |
| |
| if a + " world" != "hello world": |
| raise RuntimeError("bad string mapping") |
| |
| # This is expected to fail if -builtin is used |
| # Reverse operators not supported in builtin types |
| if not li_std_wstring.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_wstring.B("hi") |
| |
| b.name = li_std_wstring.wstring(u"hello") |
| if b.name != "hello": |
| raise RuntimeError("bad string mapping") |
| |
| |
| b.a = li_std_wstring.A("hello") |
| if b.a != u"hello": |
| raise RuntimeError("bad string mapping") |
| |
| # Byte strings only converted in Python 2 |
| if sys.version_info[0:2] < (3, 0): |
| x = b"hello there" |
| if li_std_wstring.test_value(x) != x: |
| raise RuntimeError("bad string mapping") |
| |
| # Invalid utf-8 in a byte string fails in all versions |
| x = b"h\xe9llo" |
| try: |
| li_std_wstring.test_value(x) |
| raise RuntimeError("TypeError not thrown") |
| except TypeError: |
| pass |
| |
| # Check surrogateescape |
| if sys.version_info[0:2] > (3, 1): |
| x = u"h\udce9llo" # surrogate escaped representation of C char*: "h\xe9llo" |
| if li_std_wstring.non_utf8_c_str() != x: |
| raise RuntimeError("surrogateescape not working") |
| if li_std_wstring.size_wstring(x) != 5 and len(x) != 5: |
| raise RuntimeError("Unexpected length") |