| 23 | ) |
| 24 | |
| 25 | func TestSetHeader(t *testing.T) { |
| 26 | testCases := []struct { |
| 27 | start int64 |
| 28 | end int64 |
| 29 | errVal error |
| 30 | expected string |
| 31 | }{ |
| 32 | {0, 10, nil, "bytes=0-10"}, |
| 33 | {1, 10, nil, "bytes=1-10"}, |
| 34 | {5, 0, nil, "bytes=5-"}, |
| 35 | {0, -5, nil, "bytes=-5"}, |
| 36 | {0, 0, nil, "bytes=0-0"}, |
| 37 | { |
| 38 | 11, 10, fmt.Errorf("Invalid range specified: start=11 end=10"), |
| 39 | "", |
| 40 | }, |
| 41 | {-1, 10, fmt.Errorf("Invalid range specified: start=-1 end=10"), ""}, |
| 42 | {-1, 0, fmt.Errorf("Invalid range specified: start=-1 end=0"), ""}, |
| 43 | {1, -5, fmt.Errorf("Invalid range specified: start=1 end=-5"), ""}, |
| 44 | } |
| 45 | for i, testCase := range testCases { |
| 46 | opts := GetObjectOptions{} |
| 47 | err := opts.SetRange(testCase.start, testCase.end) |
| 48 | if err == nil && testCase.errVal != nil { |
| 49 | t.Errorf("Test %d: Expected to fail with '%v' but it passed", |
| 50 | i+1, testCase.errVal) |
| 51 | } else if err != nil && testCase.errVal.Error() != err.Error() { |
| 52 | t.Errorf("Test %d: Expected error '%v' but got error '%v'", |
| 53 | i+1, testCase.errVal, err) |
| 54 | } else if err == nil && opts.headers["Range"] != testCase.expected { |
| 55 | t.Errorf("Test %d: Expected range header '%s', but got '%s'", |
| 56 | i+1, testCase.expected, opts.headers["Range"]) |
| 57 | } |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | func TestCustomQueryParameters(t *testing.T) { |
| 62 | var ( |