]> git.eshelyaron.com Git - emacs.git/commitdiff
* automated/let-alist.el: New file.
authorArtur Malabarba <bruce.connor.am@gmail.com>
Thu, 18 Dec 2014 21:37:15 +0000 (19:37 -0200)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Thu, 18 Dec 2014 21:37:54 +0000 (19:37 -0200)
test/ChangeLog
test/automated/let-alist.el [new file with mode: 0644]

index 86703d569f468d43e766f37d5eb1d339073c4c8d..8ddd80f8e617465adb68425e57416e6f77f5d25e 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-18  Artur Malabarba  <bruce.connor.am@gmail.com>
+
+       * automated/let-alist.el: New file.
+
 2014-12-16  Nicolas Petton <petton.nicolas@gmail.com>
 
        * automated/seq-tests.el: New file.
diff --git a/test/automated/let-alist.el b/test/automated/let-alist.el
new file mode 100644 (file)
index 0000000..2054a96
--- /dev/null
@@ -0,0 +1,52 @@
+;;; let-alist.el --- tests for file handling. -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2012-2014 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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.
+
+;; GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+
+(ert-deftest let-alist-surface-test ()
+  "Tests basic macro expansion for `let-alist'."
+  (should
+   (equal '(let ((symbol data))
+             (let ((.test-one (cdr (assq 'test-one symbol)))
+                   (.test-two (cdr (assq 'test-two symbol))))
+               (list .test-one .test-two
+                     .test-two .test-two)))
+          (cl-letf (((symbol-function #'gensym) (lambda (x) 'symbol)))
+            (macroexpand
+             '(let-alist data (list .test-one .test-two
+                                    .test-two .test-two)))))))
+
+(defvar let-alist--test-counter 0
+  "Used to count number of times a function is called.")
+
+(ert-deftest let-alist-evaluate-once ()
+  "Check that the alist argument is only evaluated once."
+  (let ((let-alist--test-counter 0))
+    (should
+     (equal
+      (let-alist (list
+                  (cons 'test-two (cl-incf let-alist--test-counter))
+                  (cons 'test-three (cl-incf let-alist--test-counter)))
+        (list .test-one .test-two .test-two .test-three .cl-incf))
+      '(nil 1 1 2 nil)))))
+
+
+;;; let-alist.el ends here