from .libhelper import requires_sympy
-class TestExpression(unittest.TestCase):
+class TestLinExpr(unittest.TestCase):
def setUp(self):
self.x = Symbol('x')
self.y = Symbol('y')
self.z = Symbol('z')
- self.zero = Expression(constant=0)
- self.one = Expression(constant=1)
- self.pi = Expression(constant=Fraction(22, 7))
+ self.zero = LinExpr(constant=0)
+ self.one = LinExpr(constant=1)
+ self.pi = LinExpr(constant=Fraction(22, 7))
self.expr = self.x - 2*self.y + 3
def test_new(self):
- self.assertIsInstance(Expression(coefficients={self.x: 1}), Symbol)
- self.assertIsInstance(Expression(constant=self.pi), Rational)
+ self.assertIsInstance(LinExpr(coefficients={self.x: 1}), Symbol)
+ self.assertIsInstance(LinExpr(constant=self.pi), Rational)
self.assertNotIsInstance(self.x + self.pi, Symbol)
self.assertNotIsInstance(self.x + self.pi, Rational)
- xx = Expression({self.x: 2})
+ xx = LinExpr({self.x: 2})
self.assertNotIsInstance(xx, Symbol)
with self.assertRaises(TypeError):
- Expression('x + y', 2)
+ LinExpr('x + y', 2)
with self.assertRaises(TypeError):
- Expression({0: 2})
+ LinExpr({0: 2})
with self.assertRaises(TypeError):
- Expression({'x': '2'})
- self.assertEqual(Expression(constant=1), Expression(constant=self.one))
- self.assertEqual(Expression(constant='1'), Expression(constant=self.one))
+ LinExpr({'x': '2'})
+ self.assertEqual(LinExpr(constant=1), LinExpr(constant=self.one))
+ self.assertEqual(LinExpr(constant='1'), LinExpr(constant=self.one))
with self.assertRaises(ValueError):
- Expression(constant='a')
+ LinExpr(constant='a')
def test_coefficient(self):
self.assertEqual(self.expr.coefficient(self.x), 1)
self.expr.subs(self.x, 'x')
def test_fromstring(self):
- self.assertEqual(Expression.fromstring('x'), self.x)
- self.assertEqual(Expression.fromstring('-x'), -self.x)
- self.assertEqual(Expression.fromstring('22/7'), self.pi)
- self.assertEqual(Expression.fromstring('x - 2y + 3'), self.expr)
- self.assertEqual(Expression.fromstring('x - (3-1)y + 3'), self.expr)
- self.assertEqual(Expression.fromstring('x - 2*y + 3'), self.expr)
+ self.assertEqual(LinExpr.fromstring('x'), self.x)
+ self.assertEqual(LinExpr.fromstring('-x'), -self.x)
+ self.assertEqual(LinExpr.fromstring('22/7'), self.pi)
+ self.assertEqual(LinExpr.fromstring('x - 2y + 3'), self.expr)
+ self.assertEqual(LinExpr.fromstring('x - (3-1)y + 3'), self.expr)
+ self.assertEqual(LinExpr.fromstring('x - 2*y + 3'), self.expr)
def test_repr(self):
- self.assertEqual(str(Expression()), '0')
+ self.assertEqual(str(LinExpr()), '0')
self.assertEqual(str(self.x), 'x')
self.assertEqual(str(-self.x), '-x')
self.assertEqual(str(self.pi), '22/7')
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)
- self.assertEqual(Expression.fromsympy(sp_x - 2*sp_y + 3), self.expr)
+ self.assertEqual(LinExpr.fromsympy(sp_x), self.x)
+ self.assertEqual(LinExpr.fromsympy(sympy.Rational(22, 7)), self.pi)
+ self.assertEqual(LinExpr.fromsympy(sp_x - 2*sp_y + 3), self.expr)
with self.assertRaises(ValueError):
- Expression.fromsympy(sp_x*sp_y)
+ LinExpr.fromsympy(sp_x*sp_y)
@requires_sympy
def test_tosympy(self):
self.y = Symbol('y')
def test_new(self):
- self.assertEqual(Symbol(' x '), self.x)
+ self.assertEqual(Symbol('x'), self.x)
with self.assertRaises(TypeError):
Symbol(self.x)
with self.assertRaises(TypeError):
Symbol(1)
+ with self.assertRaises(SyntaxError):
+ Symbol('1')
+ with self.assertRaises(SyntaxError):
+ Symbol('x.1')
+ with self.assertRaises(SyntaxError):
+ Symbol('x 1')
+ Symbol('_')
+ Symbol('_x')
+ Symbol('x_1')
def test_name(self):
self.assertEqual(self.x.name, 'x')