source: project/release/4/sxml-fu/trunk/tests/run.scm @ 20996

Last change on this file since 20996 was 20996, checked in by sjamaan, 11 years ago

sxml-fu: Convert pagination rules to starred forms and add a basic test (needs a lot more testing though)

File size: 3.1 KB
Line 
1(use test sxml-transforms sxml-fu sxml-shortcuts sxml-pagination)
2
3(define normal-rules
4  `((rule1 . ,(lambda (tag a b)
5                `(processed-by-rule1 ,a ,b)))
6    (rule2 *macro* . ,(lambda (tag a b)
7                        `(rule3 ,a ,b)))
8    (rule3 *preorder* . ,(lambda (tag a b)
9                           `(processed-by-rule3 ,a ,b)))
10    (nested-rule ((nested1 . ,(lambda (tag a b)
11                                `(processed-by-nested1 ,a ,b)))
12                  (nested2 *macro* . ,(lambda (tag a b)
13                                        `(nested3 ,a ,b)))
14                  (nested3 *preorder* . ,(lambda (tag a b)
15                                           `(processed-by-nested3 ,a ,b))))
16                 . ,(lambda (tag contents)
17                      `(processed-by-nested-rule ,contents)))
18    . ,alist-conv-rules))
19
20(define input
21  `(doc (rule1 "foo" (rule3 "bar" (rule1 "qux")))
22        (rule2 "egg" "basket")
23        (nested-rule (blabla (nested1 "abc" (nested3 "def" (nested1 "ghi")))
24                             (nested2 "aap" "noot")))))
25
26(define expected-output
27  `(doc (processed-by-rule1
28         "foo" (processed-by-rule3 "bar" (rule1 "qux")))
29        (processed-by-rule3 "egg" "basket")
30        (processed-by-nested-rule
31         (blabla (processed-by-nested1
32                  "abc" (processed-by-nested3 "def" (nested1 "ghi")))
33                 (processed-by-nested3 "aap" "noot")))))
34
35(test-begin "sxml-fu")
36
37(test-group "transformation rules conversion"
38  (test "sanity check" expected-output (pre-post-order input normal-rules))
39  (test "normal->starred" expected-output
40        (pre-post-order* input
41                         (normal->starred-transformation-rules normal-rules)))
42  (test "normal->starred->normal" expected-output
43        (pre-post-order input
44                        (starred->normal-transformation-rules
45                         (normal->starred-transformation-rules normal-rules)))))
46
47(test-group "shortcuts"
48  (test "url with link text"
49        '(a (@ (href "foo")) "bar")
50        (pre-post-order* '(url "foo" "bar") shortcut-rules*))
51  (test "url without link text"
52        '(a (@ (href "foo")) "foo")
53        (pre-post-order* '(url "foo") shortcut-rules*))
54  (test "pic without title"
55        '(img (@ (src "foo") (alt "bar") (title "bar")))
56        (pre-post-order* '(pic "foo" "bar") shortcut-rules*))
57  (test "pic with title"
58        '(img (@ (src "foo") (alt "bar") (title "qux")))
59        (pre-post-order* '(pic "foo" "bar" "qux") shortcut-rules*))
60  (test "movie"
61        '(object (@ (type "video/quicktime"))
62                 (param (@ (name "src") (value "video-source")))
63                 (param (@ (name "controller") (value "true")))
64                 "foo"
65                 (a (@ (href "video-source")) "my video"))
66        (pre-post-order* '(movie "video-source" "my video" "foo")
67                         shortcut-rules*)))
68
69(test-group "pagination"
70  (test "list pagination"
71        '(ul (li "a") (li "b") (li "c") (li "d"))
72        (pre-post-order-splice*
73         '(paginate-list
74           (ul (entries (li (entry))))
75           ("a" "b" "c" "d")) pagination-rules*)))
76
77(test-end "sxml-fu")
78
79(unless (zero? (test-failure-count)) (exit 1))
Note: See TracBrowser for help on using the repository browser.