tvl-depot/users/wpcarro/emacs/pkgs/cycle/tests.el
William Carroll db0cfd0616 refactor(wpcarro/emacs): Remove cycle.el's dep on maybe.el
More pruning on inter-library dependencies.

Change-Id: I711ab92f2985b543ee2684752f9cdbf5559f2eaf
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6035
Reviewed-by: wpcarro <wpcarro@gmail.com>
Autosubmit: wpcarro <wpcarro@gmail.com>
Tested-by: BuildkiteCI
2022-08-03 20:23:24 +00:00

79 lines
2.4 KiB
EmacsLisp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Dependencies
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'ert)
(require 'cycle)
(require 'dash)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Tests
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq xs (cycle-new 1 2 3))
(ert-deftest cycle-initializes-properly ()
(should (= 3 (cycle-count xs)))
(should (null (cycle-previous-focus xs)))
(should (cycle-contains? 1 xs))
(should (cycle-contains? 2 xs))
(should (cycle-contains? 3 xs)))
(ert-deftest cycle-contains? ()
;; Returns t or nil
(should (eq t (cycle-contains? 1 xs)))
(should (eq t (cycle-contains? 2 xs)))
(should (eq t (cycle-contains? 3 xs)))
(should (eq nil (cycle-contains? 4 xs))))
(ert-deftest cycle-empty? ()
(should (eq t (cycle-empty? (cycle-new))))
(should (eq nil (cycle-empty? xs))))
(ert-deftest cycle-current ()
(should (= 1 (cycle-current xs))))
(ert-deftest cycle-next! ()
(let ((xs (cycle-from-list '(1 2 3))))
(should (= 2 (cycle-next! xs)))))
(ert-deftest cycle-prev! ()
(let ((xs (cycle-from-list '(1 2 3))))
(cycle-next! xs)
(should (= 1 (cycle-prev! xs)))))
(ert-deftest cycle-previous-focus ()
(let ((xs (cycle-from-list '(1 2 3))))
(cycle-focus-item! 2 xs)
(cycle-next! xs)
(should (= 2 (cycle-previous-focus xs)))))
(ert-deftest cycle-jump! ()
(let ((xs (cycle-from-list '(1 2 3))))
(should (= 1 (->> xs (cycle-jump! 0) cycle-current)))
(should (= 2 (->> xs (cycle-jump! 1) cycle-current)))
(should (= 3 (->> xs (cycle-jump! 2) cycle-current)))))
(ert-deftest cycle-focus-previous! ()
(let ((xs (cycle-from-list '(1 2 3))))
(cycle-focus-item! 2 xs)
(cycle-next! xs)
(should (= 2 (cycle-previous-focus xs)))
(should (= 2 (cycle-focus-previous! xs)))))
(ert-deftest cycle-append! ()
(let ((xs (cycle-from-list '(1 2 3))))
(cycle-focus-item! 2 xs)
(cycle-append! 4 xs)
(should (equal '(1 4 2 3) (cycle-xs xs)))))
(ert-deftest cycle-remove! ()
(let ((xs (cycle-from-list '(1 2 3))))
(should (equal '(1 2) (cycle-xs (cycle-remove! 3 xs))))))
(ert-deftest cycle-misc ()
(cycle-focus-item! 3 xs)
(cycle-focus-item! 2 xs)
(cycle-remove! 1 xs)
(should (= 2 (cycle-current xs)))
(should (= 3 (cycle-previous-focus xs))))