def test_input_float(self): si = S.NumberDecimal() validated = si.validate(12.42) assert isinstance(validated, Decimal128) quantized = validated.to_decimal().quantize(Decimal("0.01"), rounding=ROUND_HALF_DOWN) assert quantized == Decimal("12.42")
def test_input_str(self): si = S.NumberDecimal(precision=2) self.assertRaises(S.Invalid, si.validate, "12.42")
def test_input_decimal128(self): si = S.NumberDecimal() assert si.validate(Decimal128("12.42")) == Decimal128("12.42")
def test_input_decimal128_precision_explicit(self): si = S.NumberDecimal(precision=2) assert si.validate(Decimal128("12.42")) == Decimal128("12.42")
def test_input_int(self): si = S.NumberDecimal() assert si.validate(0) == Decimal128("0") assert si.validate(1) == Decimal128("1")
def test_input_int_precision_explicit(self): si = S.NumberDecimal(precision=2) assert si.validate(0) == Decimal128("0.00") assert si.validate(1) == Decimal128("1.00")
def test_specify_rounding(self): si = S.NumberDecimal(precision=2, rounding=ROUND_DOWN) assert si.validate(0.129999999) == Decimal128("0.12") assert si.validate(0.123456789) == Decimal128("0.12")
def test_specify_precision(self): si = S.NumberDecimal(precision=2) assert si.validate(0.123456789) == Decimal128("0.12") assert si.validate(0.125432109) == Decimal128("0.13")
def test_allow_none(self): si = S.NumberDecimal() assert si.validate(None) is None
def test_dont_allow_none(self): si = S.NumberDecimal(allow_none=False) self.assertRaises(S.Invalid, si.validate, None)