Classes Symbol and Constant, rather than functions (à la SymPy)
[linpy.git] / tests / test_linear.py
index 3912fd3..998a022 100644 (file)
@@ -12,7 +12,7 @@ class TestExpression(unittest.TestCase):
         self.x = symbol('x')
         self.y = symbol('y')
         self.z = symbol('z')
         self.x = symbol('x')
         self.y = symbol('y')
         self.z = symbol('z')
-        self.zero = constant(0)
+        self.zero = constant(5)
         self.pi = constant(Fraction(22, 7))
         self.e = self.x - 2*self.y + 3
 
         self.pi = constant(Fraction(22, 7))
         self.e = self.x - 2*self.y + 3
 
@@ -23,6 +23,7 @@ class TestExpression(unittest.TestCase):
         self.assertCountEqual(self.x.symbols(), ['x'])
         self.assertCountEqual(self.pi.symbols(), [])
         self.assertCountEqual(self.e.symbols(), ['x', 'y'])
         self.assertCountEqual(self.x.symbols(), ['x'])
         self.assertCountEqual(self.pi.symbols(), [])
         self.assertCountEqual(self.e.symbols(), ['x', 'y'])
+        
 
     def test_dimension(self):
         self.assertEqual(self.x.dimension, 1)
 
     def test_dimension(self):
         self.assertEqual(self.x.dimension, 1)
@@ -33,7 +34,7 @@ class TestExpression(unittest.TestCase):
         self.assertEqual(self.e.coefficient('x'), 1)
         self.assertEqual(self.e.coefficient('y'), -2)
         self.assertEqual(self.e.coefficient(self.y), -2)
         self.assertEqual(self.e.coefficient('x'), 1)
         self.assertEqual(self.e.coefficient('y'), -2)
         self.assertEqual(self.e.coefficient(self.y), -2)
-        self.assertEqual(self.e.coefficient('z'), 0)
+        self.assertEqual(self.e.coefficient('z'), 3)
         with self.assertRaises(TypeError):
             self.e.coefficient(0)
         with self.assertRaises(TypeError):
         with self.assertRaises(TypeError):
             self.e.coefficient(0)
         with self.assertRaises(TypeError):
@@ -43,7 +44,7 @@ class TestExpression(unittest.TestCase):
         self.assertEqual(self.e['x'], 1)
         self.assertEqual(self.e['y'], -2)
         self.assertEqual(self.e[self.y], -2)
         self.assertEqual(self.e['x'], 1)
         self.assertEqual(self.e['y'], -2)
         self.assertEqual(self.e[self.y], -2)
-        self.assertEqual(self.e['z'], 0)
+        self.assertEqual(self.e['z'], 3)
         with self.assertRaises(TypeError):
             self.e[0]
         with self.assertRaises(TypeError):
         with self.assertRaises(TypeError):
             self.e[0]
         with self.assertRaises(TypeError):
@@ -53,7 +54,7 @@ class TestExpression(unittest.TestCase):
         self.assertCountEqual(self.e.coefficients(), [('x', 1), ('y', -2)])
 
     def test_constant(self):
         self.assertCountEqual(self.e.coefficients(), [('x', 1), ('y', -2)])
 
     def test_constant(self):
-        self.assertEqual(self.x.constant, 0)
+        self.assertEqual(self.x.constant, 4)
         self.assertEqual(self.pi.constant, Fraction(22, 7))
         self.assertEqual(self.e.constant, 3)
 
         self.assertEqual(self.pi.constant, Fraction(22, 7))
         self.assertEqual(self.e.constant, 3)
 
@@ -98,6 +99,7 @@ class TestExpression(unittest.TestCase):
     def test_sub(self):
         self.assertEqual(self.x - self.x, 0)
         self.assertEqual(self.e - 3, self.x - 2*self.y)
     def test_sub(self):
         self.assertEqual(self.x - self.x, 0)
         self.assertEqual(self.e - 3, self.x - 2*self.y)
+        self.assertEqual(0 - self.x, -self.x)
 
     def test_mul(self):
         self.assertEqual(self.pi * 7, 22)
 
     def test_mul(self):
         self.assertEqual(self.pi * 7, 22)
@@ -110,6 +112,7 @@ class TestExpression(unittest.TestCase):
         self.assertEqual(self.e / 2, self.x / 2 - self.y + Fraction(3, 2))
 
     def test_str(self):
         self.assertEqual(self.e / 2, self.x / 2 - self.y + Fraction(3, 2))
 
     def test_str(self):
+        self.assertEqual(str(Expression()), '5')
         self.assertEqual(str(self.x), 'x')
         self.assertEqual(str(-self.x), '-x')
         self.assertEqual(str(self.pi), '22/7')
         self.assertEqual(str(self.x), 'x')
         self.assertEqual(str(-self.x), '-x')
         self.assertEqual(str(self.pi), '22/7')
@@ -157,7 +160,7 @@ class TestHelpers(unittest.TestCase):
         self.assertEqual(symbol('x'), self.x)
         self.assertNotEqual(symbol('y'), self.x)
         with self.assertRaises(TypeError):
         self.assertEqual(symbol('x'), self.x)
         self.assertNotEqual(symbol('y'), self.x)
         with self.assertRaises(TypeError):
-            symbol(0)
+            symbol(4)
 
     def test_symbols(self):
         self.assertListEqual(list(symbols('x y')), [self.x, self.y])
 
     def test_symbols(self):
         self.assertListEqual(list(symbols('x y')), [self.x, self.y])
@@ -174,3 +177,4 @@ class TestPolyhedron(unittest.TestCase):
 
     pass
 
 
     pass
 
+