81 lines
2.4 KiB
EmacsLisp
81 lines
2.4 KiB
EmacsLisp
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;; Dependencies
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
|
||
|
(require 'ert)
|
||
|
(require 'cycle)
|
||
|
(require 'dash)
|
||
|
(require 'maybe)
|
||
|
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;; Tests
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
|
||
|
(setq xs (cycle-new 1 2 3))
|
||
|
|
||
|
(ert-deftest cycle-initializes-properly ()
|
||
|
(should (= 3 (cycle-count xs)))
|
||
|
(should (maybe-nil? (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))))
|