| 
9 | 9 | #  This software is distributed under the 3-clause BSD License.  | 
10 | 10 | #  ___________________________________________________________________________  | 
11 | 11 | 
 
  | 
 | 12 | +import io  | 
 | 13 | +from contextlib import redirect_stdout  | 
 | 14 | + | 
12 | 15 | import pyomo.common.unittest as unittest  | 
13 | 16 | 
 
  | 
14 | 17 | from pyomo.contrib.solver.solvers.knitro.config import KnitroConfig  | 
@@ -87,6 +90,32 @@ class TestKnitroDirectSolver(unittest.TestCase):  | 
87 | 90 |     def setUp(self):  | 
88 | 91 |         self.opt = KnitroDirectSolver()  | 
89 | 92 | 
 
  | 
 | 93 | +    def test_solve_tee(self):  | 
 | 94 | +        m = pyo.ConcreteModel()  | 
 | 95 | +        m.x = pyo.Var(initialize=1.5, bounds=(-5, 5))  | 
 | 96 | +        m.y = pyo.Var(initialize=1.5, bounds=(-5, 5))  | 
 | 97 | +        m.obj = pyo.Objective(  | 
 | 98 | +            expr=(1.0 - m.x) + 100.0 * (m.y - m.x), sense=pyo.minimize  | 
 | 99 | +        )  | 
 | 100 | +        stream = io.StringIO()  | 
 | 101 | +        with redirect_stdout(stream):  | 
 | 102 | +            self.opt.solve(m, tee=True)  | 
 | 103 | +        output = stream.getvalue()  | 
 | 104 | +        self.assertTrue(bool(output.strip()))  | 
 | 105 | + | 
 | 106 | +    def test_solve_no_tee(self):  | 
 | 107 | +        m = pyo.ConcreteModel()  | 
 | 108 | +        m.x = pyo.Var(initialize=1.5, bounds=(-5, 5))  | 
 | 109 | +        m.y = pyo.Var(initialize=1.5, bounds=(-5, 5))  | 
 | 110 | +        m.obj = pyo.Objective(  | 
 | 111 | +            expr=(1.0 - m.x) + 100.0 * (m.y - m.x), sense=pyo.minimize  | 
 | 112 | +        )  | 
 | 113 | +        stream = io.StringIO()  | 
 | 114 | +        with redirect_stdout(stream):  | 
 | 115 | +            self.opt.solve(m, tee=False)  | 
 | 116 | +        output = stream.getvalue()  | 
 | 117 | +        self.assertFalse(bool(output.strip()))  | 
 | 118 | + | 
90 | 119 |     def test_solve(self):  | 
91 | 120 |         m = pyo.ConcreteModel()  | 
92 | 121 |         m.x = pyo.Var(initialize=1.5, bounds=(-5, 5))  | 
 | 
0 commit comments