print 'Testing General Unicode Character Name, and case insensitivity...',
# General and case insensitivity test:
+try:
+ # put all \N escapes inside exec'd raw strings, to make sure this
+ # script runs even if the compiler chokes on \N escapes
+ exec r"""
s = u"\N{LATIN CAPITAL LETTER T}" \
u"\N{LATIN SMALL LETTER H}" \
u"\N{LATIN SMALL LETTER E}" \
u"\N{LATIN SMALL LETTER P}" \
u"\N{FULL STOP}"
verify(s == u"The rEd fOx ate the sheep.", s)
+"""
+except UnicodeError, v:
+ print v
print "done."
import ucnhash
# misc. symbol testing
print "Testing misc. symbols for unicode character name expansion....",
+exec r"""
verify(u"\N{PILCROW SIGN}" == u"\u00b6")
verify(u"\N{REPLACEMENT CHARACTER}" == u"\uFFFD")
verify(u"\N{HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK}" == u"\uFF9F")
verify(u"\N{FULLWIDTH LATIN SMALL LETTER A}" == u"\uFF41")
+"""
print "done."
PyObject *mod = 0, *v = 0;
mod = PyImport_ImportModule("ucnhash");
if (mod == NULL)
- goto onError;
+ goto ucnhashError;
v = PyObject_GetAttrString(mod,"Unicode_Names_CAPI");
Py_DECREF(mod);
if (v == NULL)
- goto onError;
+ goto ucnhashError;
unicode_names = PyCObject_AsVoidPtr(v);
Py_DECREF(v);
if (unicode_names == NULL)
- goto onError;
+ goto ucnhashError;
}
if (*s == '{') {
goto onError;
return (PyObject *)v;
+ ucnhashError:
+ PyErr_SetString(PyExc_UnicodeError,
+ "\\N escapes not supported (can't load ucnhash module)");
+ return NULL;
+
onError:
Py_XDECREF(v);
return NULL;