|
47 | 47 | (defn- forking-printer-test-streams
|
48 | 48 | []
|
49 | 49 | (let [out-writer (StringWriter.)
|
50 |
| - message-writer (StringWriter.) |
51 |
| - message {:session (atom {#'*out* message-writer})} |
52 |
| - printer (o/forking-printer [message] :out)] |
| 50 | + message-writers [(StringWriter.) (StringWriter.)] |
| 51 | + messages [{:session (atom {#'*out* (message-writers 0)})} |
| 52 | + {:session (atom {#'*err* (message-writers 1)})}] |
| 53 | + printers [(o/forking-printer [(messages 0) (messages 1)] :out) |
| 54 | + (o/forking-printer [(messages 0) (messages 1)] :err)]] |
53 | 55 | {:out-writer out-writer
|
54 |
| - :message-writer message-writer |
55 |
| - :printer printer})) |
| 56 | + :message-writers message-writers |
| 57 | + :printers printers})) |
56 | 58 |
|
57 | 59 | (deftest forking-printer-test
|
58 | 60 | (testing "forking-printer prints to all message streams and original stream"
|
59 | 61 | (testing "with String argument "
|
60 | 62 | (let [{:keys [^StringWriter out-writer
|
61 |
| - ^StringWriter message-writer |
62 |
| - ^PrintWriter printer]} |
| 63 | + message-writers |
| 64 | + printers]} |
63 | 65 | (forking-printer-test-streams)]
|
64 | 66 | (with-original-output [{:out out-writer}]
|
65 |
| - (.write printer "Hello") |
| 67 | + (.write ^PrintWriter (printers 0) "Hello") |
66 | 68 | (is (= "Hello" (.toString out-writer)))
|
67 |
| - (is (= "Hello" (.toString message-writer)))))) |
| 69 | + (is (= "Hello" (.toString ^StringWriter (message-writers 0)))) |
| 70 | + (is (= "" (.toString ^StringWriter (message-writers 1))))) |
| 71 | + (with-original-output [{:err out-writer}] |
| 72 | + (.write ^PrintWriter (printers 1) "Hello") |
| 73 | + (is (= "HelloHello" (.toString out-writer))) |
| 74 | + (is (= "Hello" (.toString ^StringWriter (message-writers 0)))) |
| 75 | + (is (= "Hello" (.toString ^StringWriter (message-writers 1))))))) |
68 | 76 | (testing "with int"
|
69 | 77 | (let [{:keys [^StringWriter out-writer
|
70 |
| - ^StringWriter message-writer |
71 |
| - ^PrintWriter printer]} |
| 78 | + message-writers |
| 79 | + printers]} |
72 | 80 | (forking-printer-test-streams)
|
73 | 81 | an-int (int 32)]
|
74 | 82 | (with-original-output [{:out out-writer}]
|
75 |
| - (.write printer an-int) |
| 83 | + (.write ^PrintWriter (printers 0) an-int) |
76 | 84 | (is (= " " (.toString out-writer)))
|
77 |
| - (is (= " " (.toString message-writer)))))) |
| 85 | + (is (= " " (.toString ^StringWriter (message-writers 0)))) |
| 86 | + (is (= "" (.toString ^StringWriter (message-writers 1))))) |
| 87 | + (with-original-output [{:err out-writer}] |
| 88 | + (.write ^PrintWriter (printers 1) an-int) |
| 89 | + (is (= " " (.toString out-writer))) |
| 90 | + (is (= " " (.toString ^StringWriter (message-writers 0)))) |
| 91 | + (is (= " " (.toString ^StringWriter (message-writers 1))))))) |
78 | 92 | (testing "with char array"
|
79 | 93 | (let [{:keys [^StringWriter out-writer
|
80 |
| - ^StringWriter message-writer |
81 |
| - ^PrintWriter printer]} |
| 94 | + message-writers |
| 95 | + printers]} |
82 | 96 | (forking-printer-test-streams)]
|
83 | 97 | (with-original-output [{:out out-writer}]
|
84 |
| - (.write printer (char-array "and")) |
| 98 | + (.write ^PrintWriter (printers 0) (char-array "and")) |
85 | 99 | (is (= "and" (.toString out-writer)))
|
86 |
| - (is (= "and" (.toString message-writer)))))) |
| 100 | + (is (= "and" (.toString ^StringWriter (message-writers 0)))) |
| 101 | + (is (= "" (.toString ^StringWriter (message-writers 1))))) |
| 102 | + (with-original-output [{:err out-writer}] |
| 103 | + (.write ^PrintWriter (printers 1) (char-array "and")) |
| 104 | + (is (= "andand" (.toString out-writer))) |
| 105 | + (is (= "and" (.toString ^StringWriter (message-writers 0)))) |
| 106 | + (is (= "and" (.toString ^StringWriter (message-writers 1))))))) |
87 | 107 | (testing "with String with offsets"
|
88 | 108 | (let [{:keys [^StringWriter out-writer
|
89 |
| - ^StringWriter message-writer |
90 |
| - ^PrintWriter printer]} |
| 109 | + message-writers |
| 110 | + printers]} |
91 | 111 | (forking-printer-test-streams)]
|
92 | 112 | (with-original-output [{:out out-writer}]
|
93 |
| - (.write printer "12 good34" 3 4) |
| 113 | + (.write ^PrintWriter (printers 0) "12 good34" 3 4) |
94 | 114 | (is (= "good" (.toString out-writer)))
|
95 |
| - (is (= "good" (.toString message-writer)))))) |
| 115 | + (is (= "good" (.toString ^StringWriter (message-writers 0)))) |
| 116 | + (is (= "" (.toString ^StringWriter (message-writers 1))))) |
| 117 | + (with-original-output [{:err out-writer}] |
| 118 | + (.write ^PrintWriter (printers 1) "12 good34" 3 4) |
| 119 | + (is (= "goodgood" (.toString out-writer))) |
| 120 | + (is (= "good" (.toString ^StringWriter (message-writers 0)))) |
| 121 | + (is (= "good" (.toString ^StringWriter (message-writers 1))))))) |
96 | 122 | (testing "with char array with offsets"
|
97 | 123 | (let [{:keys [^StringWriter out-writer
|
98 |
| - ^StringWriter message-writer |
99 |
| - ^PrintWriter printer]} |
| 124 | + message-writers |
| 125 | + printers]} |
100 | 126 | (forking-printer-test-streams)]
|
101 | 127 | (with-original-output [{:out out-writer}]
|
102 |
| - (.write printer (char-array " bye67") 1 3) |
| 128 | + (.write ^PrintWriter (printers 0) (char-array " bye67") 1 3) |
103 | 129 | (is (= "bye" (.toString out-writer)))
|
104 |
| - (is (= "bye" (.toString message-writer)))))))) |
| 130 | + (is (= "bye" (.toString ^StringWriter (message-writers 0)))) |
| 131 | + (is (= "" (.toString ^StringWriter (message-writers 1))))) |
| 132 | + (with-original-output [{:err out-writer}] |
| 133 | + (.write ^PrintWriter (printers 1) (char-array " bye67") 1 3) |
| 134 | + (is (= "byebye" (.toString out-writer))) |
| 135 | + (is (= "bye" (.toString ^StringWriter (message-writers 0)))) |
| 136 | + (is (= "bye" (.toString ^StringWriter (message-writers 1))))))))) |
0 commit comments