File: test_byterange.py

package info (click to toggle)
python-webob 1%3A1.6.2-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,200 kB
  • ctags: 2,604
  • sloc: python: 14,014; makefile: 169
file content (102 lines) | stat: -rw-r--r-- 3,521 bytes parent folder | download | duplicates (3)
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
from webob.byterange import Range
from webob.byterange import ContentRange
from webob.byterange import _is_content_range_valid

from nose.tools import assert_true, assert_false, eq_, assert_raises

# 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)
    eq_(range.content_range(None), None)
    assert isinstance(range.content_range(1), ContentRange)
    eq_(tuple(range.content_range(1)), (0,1,1))
    eq_(tuple(range.content_range(200)), (0,100,200))

def test_range_for_length_end_is_none():
    # End is None
    range = Range(0, None)
    eq_(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)
    eq_(range.range_for_length(100), (95,100))

def test_range_start_none():
    # Start is None
    range = Range(None, 99)
    eq_(range.range_for_length(100), None)

def test_range_str_end_none():
    range = Range(0, None)
    eq_(str(range), 'bytes=0-')

def test_range_str_end_none_negative_start():
    range = Range(-5, None)
    eq_(str(range), 'bytes=-5')

def test_range_str_1():
    range = Range(0, 100)
    eq_(str(range), 'bytes=0-99')

def test_range_repr():
    range = Range(0, 99)
    assert_true(range.__repr__(), '<Range bytes 0-98>')


# ContentRange class

def test_contentrange_bad_input():
    assert_raises(ValueError, ContentRange, None, 99, None)

def test_contentrange_repr():
    contentrange = ContentRange(0, 99, 100)
    assert_true(repr(contentrange), '<ContentRange bytes 0-98/100>')

def test_contentrange_str():
    contentrange = ContentRange(0, 99, None)
    eq_(str(contentrange), 'bytes 0-98/*')
    contentrange = ContentRange(None, None, 100)
    eq_(str(contentrange), 'bytes */100')

def test_contentrange_iter():
    contentrange = ContentRange(0, 99, 100)
    assert_true(type(contentrange.__iter__()), iter)
    assert_true(ContentRange.parse('bytes 0-99/100').__class__, ContentRange)
    eq_(ContentRange.parse(None), None)
    eq_(ContentRange.parse('0-99 100'), None)
    eq_(ContentRange.parse('bytes 0-99 100'), None)
    eq_(ContentRange.parse('bytes 0-99/xxx'), None)
    eq_(ContentRange.parse('bytes 0 99/100'), None)
    eq_(ContentRange.parse('bytes */100').__class__, ContentRange)
    eq_(ContentRange.parse('bytes A-99/100'), None)
    eq_(ContentRange.parse('bytes 0-B/100'), None)
    eq_(ContentRange.parse('bytes 99-0/100'), None)
    eq_(ContentRange.parse('bytes 0 99/*'), 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)