Commit 4cbff596 authored by Martín Gaitán's avatar Martín Gaitán

refactor tests as a CythonTest class

parent 373581e4
...@@ -2,69 +2,65 @@ ...@@ -2,69 +2,65 @@
"""Tests for the Cython magics extension.""" """Tests for the Cython magics extension."""
import os 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: try:
import Cython from IPython.testing.globalipapp import get_ipython
from IPython.testing import decorators as dec
from IPython.utils import py3compat
except: except:
__test__ = False __test__ = False
ip = get_ipython() from Cython.TestUtils import CythonTest
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_equal(result, 30)
ip = get_ipython()
@dec.skip_win32 code = py3compat.str_to_unicode("""def f(x):
def test_cython_pyximport(): return 2*x
module_name = '_test_cython_pyximport' """)
ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('g = f(10)')
nt.assert_equal(ip.user_ns['g'], 20.0)
ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('h = f(-10)')
nt.assert_equal(ip.user_ns['h'], -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_equal(ip.user_ns['g'], 20.0)
def test_cython_name():
# The Cython module named 'mymodule' defines the function f.
ip.run_cell_magic('cython', '--name=mymodule', code)
# This module can now be imported in the interactive namespace.
ip.ex('import mymodule; g = mymodule.f(10)')
nt.assert_equal(ip.user_ns['g'], 20.0)
@dec.skip_win32 class TestIPythonMagic(CythonTest):
def test_extlibs():
code = py3compat.str_to_unicode(""" def setUp(self):
CythonTest.setUp(self)
ip.extension_manager.load_extension('cython')
def test_cython_inline(self):
ip.ex('a=10; b=20')
result = ip.run_cell_magic('cython_inline', '', 'return a+b')
self.assertEqual(result, 30)
@dec.skip_win32
def test_cython_pyximport(self):
module_name = '_test_cython_pyximport'
ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('g = f(10)')
self.assertEqual(ip.user_ns['g'], 20.0)
ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('h = f(-10)')
self.assertEqual(ip.user_ns['h'], -20.0)
try:
os.remove(module_name + '.pyx')
except OSError:
pass
def test_cython(self):
ip.run_cell_magic('cython', '', code)
ip.ex('g = f(10)')
self.assertEqual(ip.user_ns['g'], 20.0)
def test_cython_name(self):
# The Cython module named 'mymodule' defines the function f.
ip.run_cell_magic('cython', '--name=mymodule', code)
# This module can now be imported in the interactive namespace.
ip.ex('import mymodule; g = mymodule.f(10)')
self.assertEqual(ip.user_ns['g'], 20.0)
@dec.skip_win32
def test_extlibs(self):
code = py3compat.str_to_unicode("""
from libc.math cimport sin from libc.math cimport sin
x = sin(0.0) x = sin(0.0)
""") """)
ip.user_ns['x'] = 1 ip.user_ns['x'] = 1
ip.run_cell_magic('cython', '-l m', code) ip.run_cell_magic('cython', '-l m', code)
nt.assert_equal(ip.user_ns['x'], 0) self.assertEqual(ip.user_ns['x'], 0)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment