@@ -91,6 +91,35 @@ function test_write_int()
9191 return
9292end
9393
94+ function test_write_int_float_interval ()
95+ model = MiniZinc. Model {Float64} ()
96+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
97+ MOI. add_constraint (model, x, MOI. Interval (1.5 , 3.2 ))
98+ @test sprint (write, model) == """
99+ var 2 .. 3: x1;
100+ solve satisfy;
101+ """
102+ return
103+ end
104+
105+ function test_write_int_float_greater_than ()
106+ model = MiniZinc. Model {Float64} ()
107+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
108+ MOI. add_constraint (model, x, MOI. GreaterThan (1.5 ))
109+ @test sprint (write, model) ==
110+ " var int: x1;\n constraint int_le(2, x1);\n solve satisfy;\n "
111+ return
112+ end
113+
114+ function test_write_int_float_less_than ()
115+ model = MiniZinc. Model {Float64} ()
116+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
117+ MOI. add_constraint (model, x, MOI. LessThan (1.5 ))
118+ @test sprint (write, model) ==
119+ " var int: x1;\n constraint int_le(x1, 1);\n solve satisfy;\n "
120+ return
121+ end
122+
94123function test_write_interval ()
95124 model = MiniZinc. Model {Int} ()
96125 x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
@@ -1630,6 +1659,46 @@ function test_infix_unary_addition()
16301659 return
16311660end
16321661
1662+ function test_integer_bounds_interval ()
1663+ model = MOI. Utilities. Model {Float64} ()
1664+ x = MOI. add_variables (model, 3 )
1665+ MOI. add_constraint .(model, x, MOI. Integer ())
1666+ MOI. add_constraint .(model, x, MOI. Interval (1.0 , 3.0 ))
1667+ MOI. add_constraint (model, MOI. VectorOfVariables (x), MOI. AllDifferent (3 ))
1668+ mzn = MiniZinc. Optimizer {Float64} (" highs" )
1669+ index_map, _ = MOI. optimize! (mzn, model)
1670+ @test MOI. get (mzn, MOI. TerminationStatus ()) == MOI. OPTIMAL
1671+ y = [MOI. get (mzn, MOI. VariablePrimal (), index_map[xi]) for xi in x]
1672+ @test sort (y) == [1 , 2 , 3 ]
1673+ return
1674+ end
1675+
1676+ function test_integer_bounds_greater_than ()
1677+ model = MOI. Utilities. Model {Float64} ()
1678+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
1679+ MOI. add_constraint (model, x, MOI. GreaterThan (1.5 ))
1680+ MOI. set (model, MOI. ObjectiveSense (), MOI. MIN_SENSE)
1681+ MOI. set (model, MOI. ObjectiveFunction {MOI.VariableIndex} (), x)
1682+ mzn = MiniZinc. Optimizer {Float64} (" highs" )
1683+ index_map, _ = MOI. optimize! (mzn, model)
1684+ @test MOI. get (mzn, MOI. TerminationStatus ()) == MOI. OPTIMAL
1685+ @test MOI. get (mzn, MOI. VariablePrimal (), index_map[x]) == 2
1686+ return
1687+ end
1688+
1689+ function test_integer_bounds_less_than_than ()
1690+ model = MOI. Utilities. Model {Float64} ()
1691+ x, _ = MOI. add_constrained_variable (model, MOI. Integer ())
1692+ MOI. add_constraint (model, x, MOI. LessThan (1.5 ))
1693+ MOI. set (model, MOI. ObjectiveSense (), MOI. MAX_SENSE)
1694+ MOI. set (model, MOI. ObjectiveFunction {MOI.VariableIndex} (), x)
1695+ mzn = MiniZinc. Optimizer {Float64} (" highs" )
1696+ index_map, _ = MOI. optimize! (mzn, model)
1697+ @test MOI. get (mzn, MOI. TerminationStatus ()) == MOI. OPTIMAL
1698+ @test MOI. get (mzn, MOI. VariablePrimal (), index_map[x]) == 1
1699+ return
1700+ end
1701+
16331702end
16341703
16351704TestMiniZinc. runtests ()
0 commit comments