def test_multiply_expression_and_expression_in_place(self): e = lp.Expression({'x1': -5, 'x2': 3}, offset=10) e *= lp.Expression({'x1': 1}) self.assertEqual(e.offset, 0) self.assertEqual(dict(e.values()), { lp.Product(['x1', 'x1']): -5, lp.Product(['x1', 'x2']): 3, 'x1': 10 })
def test_multiply_expression_and_simple_expression(self): e1 = lp.Expression({'x1': -5, 'x2': 3}, offset=10) e2 = lp.Expression({'x1': 1}) e = e1 * e2 self.assertEqual(e.offset, 0) self.assertEqual(dict(e.values()), { lp.Product(['x1', 'x1']): -5, lp.Product(['x1', 'x2']): 3, 'x1': 10 })
def test_expression_pow_two_in_place(self): e = lp.Expression({'x1': -5, 'x2': 3}, offset=10) e **= 2 self.assertEqual(e.offset, 100) self.assertEqual(dict(e.values()), { lp.Product(['x1', 'x1']): 25, lp.Product(['x1', 'x2']): -30, lp.Product(['x2', 'x2']): 9, 'x1': -100, 'x2': 60 })
def test_multiply_expression_and_expression(self): e1 = lp.Expression({'x1': 1, 'x2': 2, 'x3': 3}, offset=4) e2 = lp.Expression({'x2': 4, 'x4': 5}, offset=-5) e = e1 * e2 self.assertEqual(e.offset, -20) self.assertEqual(dict(e.values()), { lp.Product(['x1', 'x2']): 4, lp.Product(['x2', 'x2']): 8, lp.Product(['x2', 'x3']): 12, lp.Product(['x1', 'x4']): 5, lp.Product(['x2', 'x4']): 10, lp.Product(['x3', 'x4']): 15, 'x1': -5, 'x2': 6, 'x3': -15, 'x4': 20 })
def test_result_get_expression_product_value(self): result = MockResult({'x1': 2, 'x2': 3, 'x3': 4}) expr = lp.Expression({lp.Product(['x1', 'x2']): 3, 'x3': -1}, offset=4) self.assertEqual(result.get_value(expr), 18)
def test_expression_contains_product(self): e = lp.Expression({lp.Product(['x1', 'x1']): -1}) self.assertIn(lp.Product(['x1', 'x1']), e) self.assertNotIn('x1', e)
def test_expression_with_product_to_string(self): e = lp.Expression({'x1': -4, lp.Product(['x1', 'x2']): 2}, 12) self.assertEqual(str(e), '-4*x1 + 2*x1*x2 + 12')