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:
parent
8989dad5ed
commit
65fb82097b
3 changed files with 35 additions and 20 deletions
|
@ -12,6 +12,7 @@ let
|
|||
dash
|
||||
]) ++
|
||||
(with depot.users.wpcarro.emacs.pkgs; [
|
||||
maybe
|
||||
set
|
||||
]);
|
||||
})
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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")))))
|
||||
|
|
Loading…
Reference in a new issue