@@ -108,6 +108,8 @@ function test_simplify_ScalarNonlinearFunction_multiplication()
108108 # *(-(x, x), 1) -> 0
109109 f = MOI. ScalarNonlinearFunction (:- , Any[x, x])
110110 @test ≈ (SymbolicAD. simplify (MOI. ScalarNonlinearFunction (:* , Any[f, 1 ])), 0 )
111+ # *() -> true
112+ @test ≈ (SymbolicAD. simplify (MOI. ScalarNonlinearFunction (:* , Any[])), 1 )
111113 return
112114end
113115
@@ -202,6 +204,40 @@ function test_simplify_ScalarNonlinearFunction_power()
202204 return
203205end
204206
207+ function test_simplify_VectorAffineFunction ()
208+ f = MOI. VectorAffineFunction {Float64} (
209+ MOI. VectorAffineTerm{Float64}[],
210+ [0.0 , 1.0 , 2.0 ],
211+ )
212+ @test SymbolicAD. simplify (f) == [0.0 , 1.0 , 2.0 ]
213+ x = MOI. VariableIndex (1 )
214+ f = MOI. Utilities. operate (vcat, Float64, 1.0 , x, 2.0 * x + 1.0 * x)
215+ @test SymbolicAD. simplify (f) ≈ f
216+ return
217+ end
218+
219+ function test_simplify_VectorQuadraticFunction ()
220+ f = MOI. VectorQuadraticFunction {Float64} (
221+ MOI. VectorQuadraticTerm{Float64}[],
222+ MOI. VectorAffineTerm{Float64}[],
223+ [0.0 , 1.0 , 2.0 ],
224+ )
225+ @test SymbolicAD. simplify (f) == [0.0 , 1.0 , 2.0 ]
226+ x = MOI. VariableIndex (1 )
227+ f = MOI. VectorQuadraticFunction {Float64} (
228+ MOI. VectorQuadraticTerm{Float64}[],
229+ MOI. VectorAffineTerm{Float64}[
230+ MOI. VectorAffineTerm (2 , MOI. ScalarAffineTerm (3.0 , x))
231+ ],
232+ [1.0 , 0.0 ],
233+ )
234+ g = MOI. Utilities. operate (vcat, Float64, 1.0 , 3.0 * x)
235+ @test SymbolicAD. simplify (f) ≈ g
236+ f = MOI. Utilities. operate (vcat, Float64, 1.0 , 2.0 * x * x)
237+ @test SymbolicAD. simplify (f) ≈ f
238+ return
239+ end
240+
205241function test_simplify_VectorNonlinearFunction ()
206242 x = MOI. VariableIndex .(1 : 3 )
207243 y = MOI. ScalarNonlinearFunction (
0 commit comments