public void PublishMustCallProduceWithSamePartitionWhenDataIsSame() { MockMessageProducer producer = new MockMessageProducer(); new Broker(producer).Publish("Test"); new Broker(producer).Publish("Test"); Assert.Equal(producer.Messages[0].Item1, producer.Messages[1].Item1); }
public void PublishMustCallProduceWithDifferentPartitionWhenDataIsNotSame() { MockMessageProducer producer = new MockMessageProducer(); new Broker(producer).Publish("TestOne"); new Broker(producer).Publish("TestTwo"); Assert.NotEqual(producer.Messages[0].Item1, producer.Messages[1].Item1); }
public void PublishMustCallProduceWithDifferentPartitionWhenDataIsNotSameRegardlessOfHashCode() { MockMessageProducer producer = new MockMessageProducer(); new Broker(producer).Publish(new Message("TestOne")); new Broker(producer).Publish(new Message("TestTwo")); Assert.Throws <NotEqualException>(() => Assert.NotEqual(producer.Messages[0].Item1, producer.Messages[1].Item1)); }
public void PublishMustCallProduceWithDifferentPartitionWhenDataIsNotSameRegardlessOfHashCode() { MockMessageProducer producer = new MockMessageProducer(); new Broker(producer).Publish(new Message("TestOne")); new Broker(producer).Publish(new Message("TestTwo")); Assert.Throws <NotEqualException>(() => Assert.NotEqual(producer.Messages[0].Item1, producer.Messages[1].Item1)); /* * Note how easy it was to release improved/fixed behavior in Broker.GetPartition due to OCP design. * Broker2 works for all types of T since its GetPartition behavior does not depend on GetHashCode. */ Assert.NotEqual(new Message("TestOne").Value, new Message("TestTwo").Value); new Broker2(producer).Publish(new Message("TestOne")); new Broker2(producer).Publish(new Message("TestTwo")); Assert.NotEqual(producer.Messages[2].Item1, producer.Messages[3].Item1); }