github.com/minio/minio-go/v6@v6.0.57/get-options_test.go (about) 1 /* 2 * MinIO Go Library for Amazon S3 Compatible Cloud Storage 3 * Copyright 2017 MinIO, Inc. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package minio 19 20 import ( 21 "fmt" 22 "testing" 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 {11, 10, fmt.Errorf("Invalid range specified: start=11 end=10"), 38 ""}, 39 {-1, 10, fmt.Errorf("Invalid range specified: start=-1 end=10"), ""}, 40 {-1, 0, fmt.Errorf("Invalid range specified: start=-1 end=0"), ""}, 41 {1, -5, fmt.Errorf("Invalid range specified: start=1 end=-5"), ""}, 42 } 43 for i, testCase := range testCases { 44 opts := GetObjectOptions{} 45 err := opts.SetRange(testCase.start, testCase.end) 46 if err == nil && testCase.errVal != nil { 47 t.Errorf("Test %d: Expected to fail with '%v' but it passed", 48 i+1, testCase.errVal) 49 } else if err != nil && testCase.errVal.Error() != err.Error() { 50 t.Errorf("Test %d: Expected error '%v' but got error '%v'", 51 i+1, testCase.errVal, err) 52 } else if err == nil && opts.headers["Range"] != testCase.expected { 53 t.Errorf("Test %d: Expected range header '%s', but got '%s'", 54 i+1, testCase.expected, opts.headers["Range"]) 55 } 56 } 57 }