public void Advance_should_move_index_to_given_position(int length, int expectedIndexValue) { // Arrange. IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object); // Act. reader.Advance(length); reader.Advance(length); // Assert. Assert.AreEqual(expectedIndexValue, reader.Index); }
public void DatagramReader_IndexBounds() { var bytes = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }; var reader = new DnsDatagramReader(new ArraySegment <byte>(bytes, 2, 4)); Assert.True(reader.DataAvailable); reader.Advance(4); Assert.False(reader.DataAvailable); Action act = () => reader.Advance(1); var ex = Assert.Throws <DnsResponseParseException>(act); Assert.Equal(4, ex.Index); Assert.Equal(1, ex.ReadLength); }
public void DatagramReader_LabelTest_DnsName_LengthOutOfBounds() { var data = ReferenceBitData.Concat(new byte[] { 192, 23 }); var reader = new DnsDatagramReader(new ArraySegment <byte>(data.ToArray())); reader.Advance(36); DnsString name = reader.ReadDnsName(); Assert.Equal("eeeee.dd.c.aa.com.", name.Value); }
public void ReadUInt16NetworkOrder_should_throw_IndexOutOfRangeException_when_index_exceeds_data_count() { // Arrange. ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery); IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object); reader.Advance(100); // Act. Assert.Throws <IndexOutOfRangeException>(() => reader.ReadUInt16NetworkOrder(sampleData), "Cannot read more data."); }
public void ReadIPAddress_should_throw_IndexOutOfRangeException_exception_when_less_than_4_bytes_are_present() { // Arrange. ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery); IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object); // advance the index to IP Address position + 1 to make it throw exception. reader.Advance(43); // Act => Assert. Assert.Throws <IndexOutOfRangeException>(() => reader.ReadIPAddress(sampleData), "Error while reading IPv4 address, expected 4 bytes. Index was outside the bounds of the array."); }
public void ReadUInt16NetworkOrder_should_return_AnswerCount_of_6_from_data_starting_at_Index_0() { // Arrange. ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery); IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object); reader.Advance(6); // Act. ushort answerCout = reader.ReadUInt16NetworkOrder(sampleData); // Assert. Assert.AreEqual(5, answerCout); }
public void ReadUInt32NetworkOrder_should_return_TTL_value_in_int32() { // Arrange. ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionAndAnswerQuery); IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object); // advance the index to Time To Live position. reader.Advance(37); // Act. uint timeToLive = reader.ReadUInt32NetworkOrder(sampleData); // Assert. Assert.AreEqual(2585, timeToLive); }
public void ReadIPAddress_should_return_ipAddress() { // Arrange. ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionAndAnswerQuery); IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object); // advance the index to IP Address position. reader.Advance(43); // Act. IPAddress ipAddress = reader.ReadIPAddress(sampleData); // Assert. Assert.AreEqual("40.76.4.15", ipAddress.ToString()); }
public void ReadQuestionQueryString_should_return_queryString_successfully() { // Arrange. const string query = "microsoft.com"; const string queryDot = query + "."; ArraySegment <byte> sampleData = GetSampleData(ResponseDataSampleFile.QuestionQuery); mockDnsString.Setup(m => m.FromResponseQueryString(queryDot)).Returns(new DnsString(query, queryDot)); IDnsDatagramReader reader = new DnsDatagramReader(mockDnsString.Object); // move the index to 12th byte where the query starts in the response data. reader.Advance(12); // Act. IDnsString dnsString = reader.ReadQuestionQueryString(sampleData); // Assert. Assert.AreEqual(dnsString.Original, query); Assert.AreEqual(dnsString.Value, queryDot); }