import copy import nose.tools as nt from IPython.nbformat import validate from .. import convert from . import nbexamples from IPython.nbformat.v3.tests import nbexamples as v3examples from IPython.nbformat import v3, v4 def test_upgrade_notebook(): nb03 = copy.deepcopy(v3examples.nb0) validate(nb03) nb04 = convert.upgrade(nb03) validate(nb04) def test_downgrade_notebook(): nb04 = copy.deepcopy(nbexamples.nb0) validate(nb04) nb03 = convert.downgrade(nb04) validate(nb03) def test_upgrade_heading(): v3h = v3.new_heading_cell v4m = v4.new_markdown_cell for v3cell, expected in [ ( v3h(source='foo', level=1), v4m(source='# foo'), ), ( v3h(source='foo\nbar\nmulti-line\n', level=4), v4m(source='#### foo bar multi-line'), ), ]: upgraded = convert.upgrade_cell(v3cell) nt.assert_equal(upgraded, expected) def test_downgrade_heading(): v3h = v3.new_heading_cell v4m = v4.new_markdown_cell v3m = lambda source: v3.new_text_cell('markdown', source) for v4cell, expected in [ ( v4m(source='# foo'), v3h(source='foo', level=1), ), ( v4m(source='#foo'), v3h(source='foo', level=1), ), ( v4m(source='#\tfoo'), v3h(source='foo', level=1), ), ( v4m(source='# \t foo'), v3h(source='foo', level=1), ), ( v4m(source='# foo\nbar'), v3m(source='# foo\nbar'), ), ]: downgraded = convert.downgrade_cell(v4cell) nt.assert_equal(downgraded, expected)