branch: externals/pyim commit f431925b9c7540362f4e27304b4bde273e555820 Author: Feng Shu <tuma...@163.com> Commit: Feng Shu <tuma...@163.com>
Add pyim-process tests. --- pyim-process.el | 22 +++++++++++++--------- tests/pyim-tests.el | 41 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/pyim-process.el b/pyim-process.el index 3d511f9982..82d8a9a1e6 100644 --- a/pyim-process.el +++ b/pyim-process.el @@ -354,7 +354,11 @@ imobj 组合构成在一起,构成了 imobjs 这个概念。比如: 3. 如果返回的 list 中包含 :replace-with \"xxx\" 信息,那么 \"xxx\" 上屏。" - (let* ((results (pyim-process-autoselector-results)) + (let* ((results + ;; autoselector 功能会影响手动连续选择功能,所以这里做了一些限制, + ;; 只有在输入的时候才能够触发 autoselector 机制。 + (when (pyim-process-self-insert-command-p this-command) + (pyim-process-autoselector-results))) (select-last-word (pyim-process-autoselector-find-result results 'last)) (select-current-word @@ -387,14 +391,14 @@ imobj 组合构成在一起,构成了 imobjs 这个概念。比如: (defun pyim-process-autoselector-results () "运行所有 autoselectors, 返回结果列表。" - ;; autoselector 功能会影响手动连续选择功能,所以这里做了一些限制, - ;; 只有在输入的时候才能够触发 autoselector 机制。 - (when (pyim-process-self-insert-command-p this-command) - (mapcar (lambda (x) - (when (functionp x) - (ignore-errors - (funcall x)))) - (cl-remove-duplicates pyim-process-autoselector :from-end t)))) + (mapcar (lambda (x) + (when (functionp x) + (ignore-errors + (funcall x)))) + (cl-remove-duplicates + pyim-process-autoselector + :from-end t + :test #'equal))) (defun pyim-process-self-insert-command-p (cmd) "测试 CMD 是否是一个 pyim self insert command." diff --git a/tests/pyim-tests.el b/tests/pyim-tests.el index 2ffe390a9f..ae5a2f8ffb 100644 --- a/tests/pyim-tests.el +++ b/tests/pyim-tests.el @@ -1800,9 +1800,46 @@ Transfer-Encoding: chunked (lambda (&rest _) t)) ((symbol-function 'pyim-process-input-chinese-predicate-2) (lambda (&rest _) t))) - (should (pyim-process-input-chinese-p))) + (should (pyim-process-input-chinese-p)))) - ) +(ert-deftest pyim-tests-pyim-process-autoselector () + (let* ((pyim-process-autoselector + (list (lambda () + (list :select 'current :replace "test1")) + (lambda () + (list :select 'current :replace "test1")) + (lambda () + (list :select 'current :replace "test2")) + (lambda () + (list :select 'current :replace "test2")) + (lambda () + (list :select 'last :replace "test3")) + (lambda () + (list :select 'last :replace "test3")) + (lambda () + (list :select 'last :replace "test4")) + (lambda () + (list :select 'last :replace "test4")))) + (results (pyim-process-autoselector-results))) + (should (equal results + '((:select current :replace "test1") + (:select current :replace "test2") + (:select last :replace "test3") + (:select last :replace "test4")))) + (should (equal (pyim-process-autoselector-find-result results 'current) + '(:select current :replace "test1"))) + (should (equal (pyim-process-autoselector-find-result results 'last) + '(:select last :replace "test3"))))) + +(ert-deftest pyim-tests-pyim-process-self-insert-command-p () + (let ((pyim-process-self-insert-commands nil)) + (cl-pushnew 'test pyim-process-self-insert-commands) + (should (pyim-process-self-insert-command-p 'test)))) + +(ert-deftest pyim-tests-pyim-process-merge-candidates () + (should (equal (pyim-process-merge-candidates + '("a" "b" "c") '("d" "e" "f" "a" "b")) + '("d" "a" "b" "c" "e" "f")))) (ert-run-tests-batch-and-exit)