public void Setup()
      {
         factory = A.Fake<IConnectionFactory>();
         fakeHttp = A.Fake<ISimpleHttpGetRequest>();
         fakeWebSocket = A.Fake<IWebSocket>();
         heartBeatSignaler = A.Fake<IHeartBeatSignaler>();

         A.CallTo(() => factory.CreateHttpRequest(A<string>._)).Returns(fakeHttp);
         A.CallTo(() => fakeHttp.Execute()).ReturnsLazily(() => handshakeResponse);
         A.CallTo(() => factory.CreateWebSocket(A<string>._)).Returns(fakeWebSocket);
         A.CallTo(() => fakeWebSocket.Connected).ReturnsLazily(() => isConnected);

         A.CallTo(() => fakeWebSocket.Open()).Invokes(() =>
         {
            isConnected = true;
            fakeWebSocket.Opened += Raise.With(fakeWebSocket, EventArgs.Empty).Now;
         });

         A.CallTo(() => fakeWebSocket.Close()).Invokes(() =>
         {
            isConnected = false;
            fakeWebSocket.Closed += Raise.With(fakeWebSocket, EventArgs.Empty).Now;
         });

         io = new SocketIOClient(factory, heartBeatSignaler);

         socket = io.Connect("http://localhost:3000");
      }
 public void TearDown()
 {
    isConnected = false;
    factory = null;
    fakeHttp = null;
    fakeWebSocket = null;
    socket = null;
 }
      public Namespace Of(string name)
      {
         if (name == null || string.IsNullOrEmpty(name.Trim()))
         {
            name = DefaultNamespace;
         }

         if (m_nameSpaces.ContainsKey(name))
         {
            return m_nameSpaces[name];
         }

         m_nameSpaces[name] = new Namespace(name, this);

         if (name != DefaultNamespace)
         {
            m_nameSpaces[name].Connect();
         }

         return m_nameSpaces[name];
      }