2020-02-03 17:25:54 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
from benedict.core import dump as _dump
|
|
|
|
from decimal import Decimal
|
2020-02-20 17:08:38 +00:00
|
|
|
from six import PY3
|
2020-02-03 17:25:54 +00:00
|
|
|
|
|
|
|
import datetime as dt
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
|
|
|
class dump_test_case(unittest.TestCase):
|
|
|
|
|
2020-02-21 12:55:06 +00:00
|
|
|
@staticmethod
|
|
|
|
def _rstrip_lines(s):
|
|
|
|
return '\n'.join([line.rstrip() for line in s.splitlines()])
|
|
|
|
|
2020-02-03 17:25:54 +00:00
|
|
|
def test_dump(self):
|
|
|
|
d = {
|
|
|
|
'a': {
|
|
|
|
'b': {
|
|
|
|
'c': 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
r = """{
|
|
|
|
"a": {
|
|
|
|
"b": {
|
|
|
|
"c": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}"""
|
|
|
|
o = _dump(d)
|
2020-02-21 12:55:06 +00:00
|
|
|
self.assertEqual(self._rstrip_lines(o), r)
|
2020-02-03 17:25:54 +00:00
|
|
|
|
|
|
|
def test_dump_with_datetime(self):
|
|
|
|
d = {
|
|
|
|
'datetime': dt.datetime(2019, 6, 11),
|
|
|
|
}
|
|
|
|
r = """{
|
2020-02-19 17:12:36 +00:00
|
|
|
"datetime": "2019-06-11T00:00:00"
|
2020-02-03 17:25:54 +00:00
|
|
|
}"""
|
|
|
|
o = _dump(d)
|
2020-02-21 12:55:06 +00:00
|
|
|
self.assertEqual(self._rstrip_lines(o), r)
|
2020-02-03 17:25:54 +00:00
|
|
|
|
2020-02-19 17:12:36 +00:00
|
|
|
def test_dump_with_set(self):
|
2020-02-03 17:25:54 +00:00
|
|
|
d = {
|
2020-02-19 17:12:36 +00:00
|
|
|
'set': set([0, 1, 2, 3, 4, 5]),
|
2020-02-03 17:25:54 +00:00
|
|
|
}
|
|
|
|
r = """{
|
2020-02-19 17:12:36 +00:00
|
|
|
"set": [
|
|
|
|
0,
|
|
|
|
1,
|
|
|
|
2,
|
|
|
|
3,
|
|
|
|
4,
|
|
|
|
5
|
|
|
|
]
|
2020-02-03 17:25:54 +00:00
|
|
|
}"""
|
|
|
|
o = _dump(d)
|
2020-02-21 12:55:06 +00:00
|
|
|
self.assertEqual(self._rstrip_lines(o), r)
|
2020-02-20 10:41:26 +00:00
|
|
|
|
|
|
|
def test_dump_with_unsortable_keys(self):
|
|
|
|
d = {
|
|
|
|
None: None,
|
|
|
|
0: 0,
|
|
|
|
1: 1,
|
|
|
|
}
|
|
|
|
# must not raise TypeError
|
|
|
|
_dump(d)
|
|
|
|
d['dt'] = dt
|
|
|
|
with self.assertRaises(TypeError):
|
|
|
|
o = _dump(d, sort_keys=False, default=None)
|