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
from Cython.TestUtils import CythonTest
ip = get_ipython() ip = get_ipython()
code = py3compat.str_to_unicode("""def f(x):
return 2*x
""")
def setup(): class TestIPythonMagic(CythonTest):
ip.extension_manager.load_extension('cythonmagic')
def setUp(self):
CythonTest.setUp(self)
ip.extension_manager.load_extension('cython')
def test_cython_inline(): def test_cython_inline(self):
ip.ex('a=10; b=20') ip.ex('a=10; b=20')
result = ip.run_cell_magic('cython_inline','','return a+b') result = ip.run_cell_magic('cython_inline', '', 'return a+b')
nt.assert_equal(result, 30) self.assertEqual(result, 30)
@dec.skip_win32
@dec.skip_win32 def test_cython_pyximport(self):
def test_cython_pyximport():
module_name = '_test_cython_pyximport' module_name = '_test_cython_pyximport'
ip.run_cell_magic('cython_pyximport', module_name, code) ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('g = f(10)') ip.ex('g = f(10)')
nt.assert_equal(ip.user_ns['g'], 20.0) self.assertEqual(ip.user_ns['g'], 20.0)
ip.run_cell_magic('cython_pyximport', module_name, code) ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('h = f(-10)') ip.ex('h = f(-10)')
nt.assert_equal(ip.user_ns['h'], -20.0) self.assertEqual(ip.user_ns['h'], -20.0)
try: try:
os.remove(module_name+'.pyx') os.remove(module_name + '.pyx')
except OSError: except OSError:
pass pass
def test_cython(self):
def test_cython():
ip.run_cell_magic('cython', '', code) ip.run_cell_magic('cython', '', code)
ip.ex('g = f(10)') ip.ex('g = f(10)')
nt.assert_equal(ip.user_ns['g'], 20.0) self.assertEqual(ip.user_ns['g'], 20.0)
def test_cython_name(self):
def test_cython_name():
# The Cython module named 'mymodule' defines the function f. # The Cython module named 'mymodule' defines the function f.
ip.run_cell_magic('cython', '--name=mymodule', code) ip.run_cell_magic('cython', '--name=mymodule', code)
# This module can now be imported in the interactive namespace. # This module can now be imported in the interactive namespace.
ip.ex('import mymodule; g = mymodule.f(10)') ip.ex('import mymodule; g = mymodule.f(10)')
nt.assert_equal(ip.user_ns['g'], 20.0) self.assertEqual(ip.user_ns['g'], 20.0)
@dec.skip_win32 @dec.skip_win32
def test_extlibs(): def test_extlibs(self):
code = py3compat.str_to_unicode(""" 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