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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
from collections.abc import Iterable
import pytest
from webob.byterange import ContentRange, Range, _is_content_range_valid
# Range class
def test_not_satisfiable():
range = Range.parse("bytes=-100")
assert range.range_for_length(50) is None
range = Range.parse("bytes=100-")
assert range.range_for_length(50) is None
def test_range_parse():
assert isinstance(Range.parse("bytes=0-99"), Range)
assert isinstance(Range.parse("BYTES=0-99"), Range)
assert isinstance(Range.parse("bytes = 0-99"), Range)
assert isinstance(Range.parse("bytes=0 - 102"), Range)
assert Range.parse("bytes=10-5") is None
assert Range.parse("bytes 5-10") is None
assert Range.parse("words=10-5") is None
def test_range_content_range_length_none():
range = Range(0, 100)
assert range.content_range(None) is None
assert isinstance(range.content_range(1), ContentRange)
assert tuple(range.content_range(1)) == (0, 1, 1)
assert tuple(range.content_range(200)) == (0, 100, 200)
def test_range_for_length_end_is_none():
# End is None
range = Range(0, None)
assert range.range_for_length(100) == (0, 100)
def test_range_for_length_end_is_none_negative_start():
# End is None and start is negative
range = Range(-5, None)
assert range.range_for_length(100) == (95, 100)
def test_range_start_none():
# Start is None
range = Range(None, 99)
assert range.range_for_length(100) is None
def test_range_str_end_none():
range = Range(0, None)
assert str(range) == "bytes=0-"
def test_range_str_end_none_negative_start():
range = Range(-5, None)
assert str(range) == "bytes=-5"
def test_range_str_1():
range = Range(0, 100)
assert str(range) == "bytes=0-99"
def test_range_repr():
range = Range(0, 99)
assert repr(range) == "<Range bytes 0-99>"
# ContentRange class
def test_contentrange_bad_input():
with pytest.raises(ValueError):
ContentRange(None, 99, None)
def test_contentrange_repr():
contentrange = ContentRange(0, 99, 100)
assert repr(contentrange) == "<ContentRange bytes 0-98/100>"
def test_contentrange_str():
contentrange = ContentRange(0, 99, None)
assert str(contentrange) == "bytes 0-98/*"
contentrange = ContentRange(None, None, 100)
assert str(contentrange) == "bytes */100"
def test_contentrange_iter():
contentrange = ContentRange(0, 99, 100)
assert isinstance(contentrange, Iterable)
assert ContentRange.parse("bytes 0-99/100").__class__ == ContentRange
assert ContentRange.parse(None) is None
assert ContentRange.parse("0-99 100") is None
assert ContentRange.parse("bytes 0-99 100") is None
assert ContentRange.parse("bytes 0-99/xxx") is None
assert ContentRange.parse("bytes 0 99/100") is None
assert ContentRange.parse("bytes */100").__class__ == ContentRange
assert ContentRange.parse("bytes A-99/100") is None
assert ContentRange.parse("bytes 0-B/100") is None
assert ContentRange.parse("bytes 99-0/100") is None
assert ContentRange.parse("bytes 0 99/*") is None
# _is_content_range_valid function
def test_is_content_range_valid():
assert not _is_content_range_valid(None, 99, 90)
assert not _is_content_range_valid(99, None, 90)
assert _is_content_range_valid(None, None, 90)
assert not _is_content_range_valid(None, 99, 90)
assert _is_content_range_valid(0, 99, None)
assert not _is_content_range_valid(0, 99, 90, response=True)
assert _is_content_range_valid(0, 99, 90)
|