Mercurial > lasercutter
comparison src/clojure/contrib/test_contrib/test_io.clj @ 10:ef7dbbd6452c
added clojure source goodness
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 21 Aug 2010 06:25:44 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
9:35cf337adfcf | 10:ef7dbbd6452c |
---|---|
1 (ns clojure.contrib.test-io | |
2 (:refer-clojure :exclude (spit)) | |
3 (:use clojure.test clojure.contrib.io) | |
4 (:import (java.io File FileInputStream BufferedInputStream) | |
5 (java.net URL URI))) | |
6 | |
7 (deftest file-str-backslash | |
8 (is (= (java.io.File. | |
9 (str "C:" java.io.File/separator | |
10 "Documents" java.io.File/separator | |
11 "file.txt")) | |
12 (file-str "C:\\Documents\\file.txt")))) | |
13 | |
14 (deftest test-as-file | |
15 (testing "strings" | |
16 (is (= (File. "foo") (as-file "foo")))) | |
17 (testing "Files" | |
18 (is (= (File. "bar") (as-file (File. "bar")))))) | |
19 | |
20 (deftest test-as-url | |
21 (are [result expr] (= result expr) | |
22 (URL. "http://foo") (as-url (URL. "http://foo")) | |
23 (URL. "http://foo") (as-url "http://foo") | |
24 (URL. "http://foo") (as-url (URI. "http://foo")) | |
25 (URL. "file:/foo") (as-url (File. "/foo")))) | |
26 | |
27 (deftest test-delete-file | |
28 (let [file (File/createTempFile "test" "deletion") | |
29 not-file (File. (str (java.util.UUID/randomUUID)))] | |
30 (delete-file (.getAbsolutePath file)) | |
31 (is (not (.exists file))) | |
32 (is (thrown? ArithmeticException (/ 1 0))) | |
33 (is (thrown? java.io.IOException (delete-file not-file))) | |
34 (is (delete-file not-file :silently)))) | |
35 | |
36 (deftest test-relative-path-string | |
37 (testing "strings" | |
38 (is (= "foo" (relative-path-string "foo")))) | |
39 (testing "absolute path strings are forbidden" | |
40 (is (thrown? IllegalArgumentException (relative-path-string (str File/separator "baz"))))) | |
41 (testing "relative File paths" | |
42 (is (= "bar" (relative-path-string (File. "bar"))))) | |
43 (testing "absolute File paths are forbidden" | |
44 (is (thrown? IllegalArgumentException (relative-path-string (File. (str File/separator "quux"))))))) | |
45 | |
46 (defn stream-should-have [stream expected-bytes msg] | |
47 (let [actual-bytes (byte-array (alength expected-bytes))] | |
48 (.read stream actual-bytes) | |
49 (is (= -1 (.read stream)) (str msg " : should be end of stream")) | |
50 (is (= (seq expected-bytes) (seq actual-bytes)) (str msg " : byte arrays should match")))) | |
51 | |
52 (deftest test-input-stream | |
53 (let [file (File/createTempFile "test-input-stream" "txt") | |
54 bytes (.getBytes "foobar")] | |
55 (spit file "foobar") | |
56 (doseq [[expr msg] | |
57 [[file File] | |
58 [(FileInputStream. file) FileInputStream] | |
59 [(BufferedInputStream. (FileInputStream. file)) BufferedInputStream] | |
60 [(.. file toURI) URI] | |
61 [(.. file toURI toURL) URL] | |
62 [(.. file toURI toURL toString) "URL as String"] | |
63 [(.. file toString) "File as String"]]] | |
64 (with-open [s (input-stream expr)] | |
65 (stream-should-have s bytes msg))))) | |
66 | |
67 (deftest test-streams-buffering | |
68 (let [data (.getBytes "")] | |
69 (is (instance? java.io.BufferedReader (reader data))) | |
70 (is (instance? java.io.BufferedWriter (writer (java.io.ByteArrayOutputStream.)))) | |
71 (is (instance? java.io.BufferedInputStream (input-stream data))) | |
72 (is (instance? java.io.BufferedOutputStream (output-stream (java.io.ByteArrayOutputStream.)))))) | |
73 | |
74 (deftest test-streams-defaults | |
75 (let [f (File/createTempFile "clojure.contrib" "test-reader-writer") | |
76 content "test\u2099ing"] | |
77 (try | |
78 (is (thrown? Exception (reader (Object.)))) | |
79 (is (thrown? Exception (writer (Object.)))) | |
80 | |
81 (are [write-to read-from] (= content (do | |
82 (spit write-to content) | |
83 (slurp* (or read-from write-to)))) | |
84 f nil | |
85 (.getAbsolutePath f) nil | |
86 (.toURL f) nil | |
87 (.toURI f) nil | |
88 (java.io.FileOutputStream. f) f | |
89 (java.io.OutputStreamWriter. (java.io.FileOutputStream. f) "UTF-8") f | |
90 f (java.io.FileInputStream. f) | |
91 f (java.io.InputStreamReader. (java.io.FileInputStream. f) "UTF-8")) | |
92 | |
93 (is (= content (slurp* (.getBytes content "UTF-8")))) | |
94 (is (= content (slurp* (.toCharArray content)))) | |
95 (finally | |
96 (.delete f))))) |