Skip to content

Commit 5152012

Browse files
committed
Expand inequality / relational operator testing
1 parent 2787c86 commit 5152012

2 files changed

Lines changed: 3157 additions & 1400 deletions

File tree

pyomo/core/tests/unit/test_relational_expr.py

Lines changed: 128 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ def test_compoundInequality(self):
224224
# < c
225225
# / \
226226
# a b
227-
e = inequality(m.a, m.b, m.c, strict=True)
227+
e = (m.a < m.b) < m.c
228228
self.assertIs(type(e), RangedExpression)
229229
self.assertEqual(e.nargs(), 3)
230230
self.assertIs(e.arg(0), m.a)
@@ -239,7 +239,7 @@ def test_compoundInequality(self):
239239
# <= c
240240
# / \
241241
# a b
242-
e = inequality(m.a, m.b, m.c)
242+
e = (m.a <= m.b) <= m.c
243243
self.assertIs(type(e), RangedExpression)
244244
self.assertEqual(e.nargs(), 3)
245245
self.assertIs(e.arg(0), m.a)
@@ -254,37 +254,29 @@ def test_compoundInequality(self):
254254
# > c
255255
# / \
256256
# a b
257-
e = inequality(upper=m.c, body=m.b, lower=m.a, strict=True)
257+
e = (m.a > m.b) > m.c
258258
self.assertIs(type(e), RangedExpression)
259259
self.assertEqual(e.nargs(), 3)
260-
self.assertIs(e.arg(2), m.c)
261-
self.assertIs(e.arg(1), m.b)
262-
self.assertIs(e.arg(0), m.a)
263-
# self.assertEqual(len(e._strict), 2)
264-
self.assertEqual(e._strict[0], True)
265-
self.assertEqual(e._strict[1], True)
260+
self.assertEqual(e.args, (m.c, m.b, m.a))
261+
self.assertEqual(e.strict, (True, True))
266262

267263
# >=
268264
# / \
269265
# >= c
270266
# / \
271267
# a b
272-
e = inequality(upper=m.c, body=m.b, lower=m.a)
268+
e = (m.a >= m.b) >= m.c
273269
self.assertIs(type(e), RangedExpression)
274270
self.assertEqual(e.nargs(), 3)
275-
self.assertIs(e.arg(2), m.c)
276-
self.assertIs(e.arg(1), m.b)
277-
self.assertIs(e.arg(0), m.a)
278-
# self.assertEqual(len(e._strict), 2)
279-
self.assertEqual(e._strict[0], False)
280-
self.assertEqual(e._strict[1], False)
271+
self.assertEqual(e.args, (m.c, m.b, m.a))
272+
self.assertEqual(e.strict, (False, False))
281273

282274
# <=
283275
# / \
284276
# <= 0
285277
# / \
286278
# 0 a
287-
e = inequality(0, m.a, 0)
279+
e = (0 <= m.a) <= 0
288280
self.assertIs(type(e), RangedExpression)
289281
self.assertEqual(e.nargs(), 3)
290282
self.assertIs(e.arg(2), 0)
@@ -299,15 +291,126 @@ def test_compoundInequality(self):
299291
# < 0
300292
# / \
301293
# 0 a
302-
e = inequality(0, m.a, 0, True)
294+
e = (0 < m.a) < 0
295+
self.assertIs(e, False)
296+
297+
def test_inequality_fcn(self):
298+
m = self.m
299+
300+
self.assertEqual(inequality(None, None, None), None)
301+
302+
self.assertEqual(inequality(0, None, None), 0)
303+
self.assertEqual(inequality(None, 0, None), 0)
304+
self.assertEqual(inequality(None, None, 0), 0)
305+
306+
self.assertEqual(inequality(m.a, None, None), m.a)
307+
self.assertEqual(inequality(None, m.a, None), m.a)
308+
self.assertEqual(inequality(None, None, m.a), m.a)
309+
310+
self.assertEqual(inequality(None, 0, 0), True)
311+
self.assertEqual(inequality(0, None, 0), True)
312+
self.assertEqual(inequality(0, 0, None), True)
313+
self.assertEqual(inequality(None, 0, 1), True)
314+
self.assertEqual(inequality(0, None, 1), True)
315+
self.assertEqual(inequality(0, 1, None), True)
316+
self.assertEqual(inequality(None, 1, 0), False)
317+
self.assertEqual(inequality(1, None, 0), False)
318+
self.assertEqual(inequality(1, 0, None), False)
319+
320+
self.assertEqual(inequality(0, 0, 0), True)
321+
self.assertEqual(inequality(0, 1, 2), True)
322+
323+
e = inequality(m.a, 0, 1)
324+
self.assertIs(type(e), InequalityExpression)
325+
self.assertEqual(e.args, (m.a, 0))
326+
self.assertEqual(e.strict, False)
327+
328+
e = inequality(0, m.a, 1)
303329
self.assertIs(type(e), RangedExpression)
304-
self.assertEqual(e.nargs(), 3)
305-
self.assertIs(e.arg(2), 0)
306-
self.assertIs(e.arg(1), m.a)
307-
self.assertIs(e.arg(0), 0)
308-
# self.assertEqual(len(e._strict), 2)
309-
self.assertEqual(e._strict[0], True)
310-
self.assertEqual(e._strict[1], True)
330+
self.assertEqual(e.args, (0, m.a, 1))
331+
self.assertEqual(e.strict, (False, False))
332+
333+
e = inequality(0, 1, m.a)
334+
self.assertIs(type(e), InequalityExpression)
335+
self.assertEqual(e.args, (1, m.a))
336+
self.assertEqual(e.strict, False)
337+
338+
e = inequality(m.a, 0, 0)
339+
self.assertIs(type(e), InequalityExpression)
340+
self.assertEqual(e.args, (m.a, 0))
341+
self.assertEqual(e.strict, False)
342+
343+
e = inequality(0, m.a, 0)
344+
self.assertIs(type(e), RangedExpression)
345+
self.assertEqual(e.args, (0, m.a, 0))
346+
self.assertEqual(e.strict, (False, False))
347+
348+
e = inequality(0, 0, m.a)
349+
self.assertIs(type(e), InequalityExpression)
350+
self.assertEqual(e.args, (0, m.a))
351+
self.assertEqual(e.strict, False)
352+
353+
self.assertEqual(inequality(m.a, 1, 0), False)
354+
self.assertEqual(inequality(1, m.a, 0), False)
355+
self.assertEqual(inequality(1, 0, m.a), False)
356+
357+
e = inequality(m.a, m.b, m.c)
358+
self.assertIs(type(e), RangedExpression)
359+
self.assertEqual(e.args, (m.a, m.b, m.c))
360+
self.assertEqual(e.strict, (False, False))
361+
362+
def test_strict_inequality_fcn(self):
363+
m = self.m
364+
365+
self.assertEqual(inequality(None, None, None, True), None)
366+
367+
self.assertEqual(inequality(0, None, None, True), 0)
368+
self.assertEqual(inequality(None, 0, None, True), 0)
369+
self.assertEqual(inequality(None, None, 0, True), 0)
370+
371+
self.assertEqual(inequality(m.a, None, None, True), m.a)
372+
self.assertEqual(inequality(None, m.a, None, True), m.a)
373+
self.assertEqual(inequality(None, None, m.a, True), m.a)
374+
375+
self.assertEqual(inequality(None, 0, 0, True), False)
376+
self.assertEqual(inequality(0, None, 0, True), False)
377+
self.assertEqual(inequality(0, 0, None, True), False)
378+
self.assertEqual(inequality(None, 0, 1, True), True)
379+
self.assertEqual(inequality(0, None, 1, True), True)
380+
self.assertEqual(inequality(0, 1, None, True), True)
381+
self.assertEqual(inequality(None, 1, 0, True), False)
382+
self.assertEqual(inequality(1, None, 0, True), False)
383+
self.assertEqual(inequality(1, 0, None, True), False)
384+
385+
self.assertEqual(inequality(0, 0, 0, True), False)
386+
self.assertEqual(inequality(0, 1, 2, True), True)
387+
388+
e = inequality(m.a, 0, 1, True)
389+
self.assertIs(type(e), InequalityExpression)
390+
self.assertEqual(e.args, (m.a, 0))
391+
self.assertEqual(e.strict, True)
392+
393+
e = inequality(0, m.a, 1, True)
394+
self.assertIs(type(e), RangedExpression)
395+
self.assertEqual(e.args, (0, m.a, 1))
396+
self.assertEqual(e.strict, (True, True))
397+
398+
e = inequality(0, 1, m.a, True)
399+
self.assertIs(type(e), InequalityExpression)
400+
self.assertEqual(e.args, (1, m.a))
401+
self.assertEqual(e.strict, True)
402+
403+
self.assertEqual(inequality(m.a, 0, 0, True), False)
404+
self.assertEqual(inequality(0, m.a, 0, True), False)
405+
self.assertEqual(inequality(0, 0, m.a, True), False)
406+
self.assertEqual(inequality(m.a, 1, 0, True), False)
407+
self.assertEqual(inequality(1, m.a, 0, True), False)
408+
self.assertEqual(inequality(1, 0, m.a, True), False)
409+
410+
e = inequality(m.a, m.b, m.c, True)
411+
self.assertIs(type(e), RangedExpression)
412+
self.assertEqual(e.args, (m.a, m.b, m.c))
413+
self.assertEqual(e.strict, (True, True))
311414

312415
def test_val1(self):
313416
m = ConcreteModel()

0 commit comments

Comments
 (0)