def test_loads_with_date_and_time_values(self): """Assert that date/time-like strings are parsed properly.""" assert datetime.datetime(2015, 1, 1) == ndb_json.loads( datetime.date(2015, 1, 1).isoformat()) payload_str = json.dumps({ 'date': datetime.date(2015, 1, 1).isoformat(), 'datetime': datetime.datetime(2015, 1, 1, 12, 0, 0, 0).isoformat(), 'time': '12:30', 'non-date': '12-15', 'double-hyphen non-date': '12-15-0', }) parsed = ndb_json.loads(payload_str) # TODO(erichiggins): It may be better for dates to be parsed as instances of `datetime.date`. assert datetime.datetime(2015, 1, 1) == parsed['date'] assert datetime.datetime(2015, 1, 1, 12, 0, 0, 0) == parsed['datetime'] assert '12:30' == parsed['time'] assert '12-15' == parsed['non-date'] assert '12-15-0' == parsed['double-hyphen non-date']
def test_loads_with_nested_datetime(self): """Assert the object hooks work as intended.""" payload_str = json.dumps({ 'nested': {'datetime': datetime.datetime(2016, 1, 1, 12).isoformat()}, }) parsed = ndb_json.loads(payload_str) assert datetime.datetime(2016, 1, 1, 12, 0, 0, 0) == parsed['nested']['datetime']
def test_loads_with_nested_datetime(self): """Assert the object hooks work as intended.""" payload_str = json.dumps({ 'nested': { 'datetime': datetime.datetime(2016, 1, 1, 12).isoformat() }, }) parsed = ndb_json.loads(payload_str) assert datetime.datetime(2016, 1, 1, 12, 0, 0, 0) == parsed['nested']['datetime']
def test_loads_with_date_and_time_values(self): """Assert that date/time-like strings are parsed properly.""" assert datetime.datetime(2015, 1, 1) == ndb_json.loads(datetime.date(2015, 1, 1).isoformat()) payload_str = json.dumps({ 'date': datetime.date(2015, 1, 1).isoformat(), 'datetime': datetime.datetime(2015, 1, 1, 12, 0, 0, 0).isoformat(), 'time': '12:30', 'non-date': '12-15', 'double-hyphen non-date': '12-15-0', }) parsed = ndb_json.loads(payload_str) # TODO(erichiggins): It may be better for dates to be parsed as instances of `datetime.date`. assert datetime.datetime(2015, 1, 1) == parsed['date'] assert datetime.datetime(2015, 1, 1, 12, 0, 0, 0) == parsed['datetime'] assert '12:30' == parsed['time'] assert '12-15' == parsed['non-date'] assert '12-15-0' == parsed['double-hyphen non-date']
def test_loads_with_naive_values(self): payload_str = json.dumps({ 'bool true': True, 'bool false': False, 'empty str': '', 'str': 'hello world', 'unicode': u'(╯°□°)╯︵ ┻━┻', 'int': 12345, 'float': 1.2345, 'str int': '12345', 'str float': '1.2345', }) parsed = ndb_json.loads(payload_str) assert True == parsed['bool true'] assert False == parsed['bool false'] assert '' == parsed['empty str'] assert 'hello world' == parsed['str'] assert u'(╯°□°)╯︵ ┻━┻' == parsed['unicode'] assert 12345 == parsed['int'] assert 1.2345 == parsed['float'] assert '12345' == parsed['str int'] assert '1.2345' == parsed['str float']
def test_loads_with_other_collections(self): """Assert that array/list values are parsed properly.""" test_cases = ['[1,2,3,4]', '[[0]]', '[[[{}]]]'] for s in test_cases: tools.eq_(json.loads(s), ndb_json.loads(s))
def test_loads_with_primitive_values(self): """Assert that primitive values are parsed properly.""" test_cases = ['null', '2', 'Infinity', '1.2345'] for s in test_cases: tools.eq_(json.loads(s), ndb_json.loads(s))
def test_loads_with_other_collections(self): test_cases = ['[1,2,3,4]','[[0]]', '[[[{}]]]'] for s in test_cases: assert json.loads(s) == ndb_json.loads(s)
def test_loads_with_primitive_values(self): test_cases = ['null', '2', 'Infinity', 'NaN', '1.2345'] for s in test_cases: assert json.loads(s) == ndb_json.loads(s)