public void TestWithChannelListener() { var mockConnectionFactory = new Mock <ConnectionFactory>(); var mockConnection = new Mock <IConnection>(); var mockChannel = new Mock <IModel>(); mockConnectionFactory.Setup(c => c.CreateConnection()).Returns(mockConnection.Object); mockConnection.Setup(m => m.IsOpen).Returns(true); mockChannel.Setup(m => m.IsOpen).Returns(true); mockConnection.Setup(m => m.CreateModel()).Returns(mockChannel.Object); var called = new AtomicInteger(0); var connectionFactory = this.CreateConnectionFactory(mockConnectionFactory.Object); var mockConnectionListener = new Mock <IConnectionListener>(); mockConnectionListener.Setup(m => m.OnCreate(It.IsAny <Rabbit.Connection.IConnection>())).Callback((Rabbit.Connection.IConnection conn) => called.IncrementValueAndReturn()); mockConnectionListener.Setup(m => m.OnClose(It.IsAny <Rabbit.Connection.IConnection>())).Callback((Rabbit.Connection.IConnection conn) => called.DecrementValueAndReturn()); connectionFactory.ConnectionListeners = new List <IConnectionListener> { mockConnectionListener.Object }; ((CachingConnectionFactory)connectionFactory).ChannelCacheSize = 1; var con = connectionFactory.CreateConnection(); var channel = con.CreateChannel(false); Assert.AreEqual(1, called.Value); channel.Close(); con.Close(); mockConnection.Verify(c => c.Close(), Times.Never()); connectionFactory.CreateConnection(); con.CreateChannel(false); Assert.AreEqual(1, called.Value); connectionFactory.Dispose(); mockConnection.Verify(c => c.Close(), Times.AtLeastOnce()); mockConnectionFactory.Verify(c => c.CreateConnection(), Times.Exactly(1)); }
public void TestWithListenerRegisteredAfterOpen() { var mockConnectionFactory = new Mock <ConnectionFactory>(); var mockConnection = new Mock <IConnection>(); mockConnectionFactory.Setup(factory => factory.CreateConnection()).Returns(mockConnection.Object); var called = new AtomicInteger(0); var connectionFactory = this.CreateConnectionFactory(mockConnectionFactory.Object); var con = connectionFactory.CreateConnection(); Assert.AreEqual(0, called.Value); var connectionListeners = new List <IConnectionListener>(); var mockConnectionListener = new Mock <IConnectionListener>(); mockConnectionListener.Setup(listener => listener.OnCreate(It.IsAny <Rabbit.Connection.IConnection>())).Callback(() => called.IncrementValueAndReturn()); mockConnectionListener.Setup(listener => listener.OnClose(It.IsAny <Rabbit.Connection.IConnection>())).Callback(() => called.DecrementValueAndReturn()); connectionListeners.Add(mockConnectionListener.Object); connectionFactory.ConnectionListeners = connectionListeners; Assert.AreEqual(1, called.Value); con.Close(); Assert.AreEqual(1, called.Value); mockConnection.Verify(c => c.Close(), Times.Never()); connectionFactory.CreateConnection(); Assert.AreEqual(1, called.Value); connectionFactory.Dispose(); Assert.AreEqual(0, called.Value); mockConnection.Verify(c => c.Close(), Times.AtLeastOnce()); mockConnectionFactory.Verify(c => c.CreateConnection(), Times.Exactly(1)); }