;; org-test.el --- Unit tests for org.el ;; Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ;; This file contains some unorganized unit tests. ;; TODO: replace with proper test when we decide on a framework (require 'org) (defmacro with-current-time-as (decoded-time &rest body) "Executes the body with current time set to decoded-time. This macro is not comprehensive and does only enough to make the tests pass. TODO: replace this with something proper, eg a mock once we decide what framework we should use." (let ((float-time (float-time (apply 'encode-time (eval decoded-time)))) (float-time-function (symbol-function 'float-time))) `(flet ((decode-time () ,decoded-time) (float-time (&optional specified-time) (if specified-time (funcall ,float-time-function specified-time) ,float-time))) ,@body))) (with-current-time-as '(0 7 21 16 11 2008 0 nil 0) (assert (= 1226793600.0 (org-time-today))) (assert (= 1226793600.0 (org-matcher-time ""))) (assert (= 1226880000.0 (org-matcher-time ""))) (assert (= 1226869620.0 (org-matcher-time ""))) (assert (equal '("+tag1+tag2-tag3" and (progn (setq org-cached-props nil) (and (not (member "tag3" tags-list)) (member "tag2" tags-list) (member "tag1" tags-list))) t) (org-make-tags-matcher "+tag1+tag2-tag3"))) (assert (equal '("+SCHEDULED=\"\"" and (progn (setq org-cached-props nil) (org-time= (or (org-cached-entry-get nil "SCHEDULED") "") 1226869620.0)) t) (org-make-tags-matcher "+SCHEDULED=\"\""))) ;; FIXME: this test fails because of a bug in org-make-tags-matcher (assert (equal '("+SCHEDULED=\"<2008-11-16 Wed 21:07>\"" and (progn (setq org-cached-props nil) (org-time= (or (org-cached-entry-get nil "SCHEDULED") "") 1226869620.0))) t) (org-make-tags-matcher "+SCHEDULED=\"<2008-11-16 Wed 21:07>\"")))