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

Revision 13542, 18.2 kB (checked in by kiyoka, 5 years ago)

Supported RSS 2.0 feed. ( first implementation )

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
17
18;; Main -------------------------------------------------------
19(define (main args)
20  (let* (
21         (_ (cdr args))
22         (input-file (first _))
23         (log-file   (second _))
24         (ann-file   (third _))
25         (converted-str
26          (port->string
27           (open-input-conversion-port
28            (open-input-file input-file)
29            "*JP")))
30
31         ;; Making string port from stdin/file
32         ;;
33         (input-port
34          (open-input-string converted-str)))
35    (let ((oldtype-page #f)
36          (oldtype-timeline #f))
37
38      (test-start "serialize,deserialize")
39
40      (test-section "oldtype-timeline")
41      (let1 oldtype-timeline
42            (parse (make <oldtype-timeline> :name "Test") log-file ann-file)
43            (let* ((serialized     (serialize oldtype-timeline))
44                   (deserialized   (deserialize (make <oldtype-timeline>) serialized)))
45              (test "serialized == DATA        "
46                    '((name . "Test") (revision . 13317)
47                      (log
48                       (13334 (revision . 13334) (committer . kiyoka) (utc . 1212756234) (rank . 5))
49                       (13317 (revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
50                       (13306 (revision . 13306) (committer . kiyoka) (utc . 1212676363) (rank . 5))
51                       (13304 (revision . 13304) (committer . kiyoka) (utc . 1212675369) (rank . 4))
52                       (13242 (revision . 13242) (committer . kiyoka) (utc . 1212594143) (rank . 5))
53                       (13237 (revision . 13237) (committer . kiyoka) (utc . 1212592559) (rank . 5))
54                       (13233 (revision . 13233) (committer . kiyoka) (utc . 1212591037) (rank . 5))
55                       (13224 (revision . 13224) (committer . kiyoka) (utc . 1212584569) (rank . 5))
56                       (13223 (revision . 13223) (committer . kiyoka) (utc . 1212584402) (rank . 5))
57                       (13080 (revision . 13080) (committer . kiyoka) (utc . 1212407693) (rank . 5))
58                       (13032 (revision . 13032) (committer . kiyoka) (utc . 1212334026) (rank . 5))
59                       (13023 (revision . 13023) (committer . kiyoka) (utc . 1212331805) (rank . 5))
60                       (12471 (revision . 12471) (committer . kiyoka) (utc . 1211813046) (rank . 5))
61                       (12460 (revision . 12460) (committer . kiyoka) (utc . 1211806608) (rank . 5))
62                       (12356 (revision . 12356) (committer . kiyoka) (utc . 1211721110) (rank . 5))
63                       (12293 (revision . 12293) (committer . kiyoka) (utc . 1211642182) (rank . 5))
64                       (12266 (revision . 12266) (committer . kiyoka) (utc . 1211601688) (rank . 5))
65                       (11607 (revision . 11607) (committer . kiyoka) (utc . 1210777124) (rank . 5))
66                       (11606 (revision . 11606) (committer . kiyoka) (utc . 1210777098) (rank . 5))
67                       (11603 (revision . 11603) (committer . kiyoka) (utc . 1210774733) (rank . 5))
68                       (11245 (revision . 11245) (committer . kiyoka) (utc . 1210161037) (rank . 5))
69                       (10961 (revision . 10961) (committer . kiyoka) (utc . 1209740697) (rank . 5))
70                       (10957 (revision . 10957) (committer . kiyoka) (utc . 1209737179) (rank . 5))
71                       (10149 (revision . 10149) (committer . kiyoka) (utc . 1208864713) (rank . 5))
72                       (10146 (revision . 10146) (committer . kiyoka) (utc . 1208862687) (rank . 5))
73                       (10084 (revision . 10084) (committer . kiyoka) (utc . 1208784928) (rank . 5))
74                       (10014 (revision . 10014) (committer . kiyoka) (utc . 1208695655) (rank . 5))
75                       (9977 (revision . 9977) (committer . kiyoka) (utc . 1208667401) (rank . 5))
76                       (9976 (revision . 9976) (committer . kiyoka) (utc . 1208667383) (rank . 5))
77                       (9952 (revision . 9952) (committer . kiyoka) (utc . 1208652380) (rank . 5))
78                       (9948 (revision . 9948) (committer . kiyoka) (utc . 1208650871) (rank . 5))
79                       (9924 (revision . 9924) (committer . kiyoka) (utc . 1208619757) (rank . 5))
80                       (9903 (revision . 9903) (committer . kiyoka) (utc . 1208606479) (rank . 5))
81                       (9585 (revision . 9585) (committer . kiyoka) (utc . 1208348091) (rank . 5))
82                       (9583 (revision . 9583) (committer . kiyoka) (utc . 1208346288) (rank . 5))
83                       (8962 (revision . 8962) (committer . kiyoka) (utc . 1207444336) (rank . 5))
84                       (8676 (revision . 8676) (committer . kiyoka) (utc . 1207141582) (rank . 5))
85                       (8607 (revision . 8607) (committer . kiyoka) (utc . 1207051192) (rank . 5))
86                       (8569 (revision . 8569) (committer . kiyoka) (utc . 1206968180) (rank . 5))
87                       (8342 (revision . 8342) (committer . kiyoka) (utc . 1206360044) (rank . 5))
88                       (8263 (revision . 8263) (committer . kiyoka) (utc . 1206115042) (rank . 5))
89                       (8254 (revision . 8254) (committer . kiyoka) (utc . 1206097354) (rank . 5))
90                       (8212 (revision . 8212) (committer . kiyoka) (utc . 1206027766) (rank . 5))
91                       (8211 (revision . 8211) (committer . kiyoka) (utc . 1206027177) (rank . 5))
92                       (8208 (revision . 8208) (committer . kiyoka) (utc . 1206016615) (rank . 5))
93                       (8205 (revision . 8205) (committer . kiyoka) (utc . 1206012635) (rank . 5))
94                       (8091 (revision . 8091) (committer . kiyoka) (utc . 1205842976) (rank . 5))
95                       (7924 (revision . 7924) (committer . kiyoka) (utc . 1205421544) (rank . 5))
96                       (7920 (revision . 7920) (committer . kiyoka) (utc . 1205419584) (rank . 5))
97                       (7919 (revision . 7919) (committer . kiyoka) (utc . 1205418381) (rank . 5))
98                       (7870 (revision . 7870) (committer . kiyoka) (utc . 1205336331) (rank . 5))
99                       (7811 (revision . 7811) (committer . kiyoka) (utc . 1205239814) (rank . 5)))
100                      (annotation
101                       ((revision . 8208) (committer . kiyoka) (utc . 1206016615) (rank . 5))
102                       ((revision . 13304) (committer . kiyoka) (utc . 1212675369) (rank . 4))
103                       ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
104                       ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
105                       ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
106                       ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3)))
107                      (text "* UnitTest用のサンプルファイル" "----" "*** start" "*** [[Entry1]]" "*** [[Entry2]]" "*** end"))
108                    (lambda () (serialize deserialized)))
109              (test "serialized == deserialized" serialized (lambda () (serialize deserialized)))))
110
111      (test-section "oldtype-page")
112      (set! oldtype-page (parse (make <oldtype-page> :name "Test") input-port log-file ann-file))
113      (let1 serialized     (serialize oldtype-page)
114            (test "serialized == DATA        "
115                  '((name . "Test")
116                    (sxml
117                     (div
118                      ((lineno . 1))
119                      (h2 "UnitTest用のサンプルファイル" "\n"))
120                     (div
121                      ((lineno . 2))
122                      (hr))
123                     (div
124                      ((lineno . 3))
125                      (h4 "start" "\n"))
126                     (div
127                      ((lineno . 4))
128                      (h4
129                       (wiki-name "Entry1") "\n"))
130                     (div
131                      ((lineno . 5))
132                      (h4
133                       (wiki-name "Entry2") "\n"))
134                     (div
135                      ((lineno . 6))
136                      (h4 "end" "\n")))
137                    (timeline (name . "Test") (revision . 13317)
138                              (log
139                               (13334 (revision . 13334) (committer . kiyoka) (utc . 1212756234) (rank . 5))
140                               (13317 (revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
141                               (13306 (revision . 13306) (committer . kiyoka) (utc . 1212676363) (rank . 5))
142                               (13304 (revision . 13304) (committer . kiyoka) (utc . 1212675369) (rank . 4))
143                               (13242 (revision . 13242) (committer . kiyoka) (utc . 1212594143) (rank . 5))
144                               (13237 (revision . 13237) (committer . kiyoka) (utc . 1212592559) (rank . 5))
145                               (13233 (revision . 13233) (committer . kiyoka) (utc . 1212591037) (rank . 5))
146                               (13224 (revision . 13224) (committer . kiyoka) (utc . 1212584569) (rank . 5))
147                               (13223 (revision . 13223) (committer . kiyoka) (utc . 1212584402) (rank . 5))
148                               (13080 (revision . 13080) (committer . kiyoka) (utc . 1212407693) (rank . 5))
149                               (13032 (revision . 13032) (committer . kiyoka) (utc . 1212334026) (rank . 5))
150                               (13023 (revision . 13023) (committer . kiyoka) (utc . 1212331805) (rank . 5))
151                               (12471 (revision . 12471) (committer . kiyoka) (utc . 1211813046) (rank . 5))
152                               (12460 (revision . 12460) (committer . kiyoka) (utc . 1211806608) (rank . 5))
153                               (12356 (revision . 12356) (committer . kiyoka) (utc . 1211721110) (rank . 5))
154                               (12293 (revision . 12293) (committer . kiyoka) (utc . 1211642182) (rank . 5))
155                               (12266 (revision . 12266) (committer . kiyoka) (utc . 1211601688) (rank . 5))
156                               (11607 (revision . 11607) (committer . kiyoka) (utc . 1210777124) (rank . 5))
157                               (11606 (revision . 11606) (committer . kiyoka) (utc . 1210777098) (rank . 5))
158                               (11603 (revision . 11603) (committer . kiyoka) (utc . 1210774733) (rank . 5))
159                               (11245 (revision . 11245) (committer . kiyoka) (utc . 1210161037) (rank . 5))
160                               (10961 (revision . 10961) (committer . kiyoka) (utc . 1209740697) (rank . 5))
161                               (10957 (revision . 10957) (committer . kiyoka) (utc . 1209737179) (rank . 5))
162                               (10149 (revision . 10149) (committer . kiyoka) (utc . 1208864713) (rank . 5))
163                               (10146 (revision . 10146) (committer . kiyoka) (utc . 1208862687) (rank . 5))
164                               (10084 (revision . 10084) (committer . kiyoka) (utc . 1208784928) (rank . 5))
165                               (10014 (revision . 10014) (committer . kiyoka) (utc . 1208695655) (rank . 5))
166                               (9977 (revision . 9977) (committer . kiyoka) (utc . 1208667401) (rank . 5))
167                               (9976 (revision . 9976) (committer . kiyoka) (utc . 1208667383) (rank . 5))
168                               (9952 (revision . 9952) (committer . kiyoka) (utc . 1208652380) (rank . 5))
169                               (9948 (revision . 9948) (committer . kiyoka) (utc . 1208650871) (rank . 5))
170                               (9924 (revision . 9924) (committer . kiyoka) (utc . 1208619757) (rank . 5))
171                               (9903 (revision . 9903) (committer . kiyoka) (utc . 1208606479) (rank . 5))
172                               (9585 (revision . 9585) (committer . kiyoka) (utc . 1208348091) (rank . 5))
173                               (9583 (revision . 9583) (committer . kiyoka) (utc . 1208346288) (rank . 5))
174                               (8962 (revision . 8962) (committer . kiyoka) (utc . 1207444336) (rank . 5))
175                               (8676 (revision . 8676) (committer . kiyoka) (utc . 1207141582) (rank . 5))
176                               (8607 (revision . 8607) (committer . kiyoka) (utc . 1207051192) (rank . 5))
177                               (8569 (revision . 8569) (committer . kiyoka) (utc . 1206968180) (rank . 5))
178                               (8342 (revision . 8342) (committer . kiyoka) (utc . 1206360044) (rank . 5))
179                               (8263 (revision . 8263) (committer . kiyoka) (utc . 1206115042) (rank . 5))
180                               (8254 (revision . 8254) (committer . kiyoka) (utc . 1206097354) (rank . 5))
181                               (8212 (revision . 8212) (committer . kiyoka) (utc . 1206027766) (rank . 5))
182                               (8211 (revision . 8211) (committer . kiyoka) (utc . 1206027177) (rank . 5))
183                               (8208 (revision . 8208) (committer . kiyoka) (utc . 1206016615) (rank . 5))
184                               (8205 (revision . 8205) (committer . kiyoka) (utc . 1206012635) (rank . 5))
185                               (8091 (revision . 8091) (committer . kiyoka) (utc . 1205842976) (rank . 5))
186                               (7924 (revision . 7924) (committer . kiyoka) (utc . 1205421544) (rank . 5))
187                               (7920 (revision . 7920) (committer . kiyoka) (utc . 1205419584) (rank . 5))
188                               (7919 (revision . 7919) (committer . kiyoka) (utc . 1205418381) (rank . 5))
189                               (7870 (revision . 7870) (committer . kiyoka) (utc . 1205336331) (rank . 5))
190                               (7811 (revision . 7811) (committer . kiyoka) (utc . 1205239814) (rank . 5)))
191                              (annotation
192                               ((revision . 8208) (committer . kiyoka) (utc . 1206016615) (rank . 5))
193                               ((revision . 13304) (committer . kiyoka) (utc . 1212675369) (rank . 4))
194                               ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
195                               ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
196                               ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3))
197                               ((revision . 13317) (committer . kiyoka) (utc . 1212711085) (rank . 3)))
198                              (text "* UnitTest用のサンプルファイル" "----" "*** start" "*** [[Entry1]]" "*** [[Entry2]]" "*** end")))
199                  (lambda () (serialize oldtype-page)))
200
201            (test "serialized == deserialized" serialized (lambda ()
202                                                            (serialize
203                                                             (deserialize
204                                                              (make <oldtype-page>)
205                                                              serialized)))))
206      (test-end)
207
208
209      (test-start "oldtype-page util method")
210     
211      (test-section "oldtype-timeline")
212      (set! oldtype-timeline (timeline-of oldtype-page))
213      (test "log of lineno 1"
214            '((revision . 8208) (committer . kiyoka) (utc . 1206016615) (rank . 5))
215            (lambda ()
216              (serialize (log-by-lineno oldtype-timeline 1))))
217
218      (test "ago string of lineno 1 <oldtype-timeline>"
219            "  (2 months ago)"
220            (lambda ()
221              (get-ago (log-by-lineno oldtype-timeline 1))))
222      (test "ago string of lineno 1 <oldtype-page>"
223            "  (2 months ago)"
224            (lambda ()
225              (get-ago oldtype-page 1)))
226     
227      (test "date string of lineno 1 <oldtype-timeline>"
228            "2008-03-20 21:36 (+0900)"
229            (lambda ()
230              (get-date (log-by-lineno oldtype-timeline 1))))
231      (test "date string of lineno 1 <oldtype-page>"
232            "2008-03-20 21:36 (+0900)"
233            (lambda ()
234              (get-date oldtype-page 1)))
235
236      (test "rank value of lineno 1 <oldtype-timeline>"
237            5
238            (lambda ()
239              (rank-by-lineno oldtype-timeline 1)))
240      (test "rank value of lineno 2 <oldtype-timeline>"
241            4
242            (lambda ()
243              (rank-by-lineno oldtype-timeline 2)))
244
245      (test "date,ago,rank,committer of lineno 1 <oldtype-page>"
246            '((date  . "2008-03-20 21:36 (+0900)")
247              (ago   . "  (2 months ago)")
248              (rank  . 5)
249              (committer . "kiyoka"))
250            (lambda ()
251              `(
252                (date      . ,(get-date      oldtype-page 1))
253                (ago       . ,(get-ago       oldtype-page 1))
254                (rank      . ,(get-rank      oldtype-page 1))
255                (committer . ,(get-committer oldtype-page 1)))))
256
257      (test "text of lineno 1 <oldtype-page>"
258            "* UnitTest用のサンプルファイル"
259            (lambda ()
260              (get-text oldtype-page 1)))
261     
262      (test "text of lineno 2 <oldtype-page>"
263            "----"
264            (lambda ()
265              (get-text oldtype-page 2)))
266
267      (test "rank-list of <oldtype-page>"
268            '(5 4 3 3 3 3)
269            (lambda ()
270              (get-rank-list oldtype-page)))
271
272     
273      (test-end)
274
275      (test-start "generating RSS")
276     
277      (test "wikiname list for RSS"
278            '((4 . "Entry1") (5 . "Entry2"))
279            (lambda ()
280              (get-rss-entry-pages oldtype-page)))
281
282      (test "oldtype-page list for RSS"
283            '(("Entry1" "Entry1の1行目" ((revision . 13304) (committer . kiyoka) (utc . 1212675369) (rank . 5)))
284              ("Entry2" "Entry2の1行目" ((revision . 13334) (committer . kiyoka) (utc . 1212756234) (rank . 4))))
285            (lambda ()
286              (map
287               (lambda (x)
288                 (let* ((page (oldtype:load-page "" (cdr x)))
289                        (timeline (timeline-of page)))
290                   `(
291                     ,(name-of page)
292                     ,(car (get-text-list page))
293                     ,(serialize
294                       (get-latest-log timeline)))))
295               (get-rss-entry-pages oldtype-page))))
296
297      (test-end)
298
299      )))
Note: See TracBrowser for help on using the browser.