def test_list_raw(objects): out = io.StringIO() jp = jsonfile.JsonProto() out.write(jp.start_list()) for item in objects: out.write(jp.list_item(item)) out.write(jp.end_list()) remade = json.loads(out.getvalue()) assert remade == objects
def test_dict_raw(objects): out = io.StringIO() jp = jsonfile.JsonProto() out.write(jp.start_dict()) for item in objects.items(): out.write(jp.dict_item(*item)) out.write(jp.end_dict()) serialized = out.getvalue() note(serialized) remade = json.loads(serialized) assert remade == objects
def test_dict_piecemeal(objects): out = io.StringIO() jp = jsonfile.JsonProto() out.write(jp.start_dict()) for k, v in objects.items(): out.write(jp.dict_key(k)) out.write(jp.dict_value(v)) out.write(jp.end_dict()) serialized = out.getvalue() note(serialized) remade = json.loads(serialized) assert remade == objects
def test_write_nan(): jp = jsonfile.JsonProto() remade = json.loads(jp.toplevel_item(float('nan'))) assert math.isnan(remade)
def test_write_obj(obj): jp = jsonfile.JsonProto() remade = json.loads(jp.toplevel_item(obj)) assert remade == obj
def test_list_item_in_dict(): jp = jsonfile.JsonProto() jp.start_list() with pytest.raises(Exception): jp.dict_key('asdf')
def test_two_top_level_items(): jp = jsonfile.JsonProto() jp.start_list() jp.end_list() with pytest.raises(Exception): jp.start_list()