Created
November 7, 2014 19:06
-
-
Save AlexArchive/8c0954d81cb5465a952a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Raven.UnitTest.Support; | |
using System; | |
using System.Linq; | |
using Xunit; | |
namespace Raven.UnitTest | |
{ | |
public class MessageBuilderTest | |
{ | |
private readonly MessageBuilder sut; | |
private readonly byte[] message; | |
public MessageBuilderTest() | |
{ | |
sut = new MessageBuilder(); | |
message = new MessageSerializer().Serialize("Serialize Me!"); | |
} | |
[Fact] | |
public void Append_WholeMessage_RaisesEvent() | |
{ | |
// Exercise | |
Action exercise = () => sut.Append(message, message.Length); | |
// Verify | |
EventMonitor.AssertRaised(exercise, handler => sut.MessageReceived += handler); | |
} | |
[Fact] | |
public void Append_HeaderThenBody_RaisesEvent() | |
{ | |
// Setup | |
const int HeaderSize = 4; | |
byte[] header = message.Take(HeaderSize).ToArray(); | |
byte[] body = message.Skip(HeaderSize).ToArray(); | |
// Exercise | |
Action exercise = () => | |
{ | |
sut.Append(header, header.Length); | |
sut.Append(body, body.Length); | |
}; | |
// Verify | |
EventMonitor.AssertRaised(exercise, handler => sut.MessageReceived += handler); | |
} | |
[Fact] | |
public void Append_PartialHeaderThenRest_RaisesEvent() | |
{ | |
// Setup | |
const int PartialHeaderSize = 2; | |
byte[] partialHeader = message.Take(PartialHeaderSize).ToArray(); | |
byte[] rest = message.Skip(PartialHeaderSize).ToArray(); | |
// Exercise | |
Action exercise = () => | |
{ | |
sut.Append(partialHeader, partialHeader.Length); | |
sut.Append(rest, rest.Length); | |
}; | |
// Verify | |
EventMonitor.AssertRaised(exercise, handler => sut.MessageReceived += handler); | |
} | |
[Fact] | |
public void Append_FragmentedMessage_RaisesEvent() | |
{ | |
// Setup | |
byte[] partialHeader = message.Take(2).ToArray(); | |
byte[] partialBody = message.Skip(2).Take(2).ToArray(); | |
byte[] rest = message.Skip(4).ToArray(); | |
// Exercise | |
Action exercise = () => | |
{ | |
sut.Append(partialHeader, partialHeader.Length); | |
sut.Append(partialBody, partialBody.Length); | |
sut.Append(rest, rest.Length); | |
}; | |
// Verify | |
EventMonitor.AssertRaised(exercise, handler => sut.MessageReceived += handler); | |
} | |
[Fact] | |
public void Append_TwoWholeMessages_RaisesEventTwice() | |
{ | |
// Exercise | |
Action exercise = () => sut.Append(message, message.Length); | |
Action exercise1 = () => sut.Append(message, message.Length); | |
// Verify | |
EventMonitor.AssertRaised(exercise, handler => sut.MessageReceived += handler); | |
EventMonitor.AssertRaised(exercise1, handler => sut.MessageReceived += handler); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment