Refactor mml-smime.el, mml1991.el, mml2015.el
[gnus] / lisp / tests / gnustest-gnus-util.el
1 ;;; gnustest-gnus-util.el --- Selectived tests only.
2 ;; Copyright (C) 2015 Free Software Foundation, Inc.
3
4 ;; Author: Jens Lechtenbörger <jens.lechtenboerger@fsfe.org>
5
6 ;; This file is not part of GNU Emacs.
7
8 ;; GNU Emacs is free software; you can redistribute it and/or modify
9 ;; it under the terms of the GNU General Public License as published by
10 ;; the Free Software Foundation; either version 3, or (at your option)
11 ;; any later version.
12
13 ;; GNU Emacs is distributed in the hope that it will be useful,
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 ;; GNU General Public License for more details.
17
18 ;; You should have received a copy of the GNU General Public License
19 ;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
20
21 ;;; Commentary:
22
23 ;; The tests here are restricted to three functions:
24 ;; gnus-test-list, gnus-subsetp, gnus-setdiff
25 ;;
26 ;; Run as follows:
27 ;; emacs -Q -batch -L .. -l gnustest-gnus-util.el -f ert-run-tests-batch-and-exit
28
29 ;;; Code:
30
31 (require 'ert)
32 (require 'gnus-util)
33
34 (ert-deftest test-list ()
35   ;; False for non-lists.
36   (should-not (gnus-test-list 1 'listp))
37   (should-not (gnus-test-list "42" 'listp))
38
39   ;; False for empty lists.
40   (should-not (gnus-test-list '() 'listp))
41   (should-not (gnus-test-list '() 'nlistp))
42
43   ;; Real tests for other lists.
44   (should (gnus-test-list '(()) 'listp))
45   (should (gnus-test-list '(() ()) 'listp))
46   (should-not (gnus-test-list '(1) 'listp))
47   (should-not (gnus-test-list '(() 1) 'listp))
48   (should-not (gnus-test-list '(1 ()) 'listp))
49   (should-not (gnus-test-list '(() 1 ()) 'listp))
50   )
51
52 (ert-deftest subsetp ()
53   ;; False for non-lists.
54   (should-not (gnus-subsetp "1" "1"))
55   (should-not (gnus-subsetp "1" '("1")))
56   (should-not (gnus-subsetp '("1") "1"))
57
58   ;; Real tests.
59   (should (gnus-subsetp '() '()))
60   (should (gnus-subsetp '() '("1")))
61   (should (gnus-subsetp '("1") '("1")))
62   (should (gnus-subsetp '(42) '("1" 42)))
63   (should (gnus-subsetp '(42) '(42 "1")))
64   (should (gnus-subsetp '(42) '("1" 42 2)))
65   (should-not (gnus-subsetp '("1") '()))
66   (should-not (gnus-subsetp '("1") '(2)))
67   (should-not (gnus-subsetp '("1" 2) '(2)))
68   (should-not (gnus-subsetp '(2 "1") '(2)))
69   (should-not (gnus-subsetp '("1" 2) '(2 3)))
70
71   ;; Duplicates don't matter for sets.
72   (should (gnus-subsetp '("1" "1") '("1")))
73   (should (gnus-subsetp '("1" 2 "1") '(2 "1")))
74   (should (gnus-subsetp '("1" 2 "1") '(2 "1" "1" 2)))
75   (should-not (gnus-subsetp '("1" 2 "1" 3) '(2 "1" "1" 2))))
76
77 (ert-deftest setdiff ()
78   ;; False for non-lists.
79   (should-not (gnus-setdiff "1" "1"))
80   (should-not (gnus-setdiff "1" '()))
81   (should-not (gnus-setdiff '() "1"))
82
83   ;; Real tests.
84   (should-not (gnus-setdiff '() '()))
85   (should-not (gnus-setdiff '() '("1")))
86   (should-not (gnus-setdiff '("1") '("1")))
87   (should (equal '("1") (gnus-setdiff '("1") '())))
88   (should (equal '("1") (gnus-setdiff '("1") '(2))))
89   (should (equal '("1") (gnus-setdiff '("1" 2) '(2))))
90   (should (equal '("1") (gnus-setdiff '("1" 2 3) '(3 2))))
91   (should (equal '("1") (gnus-setdiff '(2 "1" 3) '(3 2))))
92   (should (equal '("1") (gnus-setdiff '(2 3 "1") '(3 2))))
93   (should (equal '(2 "1") (gnus-setdiff '(2 3 "1") '(3))))
94
95   ;; Duplicates aren't touched for sets if they are not removed.
96   (should-not (gnus-setdiff '("1" "1") '("1")))
97   (should (equal '("1") (gnus-setdiff '(2 "1" 2) '(2))))
98   (should (equal '("1" "1") (gnus-setdiff '(2 "1" 2 "1") '(2)))))
99
100 ;;; gnustest-gnus-util.el ends here