public async Task Deserialize_WithOneHeaderEntry_ReturnsHeaderWithOneEntryAsync() { // Arrange var testData = new byte[2881]; testData = TestUtils.AddHeaderEntry( data: testData, startIndex: 0, key: "TEST", value: 1, comment: "some test comment"); testData = TestUtils.AddContentToArray( data: testData, startIndex: 80, content: HeaderDeserializer.END_MARKER); var testStream = TestUtils.ByteArrayToStream(testData); var testee = new HeaderDeserializer(); // Act var result = await testee.DeserializeAsync(testStream); // Assert result.Should().NotBe(null); result.Entries.Should().HaveCount(1); result.Entries.First().Key.Should().Be("TEST"); result.Entries.First().Value.Should().Be(1); result.Entries.First().Comment.Should().Be("some test comment"); }
public void Deserilaize_WithMultiKeywordValueButMissingContinuation_ThrowsException() { // Arrange var testData = new byte[2881]; testData = TestUtils.AddHeaderEntry( data: testData, startIndex: 0, key: "TEST", value: "'Some test value &'", comment: "Test some very looong comment"); testData = TestUtils.AddHeaderEntry( data: testData, startIndex: 80, key: "TEST2", value: "'Spaning over 3 values'", comment: " continuation of some very long comment"); testData = TestUtils.AddContentToArray( data: testData, startIndex: 160, content: HeaderDeserializer.END_MARKER); var testStream = TestUtils.ByteArrayToStream(testData); var testee = new HeaderDeserializer(); // Act Func <Task> act = () => testee.DeserializeAsync(testStream); // Assert act.Should().Throw <InvalidDataException>(); }
public async Task Deserilaize_WithMultiKeywordComment_ReturnsConcattedValueAsync() { // Arrange var testData = new byte[2881]; testData = TestUtils.AddHeaderEntry( data: testData, startIndex: 0, key: "TEST", value: "'&'", comment: "Test some very looong comment"); testData = TestUtils.AddHeaderEntry( data: testData, startIndex: 80, key: "CONTINUE", value: "'&'", comment: " continuation of some very long comment"); testData = TestUtils.AddContentToArray( data: testData, startIndex: 160, content: HeaderDeserializer.END_MARKER); var testStream = TestUtils.ByteArrayToStream(testData); var testee = new HeaderDeserializer(); // Act var result = await testee.DeserializeAsync(testStream); // Assert result.Should().NotBeNull(); result.Entries.Should().HaveCount(1); result.Entries.First().Key.Should().Be("TEST"); result.Entries.First().Value.Should().Be(string.Empty); result.Entries.First().Comment.Should().Be("Test some very looong comment continuation of some very long comment"); }
public void Deserialize_WithByteStreamOfValidLengthButNoEndMark_ThrowsException() { // Arrange var testData = new byte[2881]; var testStream = TestUtils.ByteArrayToStream(testData); var testee = new HeaderDeserializer(); // Act Func <Task> act = () => testee.DeserializeAsync(testStream); // Assert act.Should().Throw <InvalidDataException>(); }
public void Deserialize_WithEmptyByteStream_ThrowsException() { // Arrange var testData = Array.Empty <byte>(); var testStream = TestUtils.ByteArrayToStream(testData); var testee = new HeaderDeserializer(); // Act Func <Task> act = () => testee.DeserializeAsync(testStream); // Assert act.Should().Throw <InvalidDataException>(); }
public async Task Deserialize_WithByteStreamOfValidLengthAndEndMarkAtBeginning_ReturnsEmptyHeaderAsync() { // Arrange var testData = new byte[2881]; testData = TestUtils.AddContentToArray( data: testData, startIndex: 0, content: HeaderDeserializer.END_MARKER); var testStream = TestUtils.ByteArrayToStream(testData); var testee = new HeaderDeserializer(); // Act var result = await testee.DeserializeAsync(testStream); // Assert result.Should().NotBeNull(); result.Entries.Should().BeEmpty(); }