source: project/release/3/filepath/trunk/tests/run.scm @ 12291

Last change on this file since 12291 was 12291, checked in by Ivan Raikov, 13 years ago

Completed porting the test cases from FilePath?.hs

File size: 7.8 KB
Line 
1(require-extension srfi-1)
2(require-extension filepath)
3(require-extension test)
4
5;; test cases from Haskell implementation
6
7(test-group "split-search-path"
8            (let ((ex (list "File1" "File2" "File3")))
9              (let ((p "File1;File2;File3"))
10                (filepath:posix #f)
11                (test  (sprintf "(split-search-path ~S) => ~S (Windows)" p ex)
12                      ex (filepath:split-search-path p)))
13              (let ((p "File1:File2:File3"))
14                (filepath:posix #t)
15                (test (sprintf "(split-search-path ~S) => ~S (POSIX)" p ex)
16                      ex (filepath:split-search-path p)))))
17
18(define split-extension-tests
19 `(("file.txt"  ("file" ".txt"))
20   ("file"  ("file" ""))
21   ("file/file.txt"  ("file/file" ".txt"))
22   ("file.txt/boris"  ("file.txt/boris" ""))
23   ("file.txt/boris.ext"  ("file.txt/boris" ".ext"))
24   ("file/path.txt.bob.fred"  ("file/path.txt.bob" ".fred"))
25   ("file/path.txt/"  ("file/path.txt/" ""))))
26 
27
28(test-group "split-extension"
29            (for-each (lambda (pr)
30                        (let ((p (first pr)) (res (second pr)))
31                          (test (sprintf "(split-extension ~S) => ~S" p res)
32                                res (filepath:split-extension p))))
33                      split-extension-tests))
34
35
36(define replace-extension-tests
37  `((("file.txt" ".bob")  "file.bob")
38    (("file.txt" "bob")  "file.bob")
39    (("file" ".bob")  "file.bob")
40    (("file.txt" "")  "file")
41    (("file.fred.bob" "txt")  "file.fred.txt")))
42
43(test-group "replace-extension"
44            (for-each (lambda (pr)
45                        (let ((p (first pr)) (res (second pr)))
46                          (test (sprintf "~S => ~S" (cons 'replace-extension p) res)
47                                res (apply filepath:replace-extension p))))
48                      replace-extension-tests))
49
50(define add-extension-tests
51  `((("file.txt" "bib") "file.txt.bib")
52    (("file." ".bib") "file..bib")
53    (("file" ".bib") "file.bib")
54    (("/" "x") "/.x")))
55
56
57(test-group "add-extension"
58            (for-each (lambda (pr)
59                        (let ((p (first pr)) (res (second pr)))
60                          (test (sprintf "~S => ~S" (cons 'add-extension p) res)
61                                res (apply filepath:add-extension p))))
62                      add-extension-tests))
63
64(define split-drive-windows-tests
65  `(("file"  ("" "file"))
66    ("c:/file"  ("c:/" "file"))
67    ("c:\\file"  ("c:\\" "file"))
68    ("\\\\shared\\test"  ("\\\\shared\\" "test"))
69    ("\\\\shared"  ("\\\\shared" ""))
70    ("\\\\?\\UNC\\shared\\file"  ("\\\\?\\UNC\\shared\\" "file"))
71    ("\\\\?\\d:\\file"  ("\\\\?\\d:\\" "file"))
72    ("/d"  ("" "/d"))))
73
74(define split-drive-posix-tests
75  `(("/test"  ("/" "test"))
76    ("//test"  ("//" "test"))
77    ("test/file"  ("" "test/file"))
78    ("file"  ("" "file"))))
79
80(test-group "split-drive"
81            (filepath:posix #f)
82            (for-each (lambda (pr)
83                        (let ((p (first pr)) (res (second pr)))
84                          (test (sprintf "~S => ~S" (list 'split-drive p) res)
85                                res (filepath:split-drive p))))
86                      split-drive-windows-tests)
87            (filepath:posix #t)
88            (for-each (lambda (pr)
89                        (let ((p (first pr)) (res (second pr)))
90                          (test (sprintf "~S => ~S" (list 'split-drive p) res)
91                                res (filepath:split-drive p))))
92                      split-drive-posix-tests))
93
94(define split-file-name-tests
95  `(("file/bob.txt"  ("file/" "bob.txt"))
96    ("file/" ("file/" ""))
97    ("bob"   ("" "bob"))
98    ("/"     ("/" ""))))
99 
100(test-group "split-file-name"
101            (filepath:posix #f)
102            (let ((p "c:") (res (list "c:" "")))
103              (test (sprintf "~S => ~S" (list 'split-file-name p) res)
104                    res (filepath:split-file-name p)))
105            (filepath:posix #t)
106            (for-each (lambda (pr)
107                        (let ((p (first pr)) (res (second pr)))
108                          (test (sprintf "~S => ~S" (list 'split-file-name p) res)
109                                res (filepath:split-file-name p))))
110                      split-file-name-tests))
111
112(define take-directory-windows-tests
113  `(("foo\\bar"      "foo")
114    ("foo\\bar\\\\"  "foo\\bar")
115    ("C:\\"          "C:\\")))
116
117(define take-directory-posix-tests
118  `(("/foo/bar/baz"  "/foo/bar")
119    ("/foo/bar/baz/" "/foo/bar/baz")))
120
121
122(test-group "take-directory"
123            (filepath:posix #f)
124            (for-each (lambda (pr)
125                        (let ((p (first pr)) (res (second pr)))
126                          (test (sprintf "~S => ~S" (list 'take-directory p) res)
127                                res (filepath:take-directory p))))
128                      take-directory-windows-tests)
129            (filepath:posix #t)
130            (for-each (lambda (pr)
131                        (let ((p (first pr)) (res (second pr)))
132                          (test (sprintf "~S => ~S" (list 'take-directory p) res)
133                                res (filepath:take-directory p))))
134                      take-directory-posix-tests))
135
136(define split-path-tests
137  `(("test//item/" ("test//" "item/"))
138    ("test/item/file" ("test/" "item/" "file"))
139    ("" ())
140    ("/file/test" ("/" "file/" "test"))))
141
142(test-group "split-path"
143            (filepath:posix #f)
144            (let ((p "c:\\test\\path") (res (list "c:\\" "test\\" "path")))
145              (test (sprintf "~S => ~S" (list 'split-path p) res)
146                    res (filepath:split-path p)))
147            (filepath:posix #t)
148            (for-each (lambda (pr)
149                        (let ((p (first pr)) (res (second pr)))
150                          (test (sprintf "~S => ~S" (list 'split-path p) res)
151                                res (filepath:split-path p))))
152                      split-path-tests))
153
154(define make-relative-windows-tests
155  `((("C:\\Home" "c:\\home\\bob") "bob")
156    (("C:\\Home" "D:\\Home\\Bob") "D:\\Home\\Bob")))
157
158(define make-relative-posix-tests
159  `((("/Home" "/home/bob") "/home/bob")
160    (("/home/" "/home/bob/foo/bar") "bob/foo/bar")
161    (("/fred" "bob") "bob")
162    (("/file/test" "/file/test/fred") "fred")
163    (("/file/test" "/file/test/fred/") "fred/")
164    (("some/path" "some/path/a/b/c") "a/b/c")))
165
166(test-group "make-relative"
167            (filepath:posix #f)
168            (for-each (lambda (pr)
169                        (let ((p (first pr)) (res (second pr)))
170                          (test (sprintf "~S => ~S" (cons 'make-relative p) res)
171                                res (apply filepath:make-relative p))))
172                      make-relative-windows-tests)
173            (filepath:posix #t)
174            (for-each (lambda (pr)
175                        (let ((p (first pr)) (res (second pr)))
176                          (test (sprintf "~S => ~S" (cons 'make-relative p) res)
177                                res (apply filepath:make-relative p))))
178                      make-relative-posix-tests))
179
180(define normalise-posix-tests
181  `(("/file/\\test////"  "/file/\\test/")
182    ("/file/./test"  "/file/test")
183    ("/test/file/../bob/fred/"  "/test/file/../bob/fred/")
184    ("../bob/fred/"  "../bob/fred/")
185    ("./bob/fred/"   "bob/fred/")
186    ("./"  "./")))
187
188(define normalise-windows-tests
189  `(("c:\\file/bob\\"  "C:\\file\\bob\\")
190    ("c:\\"  "C:\\")
191    ("\\\\server\\test"  "\\\\server\\test")
192    ("c:/file"  "C:\\file")
193    ("."  ".")))
194
195
196(test-group "normalise"
197            (filepath:posix #f)
198            (for-each (lambda (pr)
199                        (let ((p (first pr)) (res (second pr)))
200                          (test (sprintf "~S => ~S" (list 'normalise p) res)
201                                res (filepath:normalise p))))
202                      normalise-windows-tests)
203            (filepath:posix #t)
204            (for-each (lambda (pr)
205                        (let ((p (first pr)) (res (second pr)))
206                          (test (sprintf "~S => ~S" (list 'normalise p) res)
207                                res (filepath:normalise p))))
208                      normalise-posix-tests))
209
210
211(define is-valid-posix-tests
212  `(("/random_ path:*" #t)))
213
214(define is-valid-windows-tests
215 `(( "c:\\test" #t)
216   ( "c:\\test:of_test" #f)
217   ( "test*" #f)
218   ( "c:\\test\\nul" #f)
219   ( "c:\\test\\prn.txt" #f)
220   ( "c:\\nul\\file" #f)))
221
222
223(test-group "is-valid?"
224            (filepath:posix #f)
225            (for-each (lambda (pr)
226                        (let ((p (first pr)) (res (second pr)))
227                          (test (sprintf "~S => ~S" (list 'is-valid? p) res)
228                                res (filepath:is-valid? p))))
229                      is-valid-windows-tests)
230            (filepath:posix #t)
231            (for-each (lambda (pr)
232                        (let ((p (first pr)) (res (second pr)))
233                          (test (sprintf "~S => ~S" (list 'is-valid? p) res)
234                                res (filepath:is-valid? p))))
235                      is-valid-posix-tests))
236
237(define make-valid-tests
238  `(("c:\\test:of_test"  "c:\\test_of_test")
239    ("test*"  "test_")
240    ("c:\\test\\nul"  "c:\\test\\nul_")
241    ("c:\\test\\prn.txt"  "c:\\test\\prn_.txt")
242    ("c:\\test/prn.txt"  "c:\\test/prn_.txt")
243    ("c:\\nul\\file"  "c:\\nul_\\file")))
244
245
246(test-group "make-valid"
247            (filepath:posix #f)
248            (for-each (lambda (pr)
249                        (let ((p (first pr)) (res (second pr)))
250                          (test (sprintf "~S => ~S" (list 'make-valid p) res)
251                                res (filepath:make-valid p))))
252                      make-valid-tests)
253            (filepath:posix #t)
254            )
Note: See TracBrowser for help on using the repository browser.