Coverage report: /home/samppa/personal/opiskelu/ohtuprojekti/pulsu/trunk/test.lisp

KindCoveredAll%
expression7684 90.5
branch512 41.7
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 (in-package :puls.test)
2
 
3
 (defvar *test-name* nil)
4
 
5
 (defmacro deftest (name parameters &body body)
6
   "Define a test function. Within a test function we can call
7
    other test functions or use 'check' to run individual test
8
    cases."
9
   `(defun ,name ,parameters
10
      (let ((*test-name* (append *test-name* (list ',name))))
11
        ,@body)))
12
 
13
 (defmacro check (&body forms)
14
   "Run each expression in 'forms' as a test case."
15
   `(combine-results
16
      ,@(loop for f in forms collect `(report-result ,f ',f))))
17
 
18
 (defmacro combine-results (&body forms)
19
   "Combine the results (as booleans) of evaluating 'forms' in order."
20
   (with-gensyms (result)
21
     `(let ((,result t))
22
        ,@(loop for f in forms collect `(unless ,f (setf ,result nil)))
23
        ,result)))
24
 
25
 (defun report-result (result form)
26
   "Report the results of a single test case. Called by 'check'."
27
   (format t "~:[FAIL~;pass~] ... ~a~:[: ~a~;~]~%"
28
           result *test-name* result form)
29
   result)
30
  
31
 (defun map-check (test list)
32
   "Run test on each of the elements in list and collect results."
33
   (check
34
     (notany #'null (mapcar test list))))
35
 
36
 (deftest test ()
37
   (check (equal (subseq "abcd" 1 2)
38
                 "b")))
39
 
40
 
41
     
42
 (deftest test-all ()
43
   (let* ((hunchentoot:*reply* (make-instance 'hunchentoot::reply))
44
          (headers-in
45
           '((:HOST . "localhost:10001")
46
             (:USER-AGENT
47
              . "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4")
48
             (:ACCEPT
49
              . "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
50
             (:ACCEPT-LANGUAGE . "en-us,en;q=0.5") (:ACCEPT-ENCODING . "gzip,deflate")
51
             (:ACCEPT-CHARSET . "ISO-8859-1,utf-8;q=0.7,*;q=0.7") (:KEEP-ALIVE . "300")
52
             (:CONNECTION . "keep-alive")
53
             (:AUTHORIZATION . "Basic cHVsc3U6cHVsc3UwOA==")
54
             (:CACHE-CONTROL . "max-age=0")))
55
          (hunchentoot:*request*
56
           (make-instance 'hunchentoot::request
57
                          :headers-in headers-in)))
58
   
59
     (setf (slot-value hunchentoot:*request* 'hunchentoot::get-parameters)
60
           '(("oh" "hai")))
61
   
62
     (load-mock-events)
63
     (load-mock-unified)
64
     (combine-results 
65
       (puls.ui::test-newest)
66
       (puls.controller::test-controller)
67
                                         ;   (puls.ui::test-document-view)
68
       (puls.ui::test-headerfooter)
69
       (puls.ui::test-ui)
70
       )))