"""
if not isinstance(name, str):
raise TypeError('name must be a string')
+ node = ast.parse(name)
+ try:
+ name = node.body[0].value.id
+ except (AttributeError, SyntaxError):
+ raise SyntaxError('invalid syntax')
self = object().__new__(cls)
- self._name = name.strip()
+ self._name = name
self._coefficients = {self: Fraction(1)}
self._constant = Fraction(0)
self._symbols = (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')