# -*- coding: utf-8 -*- """Tests for the Cython magics extension.""" import os import nose.tools as nt from IPython.testing import decorators as dec from IPython.utils import py3compat code = py3compat.str_to_unicode("""def f(x): return 2*x """) try: import Cython except: __test__ = False ip = get_ipython() def setup(): ip.extension_manager.load_extension('cythonmagic') def test_cython_inline(): ip.ex('a=10; b=20') result = ip.run_cell_magic('cython_inline','','return a+b') nt.assert_equals(result, 30) def test_cython_pyximport(): module_name = '_test_cython_pyximport' ip.run_cell_magic('cython_pyximport', module_name, code) ip.ex('g = f(10)') nt.assert_equals(ip.user_ns['g'], 20.0) try: os.remove(module_name+'.pyx') except OSError: pass def test_cython(): ip.run_cell_magic('cython', '', code) ip.ex('g = f(10)') nt.assert_equals(ip.user_ns['g'], 20.0) @dec.skip_win32 def test_extlibs(): code = py3compat.str_to_unicode(""" from libc.math cimport sin x = sin(0.0) """) ip.user_ns['x'] = 1 ip.run_cell_magic('cython', '-l m', code) nt.assert_equals(ip.user_ns['x'], 0)