aboutsummaryrefslogtreecommitdiff
path: root/largeobject_test.go
blob: fe781ab02f46831e92e8292ffa02a9d2d33c6cc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/******************************************************************************
*
*  Copyright 2018 Stefan Majewsky <majewsky@gmx.net>
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*
******************************************************************************/

package schwift

import "testing"

func TestParseHTTPRange(t *testing.T) {
	testCases := []struct {
		input  string
		ok     bool
		offset int64
		length uint64
	}{
		//all the testcases from RFC 7233, section 3.1
		{"0-499", true, 0, 500},
		{"500-999", true, 500, 500},
		{"-500", true, -1, 500},
		{"9500-", true, 9500, 0},
		{"0-0", true, 0, 1},
		{"-1", true, -1, 1},
		//and then some more
		{"0-", true, 0, 0},
		{"-", true, 0, 0},
		//some error cases for 100% coverage
		{"no dash", false, 0, 0},
		{"what-the-heck", false, 0, 0},
		{"-X", false, 0, 0},
		{"X-X", false, 0, 0},
		{"X-", false, 0, 0},
		{"999-500", false, 0, 0},
	}

	for _, tc := range testCases {
		o, l, ok := parseHTTPRange(tc.input)

		if tc.ok && !ok {
			t.Errorf("expected %q to parse, but did not", tc.input)
		}
		if !tc.ok && ok {
			t.Errorf("expected %q to fail, but parsed into (%d, %d)",
				tc.input, o, l)
		}
		if o != tc.offset || l != tc.length {
			t.Errorf("expected %q to parse as (%d, %d), but (%d, %d)",
				tc.input, tc.offset, tc.length, o, l)
		}
	}
}