Add tests: ein:node-filter-is/not

This commit is contained in:
Takafumi Arakaki 2012-05-15 12:17:18 +02:00
parent 74d42463ad
commit 89d3c5cfad

47
tests/test-ein-node.el Normal file
View file

@ -0,0 +1,47 @@
(eval-when-compile (require 'cl))
(require 'ert)
(require 'ein-node)
(defmacro eintest:with-ewoc-mock (&rest body)
(declare (indent 0))
`(flet ((ewoc-data (x) x))
,@body))
(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"))))))
(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"))))))