| import unicode_strings | |
| test_string = "h\udce9llo w\u00f6rld" | |
| if unicode_strings.non_utf8_c_str() != test_string: | |
| raise ValueError("Test comparison mismatch") | |
| if unicode_strings.non_utf8_std_string() != test_string: | |
| raise ValueError("Test comparison mismatch") | |
| def check(s1, s2): | |
| if s1 != s2: | |
| raise RuntimeError("{} != {}".format(s1, s2)) | |
| low_surrogate_string = "\udcff" | |
| try: | |
| unicode_strings.instring(low_surrogate_string) | |
| raise RuntimeError("Exception should have been thrown") | |
| except TypeError as e: | |
| # Python 3 will fail the PyUnicode_AsUTF8String conversion resulting in a TypeError. | |
| # The real error is actually: | |
| # UnicodeEncodeError: 'utf-8' codec can't encode character '\udcff' in position 0: surrogates not allowed | |
| pass |