#!/usr/bin/env python3.2 # -*- coding: UTF-8 -*- from __future__ import print_function from __future__ import unicode_literals import re import sys import os if not (("PYTHONIOENCODING" in os.environ) and re.search("^utf-?8$", os.environ["PYTHONIOENCODING"], re.I)): sys.stderr.write(sys.argv[0] + ": Please set your PYTHONIOENCODING envariable to utf8\n") import unicodedata if unicodedata.unidata_version < "6.0.0": print("WARNING: Your old UCD is out of date, expected 6.0.0 but got", unicodedata.unidata_version) wide_enough = (sys.maxunicode > 65536) if not wide_enough: print("WARNING: Narrow build detected, your Python lacks full Unicode support!!") data_rows = [ [ "d\N{LATIN SMALL LETTER E WITH ACUTE}me un caf\N{LATIN SMALL LETTER E WITH ACUTE}", "D\N{LATIN SMALL LETTER E WITH ACUTE}me Un Caf\N{LATIN SMALL LETTER E WITH ACUTE}" ], [ "de\N{COMBINING ACUTE ACCENT}me un cafe\N{COMBINING ACUTE ACCENT}", "De\N{COMBINING ACUTE ACCENT}me Un Cafe\N{COMBINING ACUTE ACCENT}" ], [ "i\N{COMBINING DOT ABOVE}stanbul", "I\N{COMBINING DOT ABOVE}stanbul" ], [ "\N{LATIN CAPITAL LETTER I WITH DOT ABOVE}stanbul", "\N{LATIN CAPITAL LETTER I WITH DOT ABOVE}stanbul" ], [ "\N{GREEK SMALL LETTER ALPHA}\N{COMBINING GRAVE ACCENT}\N{COMBINING GREEK YPOGEGRAMMENI} \N{GREEK SMALL LETTER SIGMA}\N{GREEK SMALL LETTER TAU}\N{GREEK SMALL LETTER OMICRON} \N{GREEK SMALL LETTER DELTA}\N{GREEK SMALL LETTER IOTA}\N{GREEK SMALL LETTER ALPHA}\N{COMBINING ACUTE ACCENT}\N{GREEK SMALL LETTER OMICRON}\N{GREEK SMALL LETTER LAMDA}\N{GREEK SMALL LETTER OMICRON}", "\N{GREEK CAPITAL LETTER ALPHA}\N{COMBINING GRAVE ACCENT}\N{COMBINING GREEK YPOGEGRAMMENI} \N{GREEK CAPITAL LETTER SIGMA}\N{GREEK SMALL LETTER TAU}\N{GREEK SMALL LETTER OMICRON} \N{GREEK CAPITAL LETTER DELTA}\N{GREEK SMALL LETTER IOTA}\N{GREEK SMALL LETTER ALPHA}\N{COMBINING ACUTE ACCENT}\N{GREEK SMALL LETTER OMICRON}\N{GREEK SMALL LETTER LAMDA}\N{GREEK SMALL LETTER OMICRON}", ], [ "𐐼𐐯𐑅𐐨𐑉𐐯𐐻", "𐐔𐐯𐑅𐐨𐑉𐐯𐐻" ], ] tc_fail, tc_total = 0, 0 for orig, want in data_rows: tc_total = tc_total + 1 have = orig.title() if have != want: print("titlecase of", repr(orig), "should be", repr(want), "not", repr(have), sep=' ') tc_fail = tc_fail + 1 print("failed", tc_fail, "out of", tc_total, "tests"); ########################################################################## # WARNING: Narrow build detected, your Python lacks full Unicode support!! # titlecase of déme un café should be Déme Un Café not DéMe Un Café # titlecase of i̇stanbul should be İstanbul not İStanbul # titlecase of ᾲ στο διάολο should be Ὰͅ Στο Διάολο not ᾺΙ Στο ΔιάΟλο # titlecase of 𐐼𐐯𐑅𐐨𐑉𐐯𐐻 should be 𐐔𐐯𐑅𐐨𐑉𐐯𐐻 not 𐐼𐐯𐑅𐐨𐑉𐐯𐐻 # failed 4 out of 6 tests