emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/pyim 02f3398219: Add pyim-process tests


From: ELPA Syncer
Subject: [elpa] externals/pyim 02f3398219: Add pyim-process tests
Date: Sat, 11 Jun 2022 04:57:49 -0400 (EDT)

branch: externals/pyim
commit 02f339821971ff44a851b096b4c1239aec313bb9
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    Add pyim-process tests
---
 pyim-process.el     |  30 +++++----
 tests/pyim-tests.el | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 206 insertions(+), 12 deletions(-)

diff --git a/pyim-process.el b/pyim-process.el
index 23345dba4d..3d511f9982 100644
--- a/pyim-process.el
+++ b/pyim-process.el
@@ -296,22 +296,28 @@ imobj 组合构成在一起,构成了 imobjs 这个概念。比如:
   "确定 pyim 是否需要启动中文输入模式."
   (let* ((scheme (pyim-scheme-current))
          (first-chars (pyim-scheme-first-chars scheme))
-         (rest-chars (pyim-scheme-rest-chars scheme)))
-    (and (or (pyim-process-force-input-chinese-p)
-             (and (not pyim-process-input-ascii)
-                  (not (pyim-process-auto-switch-english-input-p))))
-         (if (not (string< "" (pyim-entered-get 'point-before)))
-             (member last-command-event
-                     (mapcar #'identity first-chars))
-           (member last-command-event
-                   (mapcar #'identity rest-chars))))))
-
-(defun pyim-process-indicator-function ()
-  "Indicator function."
+         (rest-chars (pyim-scheme-rest-chars scheme))
+         (entered (pyim-entered-get 'point-before)))
+    (and (pyim-process-input-chinese-predicate-1)
+         (pyim-process-input-chinese-predicate-2
+          last-command-event entered first-chars rest-chars))))
+
+(defun pyim-process-input-chinese-predicate-1 ()
+  "`pyim-process-input-chinese-p' 内部函数,测试环境。"
   (or (pyim-process-force-input-chinese-p)
       (and (not pyim-process-input-ascii)
            (not (pyim-process-auto-switch-english-input-p)))))
 
+(defun pyim-process-input-chinese-predicate-2 (event entered first-chars 
rest-chars)
+  "`pyim-process-input-chinese-p' 内部函数,测试输入。"
+  (if (not (string< "" entered))
+      (member event (mapcar #'identity first-chars))
+    (member event (mapcar #'identity rest-chars))))
+
+(defun pyim-process-indicator-function ()
+  "Indicator function."
+  (pyim-process-input-chinese-predicate-1))
+
 (defun pyim-process-run ()
   "查询 entered 字符串, 显示备选词等待用户选择。"
   (if (= (length (pyim-entered-get 'point-before)) 0)
diff --git a/tests/pyim-tests.el b/tests/pyim-tests.el
index 3055d88c32..2ffe390a9f 100644
--- a/tests/pyim-tests.el
+++ b/tests/pyim-tests.el
@@ -1616,6 +1616,194 @@ Transfer-Encoding: chunked
                         '(4 "aaaa" ("工") ("工")))
                  '(:select current))))
 
+;; ** pyim-process 相关单元测试
+(ert-deftest pyim-tests-pyim-process-ui-init ()
+  (let* ((pyim-test nil)
+         (pyim-process-ui-init-hook
+          (list (lambda ()
+                  (setq pyim-test 'hello)))))
+    (pyim-process-ui-init)
+    (should (equal pyim-test 'hello))))
+
+(ert-deftest pyim-tests-pyim-process-start-daemon ()
+  (let* ((pyim-test nil)
+         (pyim-process-start-daemon-hook
+          (list (lambda ()
+                  (setq pyim-test 'hello)))))
+    (pyim-process-start-daemon)
+    (should (equal pyim-test 'hello))))
+
+(ert-deftest pyim-tests-pyim-process-stop-daemon ()
+  (let* ((pyim-test nil)
+         (pyim-process-stop-daemon-hook
+          (list (lambda ()
+                  (setq pyim-test 'hello)))))
+    (pyim-process-stop-daemon)
+    (should (equal pyim-test 'hello))))
+
+(ert-deftest pyim-tests-pyim-process-auto-switch-english-input-p ()
+  (let ((pyim-english-input-switch-functions
+         (list (lambda () t)
+               (lambda () nil)
+               (lambda () nil))))
+    (should (pyim-process-auto-switch-english-input-p)))
+
+  (let ((pyim-english-input-switch-functions
+         (list (lambda () t)
+               (lambda () t)
+               (lambda () nil))))
+    (should (pyim-process-auto-switch-english-input-p)))
+
+  (let ((pyim-english-input-switch-functions
+         (list (lambda () nil)
+               (lambda () nil)
+               (lambda () nil))))
+    (should-not (pyim-process-auto-switch-english-input-p)))
+
+  (let ((pyim-english-input-switch-functions nil))
+    (should-not (pyim-process-auto-switch-english-input-p)))
+
+  (let ((pyim-english-input-switch-functions
+         (lambda () nil)))
+    (should-not (pyim-process-auto-switch-english-input-p)))
+
+  (let ((pyim-english-input-switch-functions
+         (lambda () t)))
+    (should (pyim-process-auto-switch-english-input-p)))
+
+  (let ((pyim-english-input-switch-functions "xxx"))
+    (should-not (pyim-process-auto-switch-english-input-p))))
+
+(ert-deftest pyim-tests-pyim-process-force-input-chinese-p ()
+  (let ((pyim-process-force-input-chinese nil)
+        (pyim-force-input-chinese-functions
+         (list (lambda () t)
+               (lambda () nil)
+               (lambda () nil))))
+    (should (pyim-process-force-input-chinese-p)))
+
+  (let ((pyim-process-force-input-chinese nil)
+        (pyim-force-input-chinese-functions
+         (list (lambda () t)
+               (lambda () t)
+               (lambda () nil))))
+    (should (pyim-process-force-input-chinese-p)))
+
+  (let ((pyim-process-force-input-chinese nil)
+        (pyim-force-input-chinese-functions
+         (lambda () t)))
+    (should (pyim-process-force-input-chinese-p)))
+
+  (let ((pyim-process-force-input-chinese nil)
+        (pyim-force-input-chinese-functions
+         (lambda () nil)))
+    (should-not (pyim-process-force-input-chinese-p)))
+
+  (let ((pyim-process-force-input-chinese nil)
+        (pyim-force-input-chinese-functions "xxx"))
+    (should-not (pyim-process-force-input-chinese-p)))
+
+  (let ((pyim-process-force-input-chinese nil)
+        (pyim-force-input-chinese-functions
+         (list (lambda () nil)
+               (lambda () nil)
+               (lambda () nil))))
+    (should-not (pyim-process-force-input-chinese-p)))
+
+  (let ((pyim-process-force-input-chinese t)
+        (pyim-force-input-chinese-functions nil))
+    (should (pyim-process-force-input-chinese-p)))
+
+  (let ((pyim-process-force-input-chinese t)
+        (pyim-force-input-chinese-functions
+         (list (lambda () nil)
+               (lambda () nil)
+               (lambda () nil))))
+    (should (pyim-process-force-input-chinese-p))))
+
+(ert-deftest pyim-tests-pyim-process-input-chinese-predicate-1 ()
+  (cl-letf (((symbol-function 'pyim-process-force-input-chinese-p)
+             (lambda () t))
+            (pyim-process-input-ascii t)
+            ((symbol-function 'pyim-process-auto-switch-english-input-p)
+             (lambda () t)))
+    (should (pyim-process-input-chinese-predicate-1)))
+
+  (cl-letf (((symbol-function 'pyim-process-force-input-chinese-p)
+             (lambda () t))
+            (pyim-process-input-ascii nil)
+            ((symbol-function 'pyim-process-auto-switch-english-input-p)
+             (lambda () t)))
+    (should (pyim-process-input-chinese-predicate-1)))
+
+  (cl-letf (((symbol-function 'pyim-process-force-input-chinese-p)
+             (lambda () t))
+            (pyim-process-input-ascii nil)
+            ((symbol-function 'pyim-process-auto-switch-english-input-p)
+             (lambda () t)))
+    (should (pyim-process-input-chinese-predicate-1)))
+
+  (cl-letf (((symbol-function 'pyim-process-force-input-chinese-p)
+             (lambda () nil))
+            (pyim-process-input-ascii nil)
+            ((symbol-function 'pyim-process-auto-switch-english-input-p)
+             (lambda () nil)))
+    (should (pyim-process-input-chinese-predicate-1)))
+
+  (cl-letf (((symbol-function 'pyim-process-force-input-chinese-p)
+             (lambda () nil))
+            (pyim-process-input-ascii t)
+            ((symbol-function 'pyim-process-auto-switch-english-input-p)
+             (lambda () nil)))
+    (should-not (pyim-process-input-chinese-predicate-1)))
+
+  (cl-letf (((symbol-function 'pyim-process-force-input-chinese-p)
+             (lambda () nil))
+            (pyim-process-input-ascii nil)
+            ((symbol-function 'pyim-process-auto-switch-english-input-p)
+             (lambda () t)))
+    (should-not (pyim-process-input-chinese-predicate-1)))
+
+  (cl-letf (((symbol-function 'pyim-process-force-input-chinese-p)
+             (lambda () nil))
+            (pyim-process-input-ascii nil)
+            ((symbol-function 'pyim-process-auto-switch-english-input-p)
+             (lambda () nil)))
+    (should (pyim-process-input-chinese-predicate-1))))
+
+(ert-deftest pyim-tests-pyim-process-input-chinese-predicate-2 ()
+  (should (pyim-process-input-chinese-predicate-2 ?a "" "abc" "def"))
+  (should-not (pyim-process-input-chinese-predicate-2 ?d "" "abc" "def"))
+  (should (pyim-process-input-chinese-predicate-2 ?d "a" "abc" "def"))
+  (should-not (pyim-process-input-chinese-predicate-2 ?g "a" "abc" "def")))
+
+(ert-deftest pyim-tests-pyim-process-input-chinese-p ()
+  (cl-letf (((symbol-function 'pyim-process-input-chinese-predicate-1)
+             (lambda (&rest _) nil))
+            ((symbol-function 'pyim-process-input-chinese-predicate-2)
+             (lambda (&rest _) nil)))
+    (should-not (pyim-process-input-chinese-p)))
+
+  (cl-letf (((symbol-function 'pyim-process-input-chinese-predicate-1)
+             (lambda (&rest _) t))
+            ((symbol-function 'pyim-process-input-chinese-predicate-2)
+             (lambda (&rest _) nil)))
+    (should-not (pyim-process-input-chinese-p)))
+
+  (cl-letf (((symbol-function 'pyim-process-input-chinese-predicate-1)
+             (lambda (&rest _) nil))
+            ((symbol-function 'pyim-process-input-chinese-predicate-2)
+             (lambda (&rest _) t)))
+    (should-not (pyim-process-input-chinese-p)))
+
+  (cl-letf (((symbol-function 'pyim-process-input-chinese-predicate-1)
+             (lambda (&rest _) t))
+            ((symbol-function 'pyim-process-input-chinese-predicate-2)
+             (lambda (&rest _) t)))
+    (should (pyim-process-input-chinese-p)))
+
+  )
+
 (ert-run-tests-batch-and-exit)
 
 ;; * Footer



reply via email to

[Prev in Thread] Current Thread [Next in Thread]