]> code.delx.au - gnu-emacs/blob - test/src/chartab-tests.el
Fix setting a range of char-table slots in a singular case
[gnu-emacs] / test / src / chartab-tests.el
1 ;;; chartab-tests.el --- Tests for char-tab.c
2
3 ;; Copyright (C) 2016 Free Software Foundation, Inc.
4
5 ;; Author: Eli Zaretskii <eliz@gnu.org>
6
7 ;; This program is free software; you can redistribute it and/or modify
8 ;; it under the terms of the GNU General Public License as published by
9 ;; the Free Software Foundation, either version 3 of the License, or
10 ;; (at your option) any later version.
11
12 ;; This program is distributed in the hope that it will be useful,
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ;; GNU General Public License for more details.
16
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20 ;;; Code:
21
22 (require 'ert)
23
24 (defun chartab-set-and-test (rng)
25 (let ((tbl (make-char-table nil nil))
26 (from (car rng))
27 (to (cdr rng)))
28 (set-char-table-range tbl rng t)
29 (should (eq (aref tbl from) t))
30 (should (eq (aref tbl to) t))
31 (should (eq (aref tbl (/ (+ from to) 2)) t))
32 (when (< to (max-char))
33 (should-not (eq (aref tbl (1+ to)) t)))
34 (when (> from 0)
35 (should-not (eq (aref tbl (1- from)) t)))))
36
37 (ert-deftest chartab-test-range-setting ()
38 (mapc (lambda (elt)
39 (chartab-set-and-test elt))
40 '((0 . 127)
41 (128 . 256)
42 (#x1000 . #x1fff)
43 (#x1001 . #x2000)
44 (#x10000 . #x20000)
45 (#x10001 . #x1ffff)
46 (#x20000 . #x30000)
47 (#xe0e00 . #xe0ef6)
48 )))
49
50 (provide 'chartab-tests)
51 ;;; chartab-tests.el ends here