Skip to content

Commit

Permalink
fix int_range input
Browse files Browse the repository at this point in the history
  • Loading branch information
VladimirPal committed May 29, 2015
1 parent eed173e commit a67e571
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 11 deletions.
20 changes: 13 additions & 7 deletions flask_restful/inputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,15 +215,21 @@ def positive(value, argument='argument'):
return value


def int_range(low, high, value, argument='argument'):
class int_range(object):
""" Restrict input to an integer in a range (inclusive) """
value = _get_integer(value)
if value < low or value > high:
error = ('Invalid {arg}: {val}. {arg} must be within the range {lo} - {hi}'
.format(arg=argument, val=value, lo=low, hi=high))
raise ValueError(error)
def __init__(self, low, high, argument='argument'):
self.low = low
self.high = high
self.argument = argument

return value
def __call__(self, value):
value = _get_integer(value)
if value < self.low or value > self.high:
error = ('Invalid {arg}: {val}. {arg} must be within the range {lo} - {hi}'
.format(arg=self.argument, val=value, lo=self.low, hi=self.high))
raise ValueError(error)

return value


def boolean(value):
Expand Down
12 changes: 8 additions & 4 deletions tests/test_inputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,16 +199,20 @@ def test_positive_negative_input(self):
assert_raises(ValueError, lambda: inputs.positive(-1))

def test_int_range_good(self):
assert_equal(3, inputs.int_range(1, 5, 3, 'my_arg'))
int_range = inputs.int_range(1, 5)
assert_equal(3, int_range(3))

def test_int_range_inclusive(self):
assert_equal(5, inputs.int_range(1, 5, 5, 'my_arg'))
int_range = inputs.int_range(1, 5)
assert_equal(5, int_range(5))

def test_int_range_low(self):
assert_raises(ValueError, lambda: inputs.int_range(0, 5, -1, 'my_arg'))
int_range = inputs.int_range(0, 5)
assert_raises(ValueError, lambda: int_range(-1))

def test_int_range_high(self):
assert_raises(ValueError, lambda: inputs.int_range(0, 5, 6, 'my_arg'))
int_range = inputs.int_range(0, 5)
assert_raises(ValueError, lambda: int_range(6))


def test_isointerval():
Expand Down

0 comments on commit a67e571

Please sign in to comment.