| from decimal import Decimal |
| from unittest import TestCase |
| |
| import simplejson as json |
| |
| class TestDecimal(TestCase): |
| NUMS = "1.0", "10.00", "1.1", "1234567890.1234567890", "500" |
| def test_decimal_encode(self): |
| for d in map(Decimal, self.NUMS): |
| self.assertEquals(json.dumps(d, use_decimal=True), str(d)) |
| |
| def test_decimal_decode(self): |
| for s in self.NUMS: |
| self.assertEquals(json.loads(s, parse_float=Decimal), Decimal(s)) |
| |
| def test_decimal_roundtrip(self): |
| for d in map(Decimal, self.NUMS): |
| # The type might not be the same (int and Decimal) but they |
| # should still compare equal. |
| self.assertEquals( |
| json.loads( |
| json.dumps(d, use_decimal=True), parse_float=Decimal), |
| d) |
| self.assertEquals( |
| json.loads( |
| json.dumps([d], use_decimal=True), parse_float=Decimal), |
| [d]) |
| |
| def test_decimal_defaults(self): |
| d = Decimal(1) |
| # use_decimal=False is the default |
| self.assertRaises(TypeError, json.dumps, d, use_decimal=False) |
| self.assertRaises(TypeError, json.dumps, d) |