Check for SymPy presence in unittary tests
[linpy.git] / tests / test_linear.py
index b7006a7..879cc17 100644 (file)
@@ -1,3 +1,4 @@
+import functools
 import unittest
 
 from fractions import Fraction
 import unittest
 
 from fractions import Fraction
@@ -5,6 +6,21 @@ from fractions import Fraction
 from pypol.linear import *
 
 
 from pypol.linear import *
 
 
+try:
+    import sympy
+    def _with_sympy(func):
+        @functools.wraps(func)
+        def wrapper(self):
+            return func(self)
+        return wrapper
+except ImportError:
+    def _with_sympy(func):
+        @functools.wraps(func)
+        def wrapper(self):
+            raise unittest.SkipTest('SymPy is not available')
+        return wrapper
+
+
 class TestExpression(unittest.TestCase):
 
     def setUp(self):
 class TestExpression(unittest.TestCase):
 
     def setUp(self):
@@ -151,8 +167,8 @@ class TestExpression(unittest.TestCase):
         self.assertEqual((self.x + self.y/2 + self.z/3)._toint(),
                 6*self.x + 3*self.y + 2*self.z)
 
         self.assertEqual((self.x + self.y/2 + self.z/3)._toint(),
                 6*self.x + 3*self.y + 2*self.z)
 
+    @_with_sympy
     def test_fromsympy(self):
     def test_fromsympy(self):
-        import sympy
         sp_x, sp_y = sympy.symbols('x y')
         self.assertEqual(Expression.fromsympy(sp_x), self.x)
         self.assertEqual(Expression.fromsympy(sympy.Rational(22, 7)), self.pi)
         sp_x, sp_y = sympy.symbols('x y')
         self.assertEqual(Expression.fromsympy(sp_x), self.x)
         self.assertEqual(Expression.fromsympy(sympy.Rational(22, 7)), self.pi)
@@ -160,8 +176,8 @@ class TestExpression(unittest.TestCase):
         with self.assertRaises(ValueError):
             Expression.fromsympy(sp_x*sp_y)
 
         with self.assertRaises(ValueError):
             Expression.fromsympy(sp_x*sp_y)
 
+    @_with_sympy
     def test_tosympy(self):
     def test_tosympy(self):
-        import sympy
         sp_x, sp_y = sympy.symbols('x y')
         self.assertEqual(self.x.tosympy(), sp_x)
         self.assertEqual(self.pi.tosympy(), sympy.Rational(22, 7))
         sp_x, sp_y = sympy.symbols('x y')
         self.assertEqual(self.x.tosympy(), sp_x)
         self.assertEqual(self.pi.tosympy(), sympy.Rational(22, 7))
@@ -175,8 +191,8 @@ class TestConstant(unittest.TestCase):
         self.one = Constant(1)
         self.pi = Constant(Fraction(22, 7))
 
         self.one = Constant(1)
         self.pi = Constant(Fraction(22, 7))
 
+    @_with_sympy
     def test_fromsympy(self):
     def test_fromsympy(self):
-        import sympy
         self.assertEqual(Constant.fromsympy(sympy.Rational(22, 7)), self.pi)
         with self.assertRaises(TypeError):
             Constant.fromsympy(sympy.Symbol('x'))
         self.assertEqual(Constant.fromsympy(sympy.Rational(22, 7)), self.pi)
         with self.assertRaises(TypeError):
             Constant.fromsympy(sympy.Symbol('x'))
@@ -196,8 +212,8 @@ class TestSymbol(unittest.TestCase):
         self.assertListEqual(list(symbols('x,y')), [self.x, self.y])
         self.assertListEqual(list(symbols(['x', 'y'])), [self.x, self.y])
 
         self.assertListEqual(list(symbols('x,y')), [self.x, self.y])
         self.assertListEqual(list(symbols(['x', 'y'])), [self.x, self.y])
 
+    @_with_sympy
     def test_fromsympy(self):
     def test_fromsympy(self):
-        import sympy
         sp_x = sympy.Symbol('x')
         self.assertEqual(Symbol.fromsympy(sp_x), self.x)
         with self.assertRaises(TypeError):
         sp_x = sympy.Symbol('x')
         self.assertEqual(Symbol.fromsympy(sp_x), self.x)
         with self.assertRaises(TypeError):