test_subclass.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from unittest import TestCase
  2. import simplejson as json
  3. from decimal import Decimal
  4. class AlternateInt(int):
  5. def __repr__(self):
  6. return 'invalid json'
  7. __str__ = __repr__
  8. class AlternateFloat(float):
  9. def __repr__(self):
  10. return 'invalid json'
  11. __str__ = __repr__
  12. # class AlternateDecimal(Decimal):
  13. # def __repr__(self):
  14. # return 'invalid json'
  15. class TestSubclass(TestCase):
  16. def test_int(self):
  17. self.assertEqual(json.dumps(AlternateInt(1)), '1')
  18. self.assertEqual(json.dumps(AlternateInt(-1)), '-1')
  19. self.assertEqual(json.loads(json.dumps({AlternateInt(1): 1})), {'1': 1})
  20. def test_float(self):
  21. self.assertEqual(json.dumps(AlternateFloat(1.0)), '1.0')
  22. self.assertEqual(json.dumps(AlternateFloat(-1.0)), '-1.0')
  23. self.assertEqual(json.loads(json.dumps({AlternateFloat(1.0): 1})), {'1.0': 1})
  24. # NOTE: Decimal subclasses are not supported as-is
  25. # def test_decimal(self):
  26. # self.assertEqual(json.dumps(AlternateDecimal('1.0')), '1.0')
  27. # self.assertEqual(json.dumps(AlternateDecimal('-1.0')), '-1.0')