public void Equals_UseSameAndDifferentRanges_EqualOrNotEqualNoExceptions()
{
RangeHeaderValue range1 = new RangeHeaderValue(1, 2);
RangeHeaderValue range2 = new RangeHeaderValue(1, 2);
range2.Unit = "BYTES";
RangeHeaderValue range3 = new RangeHeaderValue(1, null);
RangeHeaderValue range4 = new RangeHeaderValue(null, 2);
RangeHeaderValue range5 = new RangeHeaderValue();
range5.Ranges.Add(new RangeItemHeaderValue(1, 2));
range5.Ranges.Add(new RangeItemHeaderValue(3, 4));
RangeHeaderValue range6 = new RangeHeaderValue();
range6.Ranges.Add(new RangeItemHeaderValue(3, 4)); // reverse order of range5
range6.Ranges.Add(new RangeItemHeaderValue(1, 2));
RangeHeaderValue range7 = new RangeHeaderValue(1, 2);
range7.Unit = "other";
Assert.False(range1.Equals(null), "bytes=1-2 vs. <null>");
Assert.True(range1.Equals(range2), "bytes=1-2 vs. BYTES=1-2");
Assert.False(range1.Equals(range3), "bytes=1-2 vs. bytes=1-");
Assert.False(range1.Equals(range4), "bytes=1-2 vs. bytes=-2");
Assert.False(range1.Equals(range5), "bytes=1-2 vs. bytes=1-2,3-4");
Assert.True(range5.Equals(range6), "bytes=1-2,3-4 vs. bytes=3-4,1-2");
Assert.False(range1.Equals(range7), "bytes=1-2 vs. other=1-2");
}