From 35fe10207d0e91c647ba654d611b47c37deae771 Mon Sep 17 00:00:00 2001 From: Leo Trottier Date: Tue, 25 Jun 2013 22:10:45 -0700 Subject: [PATCH] test encoding/decoding of big and small floats --- pandas/io/tests/test_json/test_ujson.py | 44 +++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/pandas/io/tests/test_json/test_ujson.py b/pandas/io/tests/test_json/test_ujson.py index 23bd41d245f75..c99415c715746 100644 --- a/pandas/io/tests/test_json/test_ujson.py +++ b/pandas/io/tests/test_json/test_ujson.py @@ -104,6 +104,30 @@ def test_decimalDecodeTestPrecise(self): decoded = ujson.decode(encoded, precise_float=True) self.assertEqual(sut, decoded) + def test_decimalDecodeTestPreciseDoubleBig(self): + sut = {u'a': 4.56e300} + encoded = ujson.encode(sut) + decoded = ujson.decode(encoded, precise_float=True) + self.assertEqual(sut, decoded) + + def test_decimalDecodeTestPreciseDoubleSmall(self): + sut = {u'a': 4.56e-300} + encoded = ujson.encode(sut) + decoded = ujson.decode(encoded, precise_float=True) + self.assertEqual(sut, decoded) + + def test_decimalDecodeTestPreciseSingleBig(self): + sut = {u'a': 4.56e35} + encoded = ujson.encode(sut) + decoded = ujson.decode(encoded, precise_float=True) + self.assertEqual(sut, decoded) + + def test_decimalDecodeTestPreciseSingleSmall(self): + sut = {u'a': 4.56e-35} + encoded = ujson.encode(sut) + decoded = ujson.decode(encoded, precise_float=True) + self.assertEqual(sut, decoded) + def test_encodeDictWithUnicodeKeys(self): input = { u"key1": u"value1", u"key1": u"value1", u"key1": u"value1", u"key1": u"value1", u"key1": u"value1", u"key1": u"value1" } output = ujson.encode(input) @@ -1416,6 +1440,26 @@ def test_decodeFloatingPointAdditionalTests(self): self.assertEquals(1.893, ujson.loads("1.893")) self.assertEquals(1.3, ujson.loads("1.3")) + self.assertEquals(1.1234567893e-300, ujson.loads("1.1234567893e-300")) + self.assertEquals(1.234567893e-300, ujson.loads("1.234567893e-300")) + self.assertEquals(1.34567893e-300, ujson.loads("1.34567893e-300")) + self.assertEquals(1.4567893e-300, ujson.loads("1.4567893e-300")) + self.assertEquals(1.567893e-300, ujson.loads("1.567893e-300")) + self.assertEquals(1.67893e-300, ujson.loads("1.67893e-300")) + self.assertEquals(1.7893e-300, ujson.loads("1.7893e-300")) + self.assertEquals(1.893e-300, ujson.loads("1.893e-300")) + self.assertEquals(1.3e-300, ujson.loads("1.3e-300")) + + self.assertEquals(1.1234567893e300, ujson.loads("1.1234567893e300")) + self.assertEquals(1.234567893e300, ujson.loads("1.234567893e300")) + self.assertEquals(1.34567893e300, ujson.loads("1.34567893e300")) + self.assertEquals(1.4567893e300, ujson.loads("1.4567893e300")) + self.assertEquals(1.567893e300, ujson.loads("1.567893e300")) + self.assertEquals(1.67893e300, ujson.loads("1.67893e300")) + self.assertEquals(1.7893e300, ujson.loads("1.7893e300")) + self.assertEquals(1.893e300, ujson.loads("1.893e300")) + self.assertEquals(1.3e300, ujson.loads("1.3e300")) + def test_encodeBigSet(self): s = set() for x in xrange(0, 100000):