From 645a6aa4a5ee66659133f57ebeb5638bdc43beaa Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Thu, 18 Dec 2014 19:37:15 -0200 Subject: [PATCH] * automated/let-alist.el: New file. --- test/ChangeLog | 4 +++ test/automated/let-alist.el | 52 +++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 test/automated/let-alist.el 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 -- 2.39.2