emacs/test/lisp/emacs-lisp/cl-extra-tests.el
Paul Eggert bc511a64f6 Prefer HTTPS to FTP and HTTP in documentation
Most of this change is to boilerplate commentary such as license URLs.
This change was prompted by ftp://ftp.gnu.org's going-away party,
planned for November.  Change these FTP URLs to https://ftp.gnu.org
instead.  Make similar changes for URLs to other organizations moving
away from FTP.  Also, change HTTP to HTTPS for URLs to gnu.org and
fsf.org when this works, as this will further help defend against
man-in-the-middle attacks (for this part I omitted the MS-DOS and
MS-Windows sources and the test tarballs to keep the workload down).
HTTPS is not fully working to lists.gnu.org so I left those URLs alone
for now.
2017-09-13 15:54:37 -07:00

97 lines
3.5 KiB
EmacsLisp

;;; cl-extra-tests.el --- tests for emacs-lisp/cl-extra.el -*- lexical-binding:t -*-
;; Copyright (C) 2013-2017 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
;; This program is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see `https://www.gnu.org/licenses/'.
;;; Code:
(require 'cl-lib)
(require 'ert)
(ert-deftest cl-get ()
(put 'cl-get-test 'x 1)
(put 'cl-get-test 'y nil)
(should (eq (cl-get 'cl-get-test 'x) 1))
(should (eq (cl-get 'cl-get-test 'y :none) nil))
(should (eq (cl-get 'cl-get-test 'z :none) :none)))
(ert-deftest cl-getf ()
(let ((plist '(x 1 y nil)))
(should (eq (cl-getf plist 'x) 1))
(should (eq (cl-getf plist 'y :none) nil))
(should (eq (cl-getf plist 'z :none) :none))))
(ert-deftest cl-extra-test-mapc ()
(let ((lst '(a b c))
(lst2 '(d e f))
(lst3 '(1 2 3))
(fn1 (lambda (_x) nil))
(fn2 (lambda (_x _y) nil))
(fn3 (lambda (_x _y _z) nil)))
(should (equal lst (cl-mapc fn1 lst)))
(should (equal lst (cl-mapc fn2 lst lst2)))
(should (equal lst (cl-mapc fn3 lst lst2 lst3)))))
(ert-deftest cl-extra-test-mapl ()
(let ((lst '(a b c))
(lst2 '(d e f))
(lst3 '(1 2 3))
(fn1 (lambda (x) (should (consp x))))
(fn2 (lambda (x y) (should (and (consp x) (consp y)))))
(fn3 (lambda (x y z) (should (and (consp x) (consp y) (consp z))))))
(should (equal lst (cl-mapl fn1 lst)))
(should (equal lst (cl-mapl fn2 lst lst2)))
(should (equal lst (cl-mapl fn3 lst lst2 lst3)))))
(ert-deftest cl-extra-test-mapcar ()
(let ((lst '(a b c))
(lst2 '(d e f))
(lst3 '(1 2 3))
(fn1 (lambda (x) x))
(fn2 (lambda (_x y) y))
(fn3 (lambda (_x _y z) z)))
(should (equal lst (cl-mapcar fn1 lst)))
(should (equal lst2 (cl-mapcar fn2 lst lst2)))
(should (equal lst3 (cl-mapcar fn3 lst lst2 lst3)))))
(ert-deftest cl-extra-test-map ()
(let ((lst '(a b c))
(lst2 '(d e f))
(lst3 '(1 2 3))
(fn1 (lambda (x) x))
(fn2 (lambda (_x y) y))
(fn3 (lambda (x _y _z) (string-to-char (format "%S" x)))))
(should (equal lst (cl-map 'list fn1 lst)))
(should (equal (vconcat lst2) (cl-map 'vector fn2 lst lst2)))
(should (equal (mapconcat (lambda (x) (format "%S" x)) lst "")
(cl-map 'string fn3 lst lst2 lst3)))))
(ert-deftest cl-extra-test-maplist ()
(let ((lst '(a b c))
(lst2 '(d e f))
(lst3 '(1 2 3))
(fn1 (lambda (x) (should (consp x)) x))
(fn2 (lambda (x y) (should (and (consp x) (consp y))) y))
(fn3 (lambda (x y z) (should (and (consp x) (consp y) (consp z))) z)))
(should (equal (list lst (cdr lst) (cddr lst))
(cl-maplist fn1 lst)))
(should (equal (list lst2 (cdr lst2) (cddr lst2))
(cl-maplist fn2 lst lst2)))
(should (equal (list lst3 (cdr lst3) (cddr lst3))
(cl-maplist fn3 lst lst2 lst3)))))
;;; cl-extra-tests.el ends here