]> code.delx.au - gnu-emacs/blob - test/automated/thunk-tests.el
7abbd299ead64a0a055dc56c21566d9c968a264e
[gnu-emacs] / test / automated / thunk-tests.el
1 ;;; thunk-tests.el --- Tests for thunk.el -*- lexical-binding: t -*-
2
3 ;; Copyright (C) 2015 Free Software Foundation, Inc.
4
5 ;; Author: Nicolas Petton <nicolas@petton.fr>
6 ;; Maintainer: emacs-devel@gnu.org
7
8 ;; This file is part of GNU Emacs.
9
10 ;; GNU Emacs is free software: you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation, either version 3 of the License, or
13 ;; (at your option) any later version.
14
15 ;; GNU Emacs is distributed in the hope that it will be useful,
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;; GNU General Public License for more details.
19
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
22
23 ;;; Commentary:
24
25 ;; Tests for thunk.el
26
27 ;;; Code:
28
29 (require 'ert)
30 (require 'thunk)
31
32 (ert-deftest thunk-should-be-lazy ()
33 (let (x)
34 (thunk-delay (setq x t))
35 (should (null x))))
36
37 (ert-deftest thunk-can-be-evaluated ()
38 (let* (x
39 (thunk (thunk-delay (setq x t))))
40 (should-not (thunk-evaluated-p thunk))
41 (should (null x))
42 (thunk-force thunk)
43 (should (thunk-evaluated-p thunk))
44 (should x)))
45
46 (ert-deftest thunk-evaluation-is-cached ()
47 (let* ((x 0)
48 (thunk (thunk-delay (setq x (1+ x)))))
49 (thunk-force thunk)
50 (should (= x 1))
51 (thunk-force thunk)
52 (should (= x 1))))
53
54 (provide 'thunk-tests)
55 ;;; thunk-tests.el ends here