def unicode_isupper__Unicode(space, w_unicode): cased = False for uchar in w_unicode._value: if (unicodedb.islower(ord(uchar)) or unicodedb.istitle(ord(uchar))): return space.w_False if not cased and unicodedb.isupper(ord(uchar)): cased = True return space.newbool(cased)
def unicode_swapcase__Unicode(space, w_self): input = w_self._value result = [u'\0'] * len(input) for i in range(len(input)): unichar = ord(input[i]) if unicodedb.islower(unichar): result[i] = unichr(unicodedb.toupper(unichar)) elif unicodedb.isupper(unichar): result[i] = unichr(unicodedb.tolower(unichar)) else: result[i] = input[i] return W_UnicodeObject(u''.join(result))
def unicode_istitle__Unicode(space, w_unicode): cased = False previous_is_cased = False for uchar in w_unicode._value: if (unicodedb.isupper(ord(uchar)) or unicodedb.istitle(ord(uchar))): if previous_is_cased: return space.w_False previous_is_cased = cased = True elif unicodedb.islower(ord(uchar)): if not previous_is_cased: return space.w_False previous_is_cased = cased = True else: previous_is_cased = False return space.newbool(cased)
def test_compare_methods(self): for code in range(0x10000): char = unichr(code) assert char.isalnum() == unicodedb_4_1_0.isalnum(code) assert char.isalpha() == unicodedb_4_1_0.isalpha(code) assert char.isdecimal() == unicodedb_4_1_0.isdecimal(code) assert char.isdigit() == unicodedb_4_1_0.isdigit(code) assert char.islower() == unicodedb_4_1_0.islower(code) assert (code in self.diff_numeric or char.isnumeric()) == unicodedb_4_1_0.isnumeric(code) assert code in self.diff_isspace or char.isspace() == unicodedb_4_1_0.isspace(code), hex(code) assert char.istitle() == (unicodedb_4_1_0.isupper(code) or unicodedb_4_1_0.istitle(code)), code assert char.isupper() == unicodedb_4_1_0.isupper(code) assert char.lower() == unichr(unicodedb_4_1_0.tolower(code)) assert char.upper() == unichr(unicodedb_4_1_0.toupper(code)) assert code in self.diff_title or char.title() == unichr(unicodedb_4_1_0.totitle(code)), hex(code)