From: Artur Malabarba Date: Thu, 18 Dec 2014 21:37:15 +0000 (-0200) Subject: * automated/let-alist.el: New file. X-Git-Tag: emacs-25.0.90~2635^2~26 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=645a6aa4a5ee66659133f57ebeb5638bdc43beaa;p=emacs.git * automated/let-alist.el: New file. --- diff --git a/test/ChangeLog b/test/ChangeLog index 86703d569f4..8ddd80f8e61 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +2014-12-18 Artur Malabarba + + * automated/let-alist.el: New file. + 2014-12-16 Nicolas Petton * automated/seq-tests.el: New file. diff --git a/test/automated/let-alist.el b/test/automated/let-alist.el new file mode 100644 index 00000000000..2054a965b67 --- /dev/null +++ b/test/automated/let-alist.el @@ -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 . + +;;; 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