Skip to content

Instantly share code, notes, and snippets.

@AlexArchive
Created November 7, 2014 19:06
Show Gist options
  • Save AlexArchive/8c0954d81cb5465a952a to your computer and use it in GitHub Desktop.
Save AlexArchive/8c0954d81cb5465a952a to your computer and use it in GitHub Desktop.
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