|
|
# coding: utf-8
|
|
|
"""Tests for the Python API for composing notebook elements"""
|
|
|
|
|
|
import nose.tools as nt
|
|
|
|
|
|
from IPython.nbformat.validator import isvalid, validate, ValidationError
|
|
|
from ..nbbase import (
|
|
|
NotebookNode, nbformat,
|
|
|
new_code_cell, new_markdown_cell, new_notebook,
|
|
|
new_output, new_raw_cell,
|
|
|
)
|
|
|
|
|
|
def test_empty_notebook():
|
|
|
nb = new_notebook()
|
|
|
nt.assert_equal(nb.cells, [])
|
|
|
nt.assert_equal(nb.metadata, NotebookNode())
|
|
|
nt.assert_equal(nb.nbformat, nbformat)
|
|
|
|
|
|
def test_empty_markdown_cell():
|
|
|
cell = new_markdown_cell()
|
|
|
nt.assert_equal(cell.cell_type, 'markdown')
|
|
|
nt.assert_equal(cell.source, '')
|
|
|
|
|
|
def test_markdown_cell():
|
|
|
cell = new_markdown_cell(u'* Søme markdown')
|
|
|
nt.assert_equal(cell.source, u'* Søme markdown')
|
|
|
|
|
|
def test_empty_raw_cell():
|
|
|
cell = new_raw_cell()
|
|
|
nt.assert_equal(cell.cell_type, u'raw')
|
|
|
nt.assert_equal(cell.source, '')
|
|
|
|
|
|
def test_raw_cell():
|
|
|
cell = new_raw_cell('hi')
|
|
|
nt.assert_equal(cell.source, u'hi')
|
|
|
|
|
|
def test_empty_code_cell():
|
|
|
cell = new_code_cell('hi')
|
|
|
nt.assert_equal(cell.cell_type, 'code')
|
|
|
nt.assert_equal(cell.source, u'hi')
|
|
|
|
|
|
def test_empty_display_data():
|
|
|
output = new_output('display_data')
|
|
|
nt.assert_equal(output.output_type, 'display_data')
|
|
|
|
|
|
def test_empty_stream():
|
|
|
output = new_output('stream')
|
|
|
nt.assert_equal(output.output_type, 'stream')
|
|
|
nt.assert_equal(output.name, 'stdout')
|
|
|
nt.assert_equal(output.text, '')
|
|
|
|
|
|
def test_empty_execute_result():
|
|
|
output = new_output('execute_result', execution_count=1)
|
|
|
nt.assert_equal(output.output_type, 'execute_result')
|
|
|
|
|
|
mimebundle = {
|
|
|
'text/plain': "some text",
|
|
|
"application/json": {
|
|
|
"key": "value"
|
|
|
},
|
|
|
"image/svg+xml": 'ABCDEF',
|
|
|
"application/octet-stream": 'ABC-123',
|
|
|
"application/vnd.foo+bar": "Some other stuff",
|
|
|
}
|
|
|
|
|
|
def test_display_data():
|
|
|
output = new_output('display_data', mimebundle)
|
|
|
for key, expected in mimebundle.items():
|
|
|
nt.assert_equal(output.data[key], expected)
|
|
|
|
|
|
def test_execute_result():
|
|
|
output = new_output('execute_result', mimebundle, execution_count=10)
|
|
|
nt.assert_equal(output.execution_count, 10)
|
|
|
for key, expected in mimebundle.items():
|
|
|
nt.assert_equal(output.data[key], expected)
|
|
|
|
|
|
def test_error():
|
|
|
o = new_output(output_type=u'error', ename=u'NameError',
|
|
|
evalue=u'Name not found', traceback=[u'frame 0', u'frame 1', u'frame 2']
|
|
|
)
|
|
|
nt.assert_equal(o.output_type, u'error')
|
|
|
nt.assert_equal(o.ename, u'NameError')
|
|
|
nt.assert_equal(o.evalue, u'Name not found')
|
|
|
nt.assert_equal(o.traceback, [u'frame 0', u'frame 1', u'frame 2'])
|
|
|
|
|
|
def test_code_cell_with_outputs():
|
|
|
cell = new_code_cell(execution_count=10, outputs=[
|
|
|
new_output('display_data', mimebundle),
|
|
|
new_output('stream', text='hello'),
|
|
|
new_output('execute_result', mimebundle, execution_count=10),
|
|
|
])
|
|
|
nt.assert_equal(cell.execution_count, 10)
|
|
|
nt.assert_equal(len(cell.outputs), 3)
|
|
|
er = cell.outputs[-1]
|
|
|
nt.assert_equal(er.execution_count, 10)
|
|
|
nt.assert_equal(er['output_type'], 'execute_result')
|
|
|
|
|
|
def test_stream():
|
|
|
output = new_output('stream', name='stderr', text='hello there')
|
|
|
nt.assert_equal(output.name, 'stderr')
|
|
|
nt.assert_equal(output.text, 'hello there')
|
|
|
|