root/lang/gauche/oldtype/trunk/src/test.scm @ 14305

Revision 14305, 5.7 kB (checked in by kiyoka, 5 years ago)

Improved unit test of plain text layouter.

Line 
1;; -*- coding: utf-8 -*-
2(use srfi-1)
3(use sxml.tools)
4(use sxml.serializer)
5(use text.html-lite)
6(use text.tree)
7(use gauche.charconv)
8(use oldtype.parse)
9(use oldtype.format)
10(use oldtype.util)
11(use oldtype.log)
12(use oldtype.timeline)
13(use oldtype.page)
14(use oldtype.core)
15(use gauche.test)                                                     
16(use util.list)
17
18
19;; Main -------------------------------------------------------
20(define (main args)
21  (let* (
22         (_ (cdr args))
23         (input-file (first _))
24         (log-file   (second _))
25         (ann-file   (third _))
26         (converted-str
27          (port->string
28           (open-input-conversion-port
29            (open-input-file input-file)
30            "*JP")))
31
32         ;; Making string port from stdin/file
33         ;;
34         (input-port
35          (open-input-string converted-str)))
36    (let ((oldtype-page #f)
37          (oldtype-timeline #f)
38          (loaded        (with-input-from-file "Test.sexp.master"
39                           (lambda ()
40                             (read)))))
41
42      (test-start "serialize,deserialize")
43
44      (test-section "oldtype-timeline")
45      (let1 oldtype-timeline
46            (parse (make <oldtype-timeline> :name "Test") log-file ann-file)
47            (let* ((serialized     (serialize oldtype-timeline))
48                   (deserialized   (deserialize (make <oldtype-timeline>) serialized)))
49              (test "serialized == DATA        "
50                    (assq-ref loaded 'timeline)
51                    (lambda () (serialize deserialized)))
52              (test "serialized == deserialized" serialized (lambda () (serialize deserialized)))))
53
54      (test-section "oldtype-page")
55      (set! oldtype-page (parse (make <oldtype-page> :name "Test") input-port log-file ann-file))
56      (let1 serialized     (serialize oldtype-page)
57            (test "serialized == DATA        "
58                  loaded
59                  (lambda () (serialize oldtype-page)))
60
61            (test "serialized == deserialized" serialized (lambda ()
62                                                            (serialize
63                                                             (deserialize
64                                                              (make <oldtype-page>)
65                                                              serialized)))))
66      (test-end)
67
68
69      (test-start "oldtype-page util method")
70     
71      (test-section "oldtype-timeline")
72      (set! oldtype-timeline (timeline-of oldtype-page))
73      (test "log of lineno 1"
74            '((revision . 8208) (committer . kiyoka) (utc . 1206016615) (rank . 5))
75            (lambda ()
76              (serialize (log-by-lineno oldtype-timeline 1))))
77
78      (test "ago string of lineno 1 <oldtype-timeline>"
79            "  (3 months ago)"
80            (lambda ()
81              (get-ago (log-by-lineno oldtype-timeline 1))))
82      (test "ago string of lineno 1 <oldtype-page>"
83            "  (3 months ago)"
84            (lambda ()
85              (get-ago oldtype-page 1)))
86     
87      (test "date string of lineno 1 <oldtype-timeline>"
88            "2008-03-20 21:36 (+0900)"
89            (lambda ()
90              (get-date (log-by-lineno oldtype-timeline 1))))
91      (test "date string of lineno 1 <oldtype-page>"
92            "2008-03-20 21:36 (+0900)"
93            (lambda ()
94              (get-date oldtype-page 1)))
95
96      (test "rank value of lineno 1 <oldtype-timeline>"
97            5
98            (lambda ()
99              (rank-by-lineno oldtype-timeline 1)))
100      (test "rank value of lineno 2 <oldtype-timeline>"
101            4
102            (lambda ()
103              (rank-by-lineno oldtype-timeline 2)))
104
105      (test "date,ago,rank,committer of lineno 1 <oldtype-page>"
106            '((date  . "2008-03-20 21:36 (+0900)")
107              (ago   . "  (3 months ago)")
108              (rank  . 5)
109              (committer . "kiyoka"))
110            (lambda ()
111              `(
112                (date      . ,(get-date      oldtype-page 1))
113                (ago       . ,(get-ago       oldtype-page 1))
114                (rank      . ,(get-rank      oldtype-page 1))
115                (committer . ,(get-committer oldtype-page 1)))))
116
117      (test "text of lineno 1 <oldtype-page>"
118            "* UnitTest用のサンプルファイル"
119            (lambda ()
120              (get-text oldtype-page 1)))
121     
122      (test "text of lineno 2 <oldtype-page>"
123            "----"
124            (lambda ()
125              (get-text oldtype-page 2)))
126
127      (test "rank-list of <oldtype-page>"
128            '(5 4 3 3 3 3)
129            (lambda ()
130              (get-rank-list oldtype-page)))
131
132     
133      (test-end)
134
135      (test-start "generating RSS")
136     
137      (test "wikiname list for RSS"
138            '((4 . "Entry1") (5 . "Entry2"))
139            (lambda ()
140              (get-rss-entry-pages oldtype-page)))
141
142      (test "oldtype-page list for RSS"
143            '(("Entry1" "Entry1の1行目" ((revision . 13304) (committer . kiyoka) (utc . 1212675369) (rank . 5)))
144              ("Entry2" "Entry2の1行目" ((revision . 13334) (committer . kiyoka) (utc . 1212756234) (rank . 4))))
145            (lambda ()
146              (map
147               (lambda (x)
148                 (let* ((page (oldtype:load-page "" (cdr x)))
149                        (timeline (timeline-of page)))
150                   `(
151                     ,(name-of page)
152                     ,(car (get-text-list page))
153                     ,(serialize
154                       (get-latest-log timeline)))))
155               (get-rss-entry-pages oldtype-page))))
156
157      (test "lines of latest revision in Test.ot"
158            '(6 5 4 3)
159            (lambda ()
160              (get-latest-lines oldtype-timeline)))
161
162      (test "The page that doesn't have RSS data."
163            '()
164            (lambda ()
165              (get-rss-entry-pages
166               (oldtype:load-page "" "Entry1"))))
167
168      (test-end)
169
170      )))
Note: See TracBrowser for help on using the browser.