From fe48a421c368c048d2c3546c850a87b2cf8f4c9a Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Wed, 12 Sep 2012 23:59:18 +0200 Subject: [PATCH] Fix test-ein-node.el for Emacs 24.2 As of Emacs 24.2, ewoc-data is compiler macro and flet cannot be used to override the definition. Therefore, dummy object is used instead of mocking ewoc-data. See ein:testing-node-dummy-ewco-node for how the dummy object is made. --- tests/test-ein-node.el | 133 ++++++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 62 deletions(-) diff --git a/tests/test-ein-node.el b/tests/test-ein-node.el index 1f60279..b4cca3b 100644 --- a/tests/test-ein-node.el +++ b/tests/test-ein-node.el @@ -3,71 +3,80 @@ (require 'ein-node) -(defmacro eintest:with-ewoc-mock (&rest body) - (declare (indent 0)) - `(flet ((ewoc-data (x) x)) - ,@body)) +(defun ein:testing-node-dummy-ewco-node (data) + `[nil nil ,data]) + +(defun ein:testing-node-ewoc-data (ewoc-node) + (ein:$node-data (ewoc-data ewoc-node))) + +(ert-deftest ein:testing-node-dummy-ewco-node () + (let* ((obj "some-object") + (ewoc-node (ein:testing-node-dummy-ewco-node obj))) + (should (eq (ewoc-data ewoc-node) obj)))) (ert-deftest ein:node-filter-is () - (eintest:with-ewoc-mock - (let ((en-list (list (ein:node-new nil "s" '(spam sag)) - (ein:node-new nil "p" '(spam)) - (ein:node-new nil "e" '(egg)) - (ein:node-new nil "a" '(spam sag)) - (ein:node-new nil "g" '(egg sag)) - (ein:node-new nil "m" '(spam)) - (ein:node-new nil "g" '(egg))))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :is 'spam)) - '("s" "p" "a" "m"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :is 'egg)) - '("e" "g" "g"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :is 'sag)) - '("s" "a" "g")))))) + (let ((en-list (mapcar + #'ein:testing-node-dummy-ewco-node + (list (ein:node-new nil "s" '(spam sag)) + (ein:node-new nil "p" '(spam)) + (ein:node-new nil "e" '(egg)) + (ein:node-new nil "a" '(spam sag)) + (ein:node-new nil "g" '(egg sag)) + (ein:node-new nil "m" '(spam)) + (ein:node-new nil "g" '(egg)))))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :is 'spam)) + '("s" "p" "a" "m"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :is 'egg)) + '("e" "g" "g"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :is 'sag)) + '("s" "a" "g"))))) (ert-deftest ein:node-filter-not () - (eintest:with-ewoc-mock - (let ((en-list (list (ein:node-new nil "s" '(spam sag)) - (ein:node-new nil "p" '(spam)) - (ein:node-new nil "e" '(egg)) - (ein:node-new nil "a" '(spam sag)) - (ein:node-new nil "g" '(egg sag)) - (ein:node-new nil "m" '(spam)) - (ein:node-new nil "g" '(egg))))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :not 'spam)) - '("e" "g" "g"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :not 'egg)) - '("s" "p" "a" "m"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :not 'sag)) - '("p" "e" "m" "g")))))) + (let ((en-list (mapcar + #'ein:testing-node-dummy-ewco-node + (list (ein:node-new nil "s" '(spam sag)) + (ein:node-new nil "p" '(spam)) + (ein:node-new nil "e" '(egg)) + (ein:node-new nil "a" '(spam sag)) + (ein:node-new nil "g" '(egg sag)) + (ein:node-new nil "m" '(spam)) + (ein:node-new nil "g" '(egg)))))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :not 'spam)) + '("e" "g" "g"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :not 'egg)) + '("s" "p" "a" "m"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :not 'sag)) + '("p" "e" "m" "g"))))) (ert-deftest ein:node-filter-is-and-not () - (eintest:with-ewoc-mock - (let ((en-list (list (ein:node-new nil "s" '(spam sag)) - (ein:node-new nil "p" '(spam)) - (ein:node-new nil "e" '(egg)) - (ein:node-new nil "a" '(spam sag)) - (ein:node-new nil "g" '(egg sag)) - (ein:node-new nil "m" '(spam)) - (ein:node-new nil "g" '(egg))))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :not 'spam :is 'sag)) - '("g"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :is 'sag :not 'spam)) - '("g"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :is 'spam :is 'sag)) - '("s" "a"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :is 'sag :not 'spam - :not 'not-existing)) - '("g"))) - (should (equal (mapcar #'ein:$node-data - (ein:node-filter en-list :is 'sag :is 'spam)) - '("s" "a")))))) + (let ((en-list (mapcar + #'ein:testing-node-dummy-ewco-node + (list (ein:node-new nil "s" '(spam sag)) + (ein:node-new nil "p" '(spam)) + (ein:node-new nil "e" '(egg)) + (ein:node-new nil "a" '(spam sag)) + (ein:node-new nil "g" '(egg sag)) + (ein:node-new nil "m" '(spam)) + (ein:node-new nil "g" '(egg)))))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :not 'spam :is 'sag)) + '("g"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :is 'sag :not 'spam)) + '("g"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :is 'spam :is 'sag)) + '("s" "a"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :is 'sag :not 'spam + :not 'not-existing)) + '("g"))) + (should (equal (mapcar #'ein:testing-node-ewoc-data + (ein:node-filter en-list :is 'sag :is 'spam)) + '("s" "a")))))