@@ -215,6 +215,52 @@ function test_scalar_nonlinear_function(x, y, T)
215215 return
216216end
217217
218+ function test_scalar_nonlinear_function_div_rem_zero (x, y, T)
219+ inner = Model {T} ()
220+ model = PolyJuMP. JuMP. GenericModel {T} () do
221+ return PolyJuMP. QCQP. Optimizer {T} (MOI. Utilities. MockOptimizer (inner))
222+ end
223+ PolyJuMP. @variable (model, x)
224+ PolyJuMP. @objective (model, Min, x^ 3 / x)
225+ PolyJuMP. optimize! (model)
226+ @test MOI. get (inner, MOI. NumberOfVariables ()) == 1
227+ @test isempty (MOI. get (inner, MOI. ListOfConstraintTypesPresent ()))
228+ @test PolyJuMP. objective_function (model) isa PolyJuMP. GenericNonlinearExpr
229+ F = MOI. get (inner, MOI. ObjectiveFunctionType ())
230+ @test F <: MOI.ScalarQuadraticFunction{T}
231+ return
232+ end
233+
234+ function test_scalar_nonlinear_function_div_rem_err (x, y, T)
235+ inner = Model {T} ()
236+ model = PolyJuMP. JuMP. GenericModel {T} () do
237+ return PolyJuMP. QCQP. Optimizer {T} (MOI. Utilities. MockOptimizer (inner))
238+ end
239+ PolyJuMP. @variable (model, x)
240+ PolyJuMP. @variable (model, y)
241+ PolyJuMP. @objective (model, Min, x^ 3 / y)
242+ @test_throws PolyJuMP. InvalidNLExpression PolyJuMP. optimize! (model)
243+ PolyJuMP. @objective (model, Min, 2 / y)
244+ @test_throws PolyJuMP. InvalidNLExpression PolyJuMP. optimize! (model)
245+ PolyJuMP. @objective (model, Min, 2 / (x * y^ 2 - y^ 2 * x - 1 ))
246+ PolyJuMP. optimize! (model)
247+ return
248+ end
249+
250+ function test_scalar_nonlinear_function_div_rem_number (x, y, T)
251+ inner = Model {T} ()
252+ model = PolyJuMP. JuMP. GenericModel {T} () do
253+ return PolyJuMP. QCQP. Optimizer {T} (MOI. Utilities. MockOptimizer (inner))
254+ end
255+ PolyJuMP. @variable (model, x)
256+ PolyJuMP. @objective (model, Min, 4 x^ 3 / 2 )
257+ PolyJuMP. optimize! (model)
258+ @test MOI. get (inner, MOI. NumberOfVariables ()) == 2
259+ F, S = MOI. ScalarQuadraticFunction{T}, MOI. EqualTo{T}
260+ @test (F, S) in MOI. get (inner, MOI. ListOfConstraintTypesPresent ())
261+ return
262+ end
263+
218264function test_variable_primal (x, y, T)
219265 inner = Model {T} ()
220266 optimizer = MOI. Utilities. MockOptimizer (inner)
0 commit comments