public static async Task TestSendBehavior(string expectedVerb, RetrievalCommand command) { Assert.AreEqual(expectedVerb, command.Verb); var socket = new MockSocket(); await command.SendRequest(socket); using (var stream = socket.GetSentData()) { var line = stream.ReadLine(); Assert.AreEqual(expectedVerb + " " + command.Key, line); Assert.AreEqual(stream.Position, stream.Length); } }
public static async Task TestSendBehavior(string expectedVerb, ArithmeticalCommand command) { var mockSocket = new MockSocket(); await command.SendRequest(mockSocket); using (var stream = mockSocket.GetSentData()) { // validate the command line var commandLine = stream.ReadLine(); Assert.IsNotNull(commandLine); var parts = commandLine.Split(' '); Assert.AreEqual(3, parts.Length); Assert.AreEqual(command.Verb, parts[0]); Assert.AreEqual(command.Key, parts[1]); Assert.AreEqual(command.Value.ToString(), parts[2]); Assert.AreEqual(stream.Length, stream.Position); } }
public static async Task TestSendBehavior <T>(string expectedVerb, StorageCommand <T> command) { var mockSocket = new MockSocket(); await command.SendRequest(mockSocket); using (var stream = mockSocket.GetSentData()) { // validate the command line var commandLine = stream.ReadLine(); Assert.IsNotNull(commandLine); var parts = commandLine.Split(' '); Assert.AreEqual(5, parts.Length); Assert.AreEqual(command.Verb, parts[0]); Assert.AreEqual(command.Key, parts[1]); if (command.Options == null) { Assert.AreEqual("0", parts[2]); Assert.AreEqual("0", parts[3]); } else { Assert.AreEqual(command.Options.Flags.ToString(), parts[2]); var expectedExpires = command.Options.ExpirationTime.HasValue ? ((uint)(command.Options.ExpirationTime.Value.TotalSeconds)).ToString() : "0"; Assert.AreEqual(expectedExpires, parts[3]); } Assert.AreEqual(command.Data.Count.ToString(), parts[4]); // validate the data block var block = new byte[command.Data.Count]; var read = stream.Read(block, 0, block.Length); Assert.AreEqual(block.Length, read); var expected = new byte[command.Data.Count]; Buffer.BlockCopy(command.Data.Array, command.Data.Offset, expected, 0, command.Data.Count); CollectionAssert.AreEqual(expected, block); // read the last endline Assert.AreEqual('\r', stream.ReadByte()); Assert.AreEqual('\n', stream.ReadByte()); Assert.AreEqual(-1, stream.ReadByte()); } }