25 lines
653 B
EmacsLisp
25 lines
653 B
EmacsLisp
(require 'seq)
|
|
|
|
;; Test
|
|
;; Run M-x ert
|
|
|
|
(ert-deftest test-is-integer-number ()
|
|
(seq-doseq (i (number-sequence 0 100))
|
|
(should (is-integer-number i))))
|
|
|
|
(ert-deftest test-is-integer-number-float ()
|
|
(seq-doseq (i (number-sequence 0 100))
|
|
(should (is-integer-number (float i)))))
|
|
|
|
(ert-deftest test-is-integer-number-float-false ()
|
|
(seq-doseq (i (number-sequence 0 100))
|
|
(should (not (is-integer-number (+ i (/ (1+ (random 8)) 10.0)))))))
|
|
|
|
;; Code
|
|
|
|
(defun is-integer-number (num)
|
|
"Return t if NUM is an integer number, nil otherwise."
|
|
(or (zerop num)
|
|
(integerp num)
|
|
(and (floatp num) (equal num (float (truncate num))))))
|