test_octavemagic.py
85 lines
| 2.2 KiB
| text/x-python
|
PythonLexer
Stefan van der Walt
|
r7383 | """Tests for Octave magics extension.""" | ||
import nose.tools as nt | ||||
try: | ||||
import oct2py | ||||
import numpy as np | ||||
import numpy.testing as npt | ||||
from IPython.extensions import octavemagic | ||||
Matthias BUSSONNIER
|
r7787 | except Exception as e: | ||
Stefan van der Walt
|
r7383 | __test__ = False | ||
global octave | ||||
def setup(): | ||||
ip = get_ipython() | ||||
global octave | ||||
octave = octavemagic.OctaveMagics(ip) | ||||
ip.register_magics(octave) | ||||
ip.ex('import numpy as np') | ||||
def test_octave_inline(): | ||||
ip = get_ipython() | ||||
result = ip.run_line_magic('octave', '[1, 2, 3] + 1;') | ||||
npt.assert_array_equal(result, [[2, 3, 4]]) | ||||
def test_octave_roundtrip(): | ||||
ip = get_ipython() | ||||
ip.ex('x = np.arange(3); y = 4.5') | ||||
ip.run_line_magic('octave_push', 'x y') | ||||
ip.run_line_magic('octave', 'x = x + 1; y = y + 1;') | ||||
ip.run_line_magic('octave_pull', 'x y') | ||||
npt.assert_array_equal(ip.user_ns['x'], [[1, 2, 3]]) | ||||
nt.assert_equal(ip.user_ns['y'], 5.5) | ||||
def test_octave_cell_magic(): | ||||
ip = get_ipython() | ||||
ip.ex('x = 3; y = [1, 2]') | ||||
ip.run_cell_magic('octave', '-f png -s 400,400 -i x,y -o z', | ||||
'z = x + y;') | ||||
npt.assert_array_equal(ip.user_ns['z'], [[4, 5]]) | ||||
def verify_publish_data(source, data): | ||||
if 'image/svg+xml' in data: | ||||
svg = data['image/svg+xml'] | ||||
assert 'height="500px"' in svg | ||||
assert 'width="400px"' in svg | ||||
test_octave_plot.svgs_generated += 1 | ||||
def test_octave_plot(): | ||||
octave._publish_display_data = verify_publish_data | ||||
test_octave_plot.svgs_generated = 0 | ||||
ip = get_ipython() | ||||
ip.run_cell_magic('octave', '-f svg -s 400,500', | ||||
'plot([1, 2, 3]); figure; plot([4, 5, 6]);') | ||||
nt.assert_equal(test_octave_plot.svgs_generated, 2) | ||||
Guy Haskin Fernald
|
r8262 | |||
def test_octavemagic_localscope(): | ||||
ip = get_ipython() | ||||
ip.magic('load_ext octavemagic') | ||||
ip.push({'x':0}) | ||||
ip.run_line_magic('octave', '-i x -o result result = x+1') | ||||
result = ip.user_ns['result'] | ||||
nt.assert_equal(result, 1) | ||||
ip.run_cell('''def octavemagic_addone(u): | ||||
%octave -i u -o result result = u+1 | ||||
return result''') | ||||
ip.run_cell('result = octavemagic_addone(1)') | ||||
result = ip.user_ns['result'] | ||||
nt.assert_equal(result, 2) | ||||
nt.assert_raises( | ||||
KeyError, | ||||
ip.run_line_magic, | ||||
"octave", | ||||
"-i var_not_defined 1+1") | ||||