fix(wpcarro/emacs): Fix list.el tests

I was getting false-positive ERT test results because I forgot to use the
`should` macro in my assertions. I discovered this when debugging a subtle bug
in cycle.el that depends on `list-contains?` return `t` or `nil` instead of
truthy or falsy values.

Change-Id: Ibbf89fd1c4f50f86d5efcaa4cd87280b97e111ce
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6003
Reviewed-by: wpcarro <wpcarro@gmail.com>
Autosubmit: wpcarro <wpcarro@gmail.com>
Tested-by: BuildkiteCI
This commit is contained in:
William Carroll 2022-07-29 20:56:29 -07:00 committed by wpcarro
parent 8989dad5ed
commit 65fb82097b
3 changed files with 35 additions and 20 deletions

View file

@ -12,6 +12,7 @@ let
dash
]) ++
(with depot.users.wpcarro.emacs.pkgs; [
maybe
set
]);
})

View file

@ -53,6 +53,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'dash)
(require 'maybe)
(require 'set)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -73,7 +74,7 @@
""
(list-reduce (list-first xs)
(lambda (x acc)
(string-concat acc joint x))
(format "%s%s%s" acc joint x))
(list-tail xs))))
(defun list-length (xs)
@ -151,12 +152,13 @@
;; TODO: Add tests.
(defun list-dedupe-adjacent (xs)
"Return XS without adjacent duplicates."
(list-reduce (list (list-first xs))
(lambda (x acc)
(if (equal x (list-first acc))
acc
(list-cons x acc)))
xs))
(list-reverse
(list-reduce (list (list-first xs))
(lambda (x acc)
(if (equal x (list-first acc))
acc
(list-cons x acc)))
xs)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Predicates
@ -182,7 +184,7 @@ Be leery of using this with things like alists. Many data structures in Elisp
(defun list-contains? (x xs)
"Return t if X is in XS using `equal'."
(-contains? xs x))
(maybe-some? (-contains? xs x)))
(defun list-xs-distinct-by? (f xs)
"Return t if all elements in XS are distinct after applying F to each."

View file

@ -9,24 +9,36 @@
;; Tests
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq xs '(1 2 3 4 5))
(ert-deftest list-length ()
(= 0 (list-length '()))
(= 5 (list-length '(1 2 3 4 5))))
(should (= 0 (list-length '())))
(should (= 5 (list-length xs))))
(ert-deftest list-reduce ()
(= 16 (list-reduce 1 (lambda (x acc) (+ x acc)) '(1 2 3 4 5))))
(should (= 16 (list-reduce 1 (lambda (x acc) (+ x acc)) xs))))
(ert-deftest list-map ()
(equal '(2 4 6 8 10)
(list-map (lambda (x) (* x 2)) '(1 2 3 4 5))))
(should
(equal '(2 4 6 8 10)
(list-map (lambda (x) (* x 2)) xs))))
(ert-deftest list-xs-distinct-by? ()
(list-xs-distinct-by?
(lambda (x) (plist-get x :kbd))
'((:kbd "C-a" [:name] "foo")
(:kbd "C-b" :name "[]foo"))))
(should
(equal t (list-xs-distinct-by?
(lambda (x) (plist-get x :kbd))
'((:kbd "C-a" :name "foo")
(:kbd "C-b" :name "foo"))))))
(ert-deftest list-dedupe-adjacent ()
(equal '(1 2 3 4 3 5)
(list-dedupe-adjacent '(1 1 1 2 2 3 4 4 3 5 5))))
(should (equal '(1 2 3 4 3 5)
(list-dedupe-adjacent '(1 1 1 2 2 3 4 4 3 5 5)))))
(ert-deftest list-contains? ()
;; Assert returns t or nil
(should (equal t (list-contains? 1 xs)))
(should (equal nil (list-contains? 100 xs))))
(ert-deftest list-join ()
(should (equal "foo-bar-baz"
(list-join "-" '("foo" "bar" "baz")))))