public void Equals_UseSameAndDifferentRanges_EqualOrNotEqualNoExceptions()
    {
        var range1 = new RangeHeaderValue(1, 2);
        var range2 = new RangeHeaderValue(1, 2);

        range2.Unit = "BYTES";
        var range3 = new RangeHeaderValue(1, null);
        var range4 = new RangeHeaderValue(null, 2);
        var range5 = new RangeHeaderValue();

        range5.Ranges.Add(new RangeItemHeaderValue(1, 2));
        range5.Ranges.Add(new RangeItemHeaderValue(3, 4));
        var range6 = new RangeHeaderValue();

        range6.Ranges.Add(new RangeItemHeaderValue(3, 4)); // reverse order of range5
        range6.Ranges.Add(new RangeItemHeaderValue(1, 2));
        var 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");
    }