test_json.py
72 lines
| 2.3 KiB
| text/x-python
|
PythonLexer
Brian E. Granger
|
r4533 | import pprint | ||
MinRK
|
r12390 | from base64 import decodestring | ||
Brian E. Granger
|
r4406 | from unittest import TestCase | ||
Thomas Kluyver
|
r13353 | from IPython.utils.py3compat import unicode_type | ||
Brian E. Granger
|
r4406 | from ..nbjson import reads, writes | ||
MinRK
|
r6209 | from .. import nbjson | ||
Brian E. Granger
|
r4406 | from .nbexamples import nb0 | ||
MinRK
|
r6209 | from . import formattest | ||
Brian E. Granger
|
r4406 | |||
MinRK
|
r6209 | from .nbexamples import nb0 | ||
MinRK
|
r6476 | class TestJSON(formattest.NBFormatTest, TestCase): | ||
MinRK
|
r6209 | |||
nb0_ref = None | ||||
ext = 'ipynb' | ||||
mod = nbjson | ||||
Brian E. Granger
|
r4406 | |||
MinRK
|
r5278 | def test_roundtrip_nosplit(self): | ||
"""Ensure that multiline blobs are still readable""" | ||||
# ensures that notebooks written prior to splitlines change | ||||
# are still readable. | ||||
s = writes(nb0, split_lines=False) | ||||
Bradley M. Froehle
|
r7874 | self.assertEqual(nbjson.reads(s),nb0) | ||
MinRK
|
r5278 | |||
def test_roundtrip_split(self): | ||||
"""Ensure that splitting multiline blocks is safe""" | ||||
# This won't differ from test_roundtrip unless the default changes | ||||
s = writes(nb0, split_lines=True) | ||||
Bradley M. Froehle
|
r7874 | self.assertEqual(nbjson.reads(s),nb0) | ||
Brian E. Granger
|
r4406 | |||
MinRK
|
r12390 | def test_read_png(self): | ||
"""PNG output data is b64 unicode""" | ||||
s = writes(nb0) | ||||
nb1 = nbjson.reads(s) | ||||
found_png = False | ||||
for cell in nb1.worksheets[0].cells: | ||||
if not 'outputs' in cell: | ||||
continue | ||||
for output in cell.outputs: | ||||
if 'png' in output: | ||||
found_png = True | ||||
pngdata = output['png'] | ||||
Thomas Kluyver
|
r13353 | self.assertEqual(type(pngdata), unicode_type) | ||
MinRK
|
r12390 | # test that it is valid b64 data | ||
b64bytes = pngdata.encode('ascii') | ||||
raw_bytes = decodestring(b64bytes) | ||||
assert found_png, "never found png output" | ||||
def test_read_jpeg(self): | ||||
"""JPEG output data is b64 unicode""" | ||||
s = writes(nb0) | ||||
nb1 = nbjson.reads(s) | ||||
found_jpeg = False | ||||
for cell in nb1.worksheets[0].cells: | ||||
if not 'outputs' in cell: | ||||
continue | ||||
for output in cell.outputs: | ||||
if 'jpeg' in output: | ||||
found_jpeg = True | ||||
jpegdata = output['jpeg'] | ||||
Thomas Kluyver
|
r13353 | self.assertEqual(type(jpegdata), unicode_type) | ||
MinRK
|
r12390 | # test that it is valid b64 data | ||
b64bytes = jpegdata.encode('ascii') | ||||
raw_bytes = decodestring(b64bytes) | ||||
assert found_jpeg, "never found jpeg output" | ||||
Brian E. Granger
|
r4406 | |||