def test_connect_cb_when_fail_and_not_immediateraise(self):
    sock = EventSocket()
    mock( sock, '_sock' )
    mock( sock, '_connect_event' )
    
    expect( sock._sock.connect_ex ).args( ('.com', 1234) ).returns( errno.ECONNREFUSED )
    expect( sock._connect_event.delete )
    expect( sock._handle_error ).args( socket.error )

    sock._connect_cb( time.time(), ('.com',1234) )
  def test_connect_cb_when_ealready_and_timeout(self):
    sock = EventSocket()
    mock( sock, '_sock' )
    mock( sock, '_connect_event' ) # assert delete() not called

    timeout_at = time.time()-3
    expect( sock._sock.connect_ex ).args( ('.com', 1234) ).returns( errno.EALREADY )
    expect( sock.close )

    sock._connect_cb( timeout_at, ('.com',1234) )
  def test_connect_cb_when_einprogress_and_notimeout_and_no_pending_connect(self):
    sock = EventSocket()
    mock( sock, '_sock' )
    
    timeout_at = time.time()+3
    expect( sock._sock.connect_ex ).args( ('.com', 1234) ).returns( errno.EINPROGRESS )
    expect( eventsocket.event.timeout ).args( 0.1, sock._connect_cb, timeout_at, ('.com', 1234) ).returns( 'connectev' )

    sock._connect_cb( timeout_at, ('.com',1234) )
    assert_equals( 'connectev', sock._connect_event )
 def test_connect_cb_when_no_err_and_pending_connect_event(self):
   sock = EventSocket()
   mock( sock, '_sock' )
   mock( sock, '_connect_event' )
   expect( sock._sock.connect_ex ).args( ('.com', 1234) )
   expect( sock._sock.getpeername ).returns( ('.com', 1234) )
   expect( eventsocket.event.read ).any_args()
   expect( eventsocket.event.write ).any_args()
   expect( sock._connect_event.delete )
   
   sock._connect_cb( 3.14, ('.com',1234) )
   assert_equals( None, sock._connect_event )
 def test_connect_cb_when_no_err(self):
   sock = EventSocket()
   mock( sock, '_sock' )
   expect( sock._sock.connect_ex ).args( ('.com', 1234) )
   expect( sock._sock.getpeername ).returns( ('.com', 1234) )
   expect( eventsocket.event.read ).args( sock._sock, sock._protected_cb, sock._read_cb ).returns( 'readev' )
   expect( eventsocket.event.write ).args( sock._sock, sock._protected_cb, sock._write_cb ).returns( 'writeev' )
   
   sock._connect_cb( 3.14, ('.com',1234) )
   assert_equals( '.com:1234', sock._peername )
   assert_equals( 'readev', sock._read_event )
   assert_equals( 'writeev', sock._write_event )
   assert_equals( None, sock._connect_event )