diff options
author | Michal Nazarewicz <mina86@mina86.com> | 2016-08-12 01:38:49 +0200 |
---|---|---|
committer | Michal Nazarewicz <mina86@mina86.com> | 2017-04-06 20:54:57 +0200 |
commit | 13d813b1a093e9039a63b11021a8a92c9c5950d1 (patch) | |
tree | 184ce8d5b36320140b2fbe9581370565e49e066b /test/src/casefiddle-tests.el | |
parent | 8e5b909fe6e20858d023f33617785b2f556a0f13 (diff) | |
download | emacs-13d813b1a093e9039a63b11021a8a92c9c5950d1.tar.gz emacs-13d813b1a093e9039a63b11021a8a92c9c5950d1.tar.bz2 emacs-13d813b1a093e9039a63b11021a8a92c9c5950d1.zip |
Add support for title-casing letters (bug#24603)
* src/casefiddle.c (struct casing_context, prepare_casing_context): Add
titlecase_char_table member. It’s set to the ‘titlecase’ Unicode
property table if capitalisation has been requested.
(case_character): Make use of the titlecase_char_table to title-case
initial characters when capitalising.
* test/src/casefiddle-tests.el (casefiddle-tests--characters,
casefiddle-tests-casing): Update test cases which are now passing.
Diffstat (limited to 'test/src/casefiddle-tests.el')
-rw-r--r-- | test/src/casefiddle-tests.el | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/test/src/casefiddle-tests.el b/test/src/casefiddle-tests.el index 152d85de006..e83cb00059b 100644 --- a/test/src/casefiddle-tests.el +++ b/test/src/casefiddle-tests.el @@ -63,13 +63,9 @@ (?Ł ?Ł ?ł ?Ł) (?ł ?Ł ?ł ?Ł) - ;; FIXME(bug#24603): Commented ones are what we want. - ;;(?DŽ ?DŽ ?dž ?Dž) - (?DŽ ?DŽ ?dž ?DŽ) - ;;(?Dž ?DŽ ?dž ?Dž) - (?Dž ?DŽ ?dž ?DŽ) - ;;(?dž ?DŽ ?dž ?Dž) - (?dž ?DŽ ?dž ?DŽ) + (?DŽ ?DŽ ?dž ?Dž) + (?Dž ?DŽ ?dž ?Dž) + (?dž ?DŽ ?dž ?Dž) (?Σ ?Σ ?σ ?Σ) (?σ ?Σ ?σ ?Σ) @@ -186,19 +182,19 @@ ;; input upper lower capitalize up-initials '(("Foo baR" "FOO BAR" "foo bar" "Foo Bar" "Foo BaR") ("Ⅷ ⅷ" "Ⅷ Ⅷ" "ⅷ ⅷ" "Ⅷ Ⅷ" "Ⅷ Ⅷ") + ;; "DžUNGLA" is an unfortunate result but it’s really best we can + ;; do while still being consistent. Hopefully, users only ever + ;; use upcase-initials on camelCase identifiers not real words. + ("DŽUNGLA" "DŽUNGLA" "džungla" "Džungla" "DžUNGLA") + ("Džungla" "DŽUNGLA" "džungla" "Džungla" "Džungla") + ("džungla" "DŽUNGLA" "džungla" "Džungla" "Džungla") ;; FIXME(bug#24603): Everything below is broken at the moment. ;; Here’s what should happen: - ;;("DŽUNGLA" "DŽUNGLA" "džungla" "Džungla" "DžUNGLA") - ;;("Džungla" "DŽUNGLA" "džungla" "Džungla" "Džungla") - ;;("džungla" "DŽUNGLA" "džungla" "Džungla" "Džungla") ;;("define" "DEFINE" "define" "Define" "Define") ;;("fish" "FIsh" "fish" "Fish" "Fish") ;;("Straße" "STRASSE" "straße" "Straße" "Straße") ;;("ΌΣΟΣ" "ΌΣΟΣ" "όσος" "Όσος" "Όσος") ;; And here’s what is actually happening: - ("DŽUNGLA" "DŽUNGLA" "džungla" "DŽungla" "DŽUNGLA") - ("Džungla" "DŽUNGLA" "džungla" "DŽungla" "DŽungla") - ("džungla" "DŽUNGLA" "džungla" "DŽungla" "DŽungla") ("define" "DEfiNE" "define" "Define" "Define") ("fish" "fiSH" "fish" "fish" "fish") ("Straße" "STRAßE" "straße" "Straße" "Straße") @@ -243,4 +239,21 @@ "\xef\xff\xef Zażółć GĘŚlą \xcf\xcf"))))))) +(ert-deftest casefiddle-tests-char-casing () + ;; input upcase downcase [titlecase] + (dolist (test '((?a ?A ?a) (?A ?A ?a) + (?ł ?Ł ?ł) (?Ł ?Ł ?ł) + (?ß ?ß ?ß) (?ẞ ?ẞ ?ß) + (?ⅷ ?Ⅷ ?ⅷ) (?Ⅷ ?Ⅷ ?ⅷ) + (?DŽ ?DŽ ?dž ?Dž) (?Dž ?DŽ ?dž ?Dž) (?dž ?DŽ ?dž ?Dž))) + (let ((ch (car test)) + (up (nth 1 test)) + (lo (nth 2 test)) + (tc (or (nth 3 test) (nth 1 test)))) + (should (eq up (upcase ch))) + (should (eq lo (downcase ch))) + (should (eq tc (capitalize ch))) + (should (eq tc (upcase-initials ch)))))) + + ;;; casefiddle-tests.el ends here |