mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
|
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)
|