go test -run Test_Ctx_Range
(t *testing.T)
| 5111 | |
| 5112 | // go test -run Test_Ctx_Range |
| 5113 | func Test_Ctx_Range(t *testing.T) { |
| 5114 | t.Parallel() |
| 5115 | app := New() |
| 5116 | c := app.AcquireCtx(&fasthttp.RequestCtx{}) |
| 5117 | |
| 5118 | testRange := func(header string, ranges ...RangeSet) { |
| 5119 | c.Request().Header.Set(HeaderRange, header) |
| 5120 | result, err := c.Range(1000) |
| 5121 | if len(ranges) == 0 { |
| 5122 | require.Error(t, err) |
| 5123 | } else { |
| 5124 | require.Equal(t, "bytes", result.Type) |
| 5125 | require.NoError(t, err) |
| 5126 | } |
| 5127 | require.Len(t, ranges, len(result.Ranges)) |
| 5128 | for i := range ranges { |
| 5129 | require.Equal(t, ranges[i], result.Ranges[i]) |
| 5130 | } |
| 5131 | } |
| 5132 | |
| 5133 | testRange("bytes=500") |
| 5134 | testRange("bytes=") |
| 5135 | testRange("bytes=500=") |
| 5136 | testRange("bytes=500-300") |
| 5137 | testRange("bytes=a-700", RangeSet{Start: 300, End: 999}) |
| 5138 | testRange("bytes=500-b", RangeSet{Start: 500, End: 999}) |
| 5139 | testRange("bytes=500-1000", RangeSet{Start: 500, End: 999}) |
| 5140 | testRange("bytes=500-700", RangeSet{Start: 500, End: 700}) |
| 5141 | testRange("bytes=0-0,2-1000", RangeSet{Start: 0, End: 0}, RangeSet{Start: 2, End: 999}) |
| 5142 | testRange("bytes=0-99,450-549,-100", RangeSet{Start: 0, End: 99}, RangeSet{Start: 450, End: 549}, RangeSet{Start: 900, End: 999}) |
| 5143 | testRange("bytes=500-700,601-999", RangeSet{Start: 500, End: 700}, RangeSet{Start: 601, End: 999}) |
| 5144 | testRange("bytes= 0-1", RangeSet{Start: 0, End: 1}) |
| 5145 | testRange("seconds=0-1") |
| 5146 | } |
| 5147 | |
| 5148 | func Test_Ctx_Range_LargeFile(t *testing.T) { |
| 5149 | t.Parallel() |