Added badly constructed range handling

This commit is contained in:
Konsta Vesterinen
2013-03-26 13:24:00 +02:00
parent 98de37354b
commit d17b916c09
3 changed files with 18 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ from .types import (
PhoneNumber,
PhoneNumberType,
NumberRange,
NumberRangeException,
NumberRangeRawType,
NumberRangeType
)
@@ -20,6 +21,7 @@ __all__ = (
InstrumentedList,
Merger,
NumberRange,
NumberRangeException,
NumberRangeRawType,
NumberRangeType,
PhoneNumber,

View File

@@ -90,8 +90,18 @@ class NumberRangeType(types.TypeDecorator):
return NumberRange.from_normalized_str(value)
class NumberRangeException(Exception):
def __init__(self, min_value, max_value):
self.message = 'Min value %d is bigger than max value %d.' % (
min_value,
max_value
)
class NumberRange(object):
def __init__(self, min_value, max_value):
if min_value > max_value:
raise NumberRangeException(min_value, max_value)
self.min_value = min_value
self.max_value = max_value

View File

@@ -1,5 +1,6 @@
import sqlalchemy as sa
from sqlalchemy_utils import NumberRangeType, NumberRange
from pytest import raises
from sqlalchemy_utils import NumberRangeType, NumberRange, NumberRangeException
from tests import DatabaseTestCase
@@ -34,3 +35,7 @@ class TestNumberRange(object):
def test_str_representation(self):
assert str(NumberRange(1, 3)) == '[1, 3]'
def test_raises_exception_for_badly_constructed_range(self):
with raises(NumberRangeException):
NumberRange(3, 2)