branch: elpa/casual
commit 56ef367eee0169a7aa08ffa7a044e283b42ad742
Author: Charles Choi <[email protected]>
Commit: Charles Choi <[email protected]>

    Re-layout Calc Conversions Menu
    
    - Re-layout `casual-calc-conversions-tmenu` to organize into 3 sections:
      - Angle
      - HMS
      - Numeric
    - Add command `calc-from-hms`.
    - Add unit test for `casual-calc-unicode-get`.
    - Refine Calc Unicode symbol handling.
---
 lisp/casual-calc-conversion.el       | 37 ++++++++++++++++++---
 lisp/casual-calc-settings.el         |  3 +-
 lisp/casual-calc-utils.el            |  7 ++--
 tests/test-casual-calc-conversion.el |  2 ++
 tests/test-casual-calc-labels.el     |  4 +--
 tests/test-casual-calc-utils.el      | 64 ++++++++++++++++++++++++++++++++++++
 6 files changed, 107 insertions(+), 10 deletions(-)

diff --git a/lisp/casual-calc-conversion.el b/lisp/casual-calc-conversion.el
index 9f71d5d919..fee7b82e08 100644
--- a/lisp/casual-calc-conversion.el
+++ b/lisp/casual-calc-conversion.el
@@ -30,7 +30,9 @@
 
 (transient-define-prefix casual-calc-conversions-tmenu ()
   "Casual conversion functions menu."
-  [["Conversions"
+  ["Conversions"
+
+   ["Angle"
     ("d" "To Degrees" calc-to-degrees
      :description (lambda ()
                     (format "%s %s %s"
@@ -44,10 +46,35 @@
                             (casual-calc-unicode-get :degrees)
                             (casual-calc-unicode-get :to)
                             (casual-calc-unicode-get :radians)))
-     :transient t)
-    ("h" "To HMS" calc-to-hms :transient t)
-    ("f" "To Float" calc-float :transient t)
-    ("F" "To Fraction" calc-fraction :transient t)]]
+     :transient t)]
+
+    ["HMS"
+     ("h" "To ℎ𝑚𝑠" calc-to-hms
+      :description (lambda ()
+                    (format "real %s %s"
+                            (casual-calc-unicode-get :to)
+                            (casual-calc-unicode-get :hms)))
+      :transient t)
+     ("H" "From ℎ𝑚𝑠" calc-from-hms
+      :description (lambda ()
+                     (format "%s %s real"
+                             (casual-calc-unicode-get :hms)
+                             (casual-calc-unicode-get :to)))
+      :transient t)]
+
+    ["Numeric"
+     ("f" "To Float" calc-float
+      :description (lambda ()
+                     (format "%s %s"
+                             (casual-calc-unicode-get :to)
+                             (casual-calc-unicode-get :float)))
+      :transient t)
+     ("F" "To Fraction" calc-fraction
+      :description (lambda ()
+                     (format "%s %s"
+                             (casual-calc-unicode-get :to)
+                             (casual-calc-unicode-get :fraction)))
+      :transient t)]]
 
   casual-calc-operators-group-row
 
diff --git a/lisp/casual-calc-settings.el b/lisp/casual-calc-settings.el
index 5a88f2175d..466a1f4315 100644
--- a/lisp/casual-calc-settings.el
+++ b/lisp/casual-calc-settings.el
@@ -100,7 +100,8 @@
     ("H" "ℎ𝑚𝑠 Format" calc-hms-notation
      :description (lambda ()
                     (format
-                     "Set ℎ𝑚𝑠 Format (now %s)"
+                     "Set %s Format (now %s)"
+                     (casual-calc-unicode-get :hms)
                      (format calc-hms-format "" "" "")))
      :transient t)]
 
diff --git a/lisp/casual-calc-utils.el b/lisp/casual-calc-utils.el
index a165047c8b..4cde3bc2e5 100644
--- a/lisp/casual-calc-utils.el
+++ b/lisp/casual-calc-utils.el
@@ -52,8 +52,11 @@
     (:arcsin . '("𝑎𝑟𝑐𝑠𝑖𝑛" "arcsin"))
     (:arccos . '("𝑎𝑟𝑐𝑐𝑜𝑠" "arccos"))
     (:arctan . '("𝑎𝑟𝑐𝑡𝑎𝑛" "arctan"))
-    (:degrees . '("°" "Degrees"))
-    (:radians . '("𝑟𝑎𝑑" "Radians"))
+    (:degrees . '("°" "degrees"))
+    (:radians . '("𝑟𝑎𝑑" "radians"))
+    (:hms . '("ℎ𝑚𝑠" "HMS"))
+    (:float . '("𝑓𝑙𝑜𝑎𝑡" "float"))
+    (:fraction . '("𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛" "fraction"))
     (:to . '("→" "to")))
   "Unicode symbol DB to use for Calc Transient menus.")
 
diff --git a/tests/test-casual-calc-conversion.el 
b/tests/test-casual-calc-conversion.el
index 7f57e54733..53a18b24ee 100644
--- a/tests/test-casual-calc-conversion.el
+++ b/tests/test-casual-calc-conversion.el
@@ -33,11 +33,13 @@
       (((symbol-function #'calc-to-degrees) (lambda (x) (interactive)(print 
"WARNING: override")))
        ((symbol-function #'calc-to-radians) (lambda (x) (interactive)(print 
"WARNING: override")))
        ((symbol-function #'calc-to-hms) (lambda (x) (interactive)(print 
"WARNING: override")))
+       ((symbol-function #'calc-from-hms) (lambda (x) (interactive)(print 
"WARNING: override")))
        ((symbol-function #'calc-float) (lambda (x) (interactive)(print 
"WARNING: override")))
        ((symbol-function #'calc-fraction) (lambda (x) (interactive)(print 
"WARNING: override"))))
     (let* ((test-vectors '(("d" . calc-to-degrees)
                            ("r" . calc-to-radians)
                            ("h" . calc-to-hms)
+                           ("H" . calc-from-hms)
                            ("f" . calc-float)
                            ("F" . calc-fraction)))
            (test-vectors (append test-vectors casualt-test-operators-group)))
diff --git a/tests/test-casual-calc-labels.el b/tests/test-casual-calc-labels.el
index d540be6d74..00fd826a78 100644
--- a/tests/test-casual-calc-labels.el
+++ b/tests/test-casual-calc-labels.el
@@ -89,9 +89,9 @@
 (ert-deftest test-casual-calc-angle-mode-label ()
   (casualt-calc-setup)
   (setq calc-angle-mode 'deg)
-  (should (equal (casual-calc-angle-mode-label) "Degrees"))
+  (should (equal (casual-calc-angle-mode-label) "degrees"))
   (setq calc-angle-mode 'rad)
-  (should (equal (casual-calc-angle-mode-label) "Radians"))
+  (should (equal (casual-calc-angle-mode-label) "radians"))
   (setq calc-angle-mode 'hms)
   (should (equal (casual-calc-angle-mode-label) "hms"))
   (casualt-calc-breakdown t))
diff --git a/tests/test-casual-calc-utils.el b/tests/test-casual-calc-utils.el
index e77466b9fa..e419a4beb7 100644
--- a/tests/test-casual-calc-utils.el
+++ b/tests/test-casual-calc-utils.el
@@ -25,6 +25,70 @@
 ;;; Code:
 (require 'ert)
 (require 'casual-calc-test-utils)
+(require 'casual-calc)
+
+(ert-deftest test-casual-calc-unicode-get ()
+  (let ((casual-lib-use-unicode nil))
+    (should (string-equal (casual-calc-unicode-get :inv) "1/x"))
+    (should (string-equal (casual-calc-unicode-get :sqrt) "sqrt"))
+    (should (string-equal (casual-calc-unicode-get :change-sign) "+/-"))
+    (should (string-equal (casual-calc-unicode-get :power) "y^x"))
+    (should (string-equal (casual-calc-unicode-get :abs) "|x|"))
+    (should (string-equal (casual-calc-unicode-get :factorial) "!"))
+    (should (string-equal (casual-calc-unicode-get :percent) "%"))
+    (should (string-equal (casual-calc-unicode-get :percent-change) "% 
change"))
+    (should (string-equal (casual-calc-unicode-get :pi) "pi"))
+    (should (string-equal (casual-calc-unicode-get :e) "e"))
+    (should (string-equal (casual-calc-unicode-get :ln) "ln"))
+    (should (string-equal (casual-calc-unicode-get :lnp1) "ln(x+1)"))
+    (should (string-equal (casual-calc-unicode-get :log10) "log10"))
+    (should (string-equal (casual-calc-unicode-get :log) "log"))
+    (should (string-equal (casual-calc-unicode-get :exp) "e^x"))
+    (should (string-equal (casual-calc-unicode-get :expm1) "e^x - 1"))
+    (should (string-equal (casual-calc-unicode-get :sin) "sin"))
+    (should (string-equal (casual-calc-unicode-get :cos) "cos"))
+    (should (string-equal (casual-calc-unicode-get :tan) "tan"))
+    (should (string-equal (casual-calc-unicode-get :stack) "Stack"))
+    (should (string-equal (casual-calc-unicode-get :arcsin) "arcsin"))
+    (should (string-equal (casual-calc-unicode-get :arccos) "arccos"))
+    (should (string-equal (casual-calc-unicode-get :arctan) "arctan"))
+    (should (string-equal (casual-calc-unicode-get :degrees) "degrees"))
+    (should (string-equal (casual-calc-unicode-get :radians) "radians"))
+    (should (string-equal (casual-calc-unicode-get :hms) "HMS"))
+    (should (string-equal (casual-calc-unicode-get :float) "float"))
+    (should (string-equal (casual-calc-unicode-get :fraction) "fraction"))
+    (should (string-equal (casual-calc-unicode-get :to) "to")))
+
+  (let ((casual-lib-use-unicode t))
+    (should (string-equal (casual-calc-unicode-get :inv) "1/𝑥"))
+    (should (string-equal (casual-calc-unicode-get :sqrt) "√"))
+    (should (string-equal (casual-calc-unicode-get :change-sign) "∓"))
+    (should (string-equal (casual-calc-unicode-get :power) "𝑦ˣ"))
+    (should (string-equal (casual-calc-unicode-get :abs) "|𝑥|"))
+    (should (string-equal (casual-calc-unicode-get :factorial) " !"))
+    (should (string-equal (casual-calc-unicode-get :percent) " ٪"))
+    (should (string-equal (casual-calc-unicode-get :percent-change) " Δ%"))
+    (should (string-equal (casual-calc-unicode-get :pi) "𝜋"))
+    (should (string-equal (casual-calc-unicode-get :e) "𝑒"))
+    (should (string-equal (casual-calc-unicode-get :ln) "𝑙𝑛"))
+    (should (string-equal (casual-calc-unicode-get :lnp1) "𝑙𝑛(𝑥+𝟣)"))
+    (should (string-equal (casual-calc-unicode-get :log10) "𝑙𝑜𝑔₁₀"))
+    (should (string-equal (casual-calc-unicode-get :log) "𝑙𝑜𝑔ₐ(𝑥)"))
+    (should (string-equal (casual-calc-unicode-get :exp) "𝑒ˣ"))
+    (should (string-equal (casual-calc-unicode-get :expm1) "𝑒ˣ-𝟣"))
+    (should (string-equal (casual-calc-unicode-get :sin) "𝑠𝑖𝑛"))
+    (should (string-equal (casual-calc-unicode-get :cos) "𝑐𝑜𝑠"))
+    (should (string-equal (casual-calc-unicode-get :tan) "𝑡𝑎𝑛"))
+    (should (string-equal (casual-calc-unicode-get :stack) "≣"))
+    (should (string-equal (casual-calc-unicode-get :arcsin) "𝑎𝑟𝑐𝑠𝑖𝑛"))
+    (should (string-equal (casual-calc-unicode-get :arccos) "𝑎𝑟𝑐𝑐𝑜𝑠"))
+    (should (string-equal (casual-calc-unicode-get :arctan) "𝑎𝑟𝑐𝑡𝑎𝑛"))
+    (should (string-equal (casual-calc-unicode-get :degrees) "°"))
+    (should (string-equal (casual-calc-unicode-get :radians) "𝑟𝑎𝑑"))
+    (should (string-equal (casual-calc-unicode-get :hms) "ℎ𝑚𝑠"))
+    (should (string-equal (casual-calc-unicode-get :float) "𝑓𝑙𝑜𝑎𝑡"))
+    (should (string-equal (casual-calc-unicode-get :fraction) "𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛"))
+    (should (string-equal (casual-calc-unicode-get :to) "→"))))
 
 (provide 'test-casual-calc-utils)
 ;;; test-casual-calc-utils.el ends here

Reply via email to