@@ -7,23 +7,17 @@ import (
77 "github.com/shazow/ssh-chat/chat/message"
88)
99
10- // Used for testing
11- type MockScreen struct {
12- buffer []byte
10+ type ChannelWriter struct {
11+ Chan chan []byte
1312}
1413
15- func (s * MockScreen ) Write (data []byte ) (n int , err error ) {
16- s . buffer = append ( s . buffer , data ... )
14+ func (w * ChannelWriter ) Write (data []byte ) (n int , err error ) {
15+ w . Chan <- data
1716 return len (data ), nil
1817}
1918
20- func (s * MockScreen ) Read (p * []byte ) (n int , err error ) {
21- * p = s .buffer
22- s .buffer = []byte {}
23- return len (* p ), nil
24- }
25-
26- func (s * MockScreen ) Close () error {
19+ func (w * ChannelWriter ) Close () error {
20+ close (w .Chan )
2721 return nil
2822}
2923
@@ -40,11 +34,6 @@ func TestRoomServe(t *testing.T) {
4034 }
4135}
4236
43- type ScreenedUser struct {
44- * message.User
45- screen * MockScreen
46- }
47-
4837/*
4938func TestIgnore(t *testing.T) {
5039 var buffer []byte
@@ -161,7 +150,9 @@ func expectOutput(t *testing.T, buffer []byte, expected string) {
161150func TestRoomJoin (t * testing.T ) {
162151 var expected , actual []byte
163152
164- s := & MockScreen {}
153+ s := & ChannelWriter {
154+ Chan : make (chan []byte ),
155+ }
165156 u := message .PipedScreen ("foo" , s )
166157
167158 ch := NewRoom ()
@@ -174,21 +165,21 @@ func TestRoomJoin(t *testing.T) {
174165 }
175166
176167 expected = []byte (" * foo joined. (Connected: 1)" + message .Newline )
177- s . Read ( & actual )
168+ actual = <- s . Chan
178169 if ! reflect .DeepEqual (actual , expected ) {
179170 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
180171 }
181172
182173 ch .Send (message .NewSystemMsg ("hello" , u ))
183174 expected = []byte ("-> hello" + message .Newline )
184- s . Read ( & actual )
175+ actual = <- s . Chan
185176 if ! reflect .DeepEqual (actual , expected ) {
186177 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
187178 }
188179
189180 ch .Send (message .ParseInput ("/me says hello." , u ))
190181 expected = []byte ("** foo says hello." + message .Newline )
191- s . Read ( & actual )
182+ actual = <- s . Chan
192183 if ! reflect .DeepEqual (actual , expected ) {
193184 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
194185 }
@@ -250,15 +241,12 @@ func TestRoomQuietToggleBroadcasts(t *testing.T) {
250241 t .Fatal (err )
251242 }
252243
253- // Drain the initial Join message
254- <- ch .broadcast
255-
256244 u .SetConfig (message.UserConfig {
257245 Quiet : false ,
258246 })
259247
260248 expectedMsg := message .NewAnnounceMsg ("Ignored" )
261- ch .HandleMsg (expectedMsg )
249+ go ch .HandleMsg (expectedMsg )
262250 msg := <- msgs
263251 if _ , ok := msg .(* message.AnnounceMsg ); ! ok {
264252 t .Errorf ("Got: `%T`; Expected: `%T`" , msg , expectedMsg )
@@ -268,8 +256,10 @@ func TestRoomQuietToggleBroadcasts(t *testing.T) {
268256 Quiet : true ,
269257 })
270258
271- ch .HandleMsg (message .NewAnnounceMsg ("Ignored" ))
272- ch .HandleMsg (message .NewSystemMsg ("hello" , u ))
259+ go func () {
260+ ch .HandleMsg (message .NewAnnounceMsg ("Ignored" ))
261+ ch .HandleMsg (message .NewSystemMsg ("hello" , u ))
262+ }()
273263 msg = <- msgs
274264 if _ , ok := msg .(* message.AnnounceMsg ); ok {
275265 t .Errorf ("Got unexpected `%T`" , msg )
@@ -279,7 +269,9 @@ func TestRoomQuietToggleBroadcasts(t *testing.T) {
279269func TestQuietToggleDisplayState (t * testing.T ) {
280270 var expected , actual []byte
281271
282- s := & MockScreen {}
272+ s := & ChannelWriter {
273+ Chan : make (chan []byte ),
274+ }
283275 u := message .PipedScreen ("foo" , s )
284276
285277 ch := NewRoom ()
@@ -292,23 +284,23 @@ func TestQuietToggleDisplayState(t *testing.T) {
292284 }
293285
294286 expected = []byte (" * foo joined. (Connected: 1)" + message .Newline )
295- s . Read ( & actual )
287+ actual = <- s . Chan
296288 if ! reflect .DeepEqual (actual , expected ) {
297289 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
298290 }
299291
300292 ch .Send (message .ParseInput ("/quiet" , u ))
301293
302294 expected = []byte ("-> Quiet mode is toggled ON" + message .Newline )
303- s . Read ( & actual )
295+ actual = <- s . Chan
304296 if ! reflect .DeepEqual (actual , expected ) {
305297 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
306298 }
307299
308300 ch .Send (message .ParseInput ("/quiet" , u ))
309301
310302 expected = []byte ("-> Quiet mode is toggled OFF" + message .Newline )
311- s . Read ( & actual )
303+ actual = <- s . Chan
312304 if ! reflect .DeepEqual (actual , expected ) {
313305 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
314306 }
@@ -317,7 +309,9 @@ func TestQuietToggleDisplayState(t *testing.T) {
317309func TestRoomNames (t * testing.T ) {
318310 var expected , actual []byte
319311
320- s := & MockScreen {}
312+ s := & ChannelWriter {
313+ Chan : make (chan []byte ),
314+ }
321315 u := message .PipedScreen ("foo" , s )
322316
323317 ch := NewRoom ()
@@ -330,15 +324,15 @@ func TestRoomNames(t *testing.T) {
330324 }
331325
332326 expected = []byte (" * foo joined. (Connected: 1)" + message .Newline )
333- s . Read ( & actual )
327+ actual = <- s . Chan
334328 if ! reflect .DeepEqual (actual , expected ) {
335329 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
336330 }
337331
338332 ch .Send (message .ParseInput ("/names" , u ))
339333
340334 expected = []byte ("-> 1 connected: foo" + message .Newline )
341- s . Read ( & actual )
335+ actual = <- s . Chan
342336 if ! reflect .DeepEqual (actual , expected ) {
343337 t .Errorf ("Got: %q; Expected: %q" , actual , expected )
344338 }
0 commit comments