diff options
author | Mohamed Karam <muhakh@pop-os.localdomain> | 2022-08-26 15:06:52 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-08-27 15:51:08 +0200 |
commit | b92ffebb0cdc469baaf1b8f0e72dddb069eb2fb4 (patch) | |
tree | 43ddc1aae7de4892f35ca39c95d3a9e3abcc20f3 /tests/model_fields | |
parent | 806e9e2d0dcf8f58e376fb7e2a8b9771e2a9ce16 (diff) | |
download | django-b92ffebb0cdc469baaf1b8f0e72dddb069eb2fb4.tar.gz |
Fixed #33954 -- Prevented models.DecimalField from accepting NaN, Inf, and -Inf values.
Diffstat (limited to 'tests/model_fields')
-rw-r--r-- | tests/model_fields/test_decimalfield.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/tests/model_fields/test_decimalfield.py b/tests/model_fields/test_decimalfield.py index 912d55af72..88c6878f59 100644 --- a/tests/model_fields/test_decimalfield.py +++ b/tests/model_fields/test_decimalfield.py @@ -67,10 +67,19 @@ class DecimalFieldTests(TestCase): def test_save_nan_invalid(self): msg = "“nan” value must be a decimal number." - with self.assertRaisesMessage(ValidationError, msg): - BigD.objects.create(d=float("nan")) - with self.assertRaisesMessage(ValidationError, msg): - BigD.objects.create(d=math.nan) + for value in [float("nan"), math.nan, "nan"]: + with self.subTest(value), self.assertRaisesMessage(ValidationError, msg): + BigD.objects.create(d=value) + + def test_save_inf_invalid(self): + msg = "“inf” value must be a decimal number." + for value in [float("inf"), math.inf, "inf"]: + with self.subTest(value), self.assertRaisesMessage(ValidationError, msg): + BigD.objects.create(d=value) + msg = "“-inf” value must be a decimal number." + for value in [float("-inf"), -math.inf, "-inf"]: + with self.subTest(value), self.assertRaisesMessage(ValidationError, msg): + BigD.objects.create(d=value) def test_fetch_from_db_without_float_rounding(self): big_decimal = BigD.objects.create(d=Decimal(".100000000000000000000000000005")) |