@@ -178,9 +178,10 @@ def test_readers_should_return_empty_array_when_session_is_not_open
178
178
def test_readers_should_return_all_listeners_when_session_is_open
179
179
srv = server ( 'host' )
180
180
session = expect_connection_to ( srv )
181
- session . expects ( :listeners ) . returns ( 1 => 2 , 3 => 4 , 5 => 6 , 7 => 8 )
181
+ io1 , io2 , io3 , io4 = Reader . new , Reader . new , Reader . new , Reader . new
182
+ session . expects ( :listeners ) . returns ( io1 => 2 , io2 => 4 , io3 => 6 , io4 => 8 )
182
183
srv . session ( true )
183
- assert_equal [ 1 , 3 , 5 , 7 ] , srv . readers . sort
184
+ assert_equal [ io1 , io2 , io3 , io4 ] , srv . readers . sort
184
185
end
185
186
186
187
def test_writers_should_return_empty_array_when_session_is_not_open
@@ -190,8 +191,8 @@ def test_writers_should_return_empty_array_when_session_is_not_open
190
191
def test_writers_should_return_all_listeners_that_are_pending_writes_when_session_is_open
191
192
srv = server ( 'host' )
192
193
session = expect_connection_to ( srv )
193
- listeners = { writer ( :ready ) => 1 , writer ( :reader ) => 2 ,
194
- writer ( :reader ) => 3 , writer ( :idle ) => 4 , writer ( :ready ) => 5 }
194
+ listeners = { Reader . new ( true ) => 1 , MockIO . new => 2 ,
195
+ MockIO . new => 3 , Reader . new => 4 , Reader . new ( true ) => 5 }
195
196
session . expects ( :listeners ) . returns ( listeners )
196
197
srv . session ( true )
197
198
assert_equal 2 , srv . writers . length
@@ -212,6 +213,37 @@ def test_postprocess_should_call_session_postprocess_with_ios_belonging_to_sessi
212
213
213
214
private
214
215
216
+ class MockIO
217
+ include Comparable
218
+
219
+ @@identifier = 0
220
+
221
+ attr_reader :id
222
+
223
+ def initialize
224
+ @id = ( @@identifier += 1 )
225
+ end
226
+
227
+ def <=>( io )
228
+ @id <=> io . id
229
+ end
230
+
231
+ def closed?
232
+ false
233
+ end
234
+ end
235
+
236
+ class Reader < MockIO
237
+ def initialize ( ready = false )
238
+ super ( )
239
+ @ready = ready
240
+ end
241
+
242
+ def pending_write?
243
+ @ready
244
+ end
245
+ end
246
+
215
247
def server ( host , options = { } )
216
248
Net ::SSH ::Multi ::Server . new ( @master , host , options )
217
249
end
@@ -221,15 +253,4 @@ def expect_connection_to(server)
221
253
@master . expects ( :next_session ) . with ( server ) . returns ( session )
222
254
return session
223
255
end
224
-
225
- def writer ( mode )
226
- case mode
227
- when :ready then
228
- stub ( 'io' , :pending_write? => true )
229
- when :idle then
230
- stub ( 'io' , :pending_write? => false )
231
- else
232
- stub ( 'io' )
233
- end
234
- end
235
256
end
0 commit comments