From be16c204d6fba6c7cf2e2cb9fda5d7f6637f12f7 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Mon, 29 Jul 2019 01:45:36 +0300 Subject: [PATCH] Move some uncontroversial char-folding pairs from test data to default values * lisp/char-fold.el (char-fold--default-include) (char-fold--default-exclude): Add some default values. * test/lisp/char-fold-tests.el (char-fold--test-without-customization) (char-fold--test-with-customization): Move some test data to default values. Add more data for tests to pass. (Bug#35689) --- lisp/char-fold.el | 21 ++++++++++----- test/lisp/char-fold-tests.el | 50 +++++++++++++++++++++--------------- 2 files changed, 45 insertions(+), 26 deletions(-) diff --git a/lisp/char-fold.el b/lisp/char-fold.el index f379229e6c4..b05d37455b9 100644 --- a/lisp/char-fold.el +++ b/lisp/char-fold.el @@ -27,12 +27,20 @@ (defconst char-fold--default-include '((?\" """ "“" "”" "”" "„" "⹂" "〞" "‟" "‟" "❞" "❝" "❠" "“" "„" "〝" "〟" "🙷" "🙶" "🙸" "«" "»") (?' "❟" "❛" "❜" "‘" "’" "‚" "‛" "‚" "󠀢" "❮" "❯" "‹" "›") - (?` "❛" "‘" "‛" "󠀢" "❮" "‹"))) - (defconst char-fold--default-exclude nil) + (?` "❛" "‘" "‛" "󠀢" "❮" "‹") + (?ß "ss") ;; de + (?ι "ΐ") ;; el for (?ΐ "ΐ") decomposition + (?υ "ΰ") ;; el for (?ΰ "ΰ") decomposition + )) + (defconst char-fold--default-exclude + '( + (?и "й") ;; ru + )) (defconst char-fold--default-symmetric nil) - (defconst char-fold--previous (list char-fold--default-include - char-fold--default-exclude - char-fold--default-symmetric))) + (defvar char-fold--previous + (list char-fold--default-include + char-fold--default-exclude + char-fold--default-symmetric))) (eval-and-compile @@ -221,12 +229,13 @@ Exceptionally for the space character (32), ALIST is ignored.") (defun char-fold-update-table () + "Update char-fold-table only when one of the options changes its value." (let ((new (list (or (bound-and-true-p char-fold-include) char-fold--default-include) (or (bound-and-true-p char-fold-exclude) char-fold--default-exclude) (or (bound-and-true-p char-fold-symmetric) - char-fold--default-symmetric)))) + char-fold--default-symmetric)))) (unless (equal char-fold--previous new) (setq char-fold-table (char-fold-make-table) char-fold--previous new)))) diff --git a/test/lisp/char-fold-tests.el b/test/lisp/char-fold-tests.el index e519435ef05..0efbdcf988c 100644 --- a/test/lisp/char-fold-tests.el +++ b/test/lisp/char-fold-tests.el @@ -150,47 +150,57 @@ (ert-deftest char-fold--test-without-customization () (let* ((matches '( + ("'" "’") ("e" "ℯ" "ḗ" "ë" "ë") ("ι" "ί" ;; 1 level decomposition "ί" ;; 2 level decomposition - ;; FIXME: - ;; "ΐ" ;; 3 level decomposition + "ΐ" ;; 3 level decomposition ) + ("ß" "ss") + )) + (no-matches + '( + ("и" "й") ))) (dolist (strings matches) - (apply 'char-fold--test-match-exactly strings)))) + (apply 'char-fold--test-match-exactly strings)) + (dolist (strings no-matches) + (apply 'char-fold--test-no-match-exactly strings)))) (ert-deftest char-fold--test-with-customization () :tags '(:expensive-test) + ;; FIXME: move some language-specific settings to defaults (let* ((char-fold-include - '( - (?ß "ss") ;; de - (?o "ø") ;; da no nb nn - (?l "ł") ;; pl - )) - ;; FIXME: move language-specific settings to defaults + (append char-fold-include + '( + (?o "ø") ;; da no nb nn + (?l "ł") ;; pl + (?æ "ae") + (?→ "->") + (?⇒ "=>") + ))) (char-fold-exclude - '( - (?a "å") ;; sv da no nb nn - (?a "ä") ;; sv fi et - (?o "ö") ;; sv fi et - (?n "ñ") ;; es - (?и "й") ;; ru - )) + (append char-fold-exclude + '( + (?a "å") ;; da no nb nn sv + (?a "ä") ;; et fi sv + (?o "ö") ;; et fi sv + (?n "ñ") ;; es + ))) (char-fold-symmetric t) (char-fold-table (char-fold-make-table)) (matches '( ("e" "ℯ" "ḗ" "ë" "ë") ("е" "ё" "ё") - ("ι" "ί" "ί" - ;; FIXME: "ΐ" - ) + ("ι" "ί" "ί" "ΐ") ("ß" "ss") ("o" "ø") ("l" "ł") - + ("æ" "ae") + ("→" "->") + ("⇒" "=>") )) (no-matches '( -- 2.39.2