From: Vivien Maisonneuve Date: Tue, 24 Jun 2014 08:54:34 +0000 (+0200) Subject: Change string representations of Expression and Polyhedron X-Git-Tag: 1.0~208 X-Git-Url: https://svn.cri.ensmp.fr/git/linpy.git/commitdiff_plain/2b1e012ff2ad875e44e368bc37430ac5e5e97324?ds=sidebyside;hp=34bcb159c06a4725f7a2baaf5ddcc6dffd5d74fe Change string representations of Expression and Polyhedron --- diff --git a/pypol/linear.py b/pypol/linear.py index 74b5477..b40415f 100644 --- a/pypol/linear.py +++ b/pypol/linear.py @@ -285,13 +285,7 @@ class Expression: return '({})'.format(string) def __repr__(self): - string = '{}({{'.format(self.__class__.__name__) - for i, (symbol, coefficient) in enumerate(self.coefficients()): - if i != 0: - string += ', ' - string += '{!r}: {!r}'.format(symbol, coefficient) - string += '}}, {!r})'.format(self.constant) - return string + return '{}({!r})'.format(self.__class__.__name__, str(self)) @_polymorphic_method def __eq__(self, other): @@ -673,7 +667,7 @@ class Polyhedron: constraints.append('{} == 0'.format(constraint)) for constraint in self.inequalities: constraints.append('{} >= 0'.format(constraint)) - return '{{{}}}'.format(', '.join(constraints)) + return '{}'.format(', '.join(constraints)) def __repr__(self): if self.isempty(): @@ -681,10 +675,7 @@ class Polyhedron: elif self.isuniverse(): return 'Universe' else: - equalities = list(self.equalities) - inequalities = list(self.inequalities) - return '{}(equalities={!r}, inequalities={!r})' \ - ''.format(self.__class__.__name__, equalities, inequalities) + return '{}({!r})'.format(self.__class__.__name__, str(self)) @classmethod def _fromsympy(cls, expr): diff --git a/tests/test_linear.py b/tests/test_linear.py index f02c4f4..ce42473 100644 --- a/tests/test_linear.py +++ b/tests/test_linear.py @@ -148,7 +148,8 @@ class TestExpression(unittest.TestCase): self.assertEqual(repr(self.x), "Symbol('x')") self.assertEqual(repr(self.one), 'Constant(1)') self.assertEqual(repr(self.pi), 'Constant(22, 7)') - self.assertEqual(repr(self.expr), "Expression({'x': 1, 'y': -2}, 3)") + self.assertEqual(repr(self.x + self.one), "Expression('x + 1')") + self.assertEqual(repr(self.expr), "Expression('x - 2*y + 3')") def test_fromstring(self): self.assertEqual(Expression.fromstring('x'), self.x) @@ -241,9 +242,13 @@ class TestPolyhedron(unittest.TestCase): def test_dimension(self): self.assertEqual(self.square.dimension, 2) - def test_tostring(self): + def test_str(self): self.assertEqual(str(self.square), - '{x >= 0, -x + 1 >= 0, y >= 0, -y + 1 >= 0}') + 'x >= 0, -x + 1 >= 0, y >= 0, -y + 1 >= 0') + + def test_repr(self): + self.assertEqual(repr(self.square), + "Polyhedron('x >= 0, -x + 1 >= 0, y >= 0, -y + 1 >= 0')") def test_fromstring(self): self.assertEqual(Polyhedron.fromstring('{x >= 0, -x + 1 >= 0, ' @@ -267,3 +272,27 @@ class TestPolyhedron(unittest.TestCase): sp_x, sp_y = sympy.symbols('x y') self.assertEqual(self.square.tosympy(), sympy.And(-sp_x + 1 >= 0, -sp_y + 1 >= 0, sp_x >= 0, sp_y >= 0)) + + +class TestEmpty: + + def test_repr(self): + self.assertEqual(repr(Empty), 'Empty') + + def test_isempty(self): + self.assertTrue(Empty.isempty()) + + def test_isuniverse(self): + self.assertFalse(Empty.isuniverse()) + + +class TestUniverse: + + def test_repr(self): + self.assertEqual(repr(Universe), 'Universe') + + def test_isempty(self): + self.assertTrue(Universe.isempty()) + + def test_isuniverse(self): + self.assertTrue(Universe.isuniverse())