Skip to content

Commit

Permalink
Added Number validation.
Browse files Browse the repository at this point in the history
Added test cases for Number validations

1) test cases for while scale is None,  precision is None,  Both are None
2) Beaking down of Invalid conditions

1) Used Decimal and string conversions
2) __get_precision_scale as private

Modification in comment

Made some changes in test cases

Fixed class description

1) Moved Decimal import up
2) Added InvalidOperation exception instead of generic
3) Made __get_precision_scale to internal as _get_precision_scale
4) Added assert for doctests
5) Added case with only invalid precision and no scale

Added assert for doctests

1) Added Yeild flag(decimal/string)
2) Fixed tests naming convention

Fixed exception

Fixed test case naming
  • Loading branch information
nareshnootoo committed Sep 29, 2016
1 parent 5b1624c commit a51b20c
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 16 deletions.
22 changes: 7 additions & 15 deletions voluptuous/tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -583,35 +583,35 @@ def test_number_validation_with_invalid_precision_invalid_scale():
assert False, "Did not raise Invalid for String"


def test_number_validation_with_valid_precision_scale():
def test_number_validation_with_valid_precision_scale_yield_decimal_true():
""" test with Number with valid precision and scale"""
schema = Schema({"number" : Number(precision=6, scale=2, yield_decimal=True)})
out_ = schema({"number": '1234.00'})
assert_equal(float(out_.get("number")), 1234.00)


def test_number_when_precision_scale_none():
def test_number_when_precision_scale_none_yield_decimal_true():
""" test with Number with no precision and scale"""
schema = Schema({"number" : Number(yield_decimal=True)})
out_ = schema({"number": '12345678901234'})
assert_equal(out_.get("number"), 12345678901234)


def test_number_when_precision_none_n_valid_scale_case1():
def test_number_when_precision_none_n_valid_scale_case1_yield_decimal_true():
""" test with Number with no precision and valid scale case 1"""
schema = Schema({"number" : Number(scale=2, yield_decimal=True)})
out_ = schema({"number": '123456789.34'})
assert_equal(float(out_.get("number")), 123456789.34)


def test_number_when_precision_none_n_valid_scale_case2():
def test_number_when_precision_none_n_valid_scale_case2_yield_decimal_true():
""" test with Number with no precision and valid scale case 2 with zero in decimal part"""
schema = Schema({"number" : Number(scale=2, yield_decimal=True)})
out_ = schema({"number": '123456789012.00'})
assert_equal(float(out_.get("number")), 123456789012.00)


def test_number_when_precision_none_n_invalid_scale():
def test_number_when_precision_none_n_invalid_scale_yield_decimal_true():
""" test with Number with no precision and invalid scale"""
schema = Schema({"number" : Number(scale=2, yield_decimal=True)})
try:
Expand All @@ -623,14 +623,14 @@ def test_number_when_precision_none_n_invalid_scale():
assert False, "Did not raise Invalid for String"


def test_number_when_valid_precision_n_scale_none():
def test_number_when_valid_precision_n_scale_none_yield_decimal_true():
""" test with Number with no precision and valid scale"""
schema = Schema({"number" : Number(precision=14, yield_decimal=True)})
out_ = schema({"number": '1234567.8901234'})
assert_equal(float(out_.get("number")), 1234567.8901234)


def test_number_when_invalid_precision_n_scale_none():
def test_number_when_invalid_precision_n_scale_none_yield_decimal_true():
""" test with Number with no precision and invalid scale"""
schema = Schema({"number" : Number(precision=14, yield_decimal=True)})
try:
Expand All @@ -642,16 +642,8 @@ def test_number_when_invalid_precision_n_scale_none():
assert False, "Did not raise Invalid for String"


def test_number_validation_with_valid_precision_scale_yield_decimal_none():
""" test with Number with valid precision, scale and no yield_decimal"""
schema = Schema({"number" : Number(precision=6, scale=2)})
out_ = schema({"number": '1234.00'})
assert_equal(out_.get("number"), '1234.00')


def test_number_validation_with_valid_precision_scale_yield_decimal_false():
""" test with Number with valid precision, scale and no yield_decimal"""
schema = Schema({"number" : Number(precision=6, scale=2, yield_decimal=False)})
out_ = schema({"number": '1234.00'})
assert_equal(out_.get("number"), '1234.00')

1 change: 0 additions & 1 deletion voluptuous/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -796,7 +796,6 @@ def __repr__(self):
return 'Unordered([{}])'.format(", ".join(repr(v) for v in self.validators))



class Number(object):
"""
Verify the number of digits that are present in the number(Precision),
Expand Down

0 comments on commit a51b20c

Please # to comment.