@@ -1051,6 +1051,35 @@ function test_constraint_gradient()
10511051    return 
10521052end 
10531053
1054+ function  test_hessian_length ()
1055+     x =  MOI. VariableIndex (1 )
1056+     model =  Nonlinear. Model ()
1057+     Nonlinear. set_objective (model, :(log ($ x)))
1058+     evaluator =  Nonlinear. Evaluator (model, Nonlinear. SparseReverseMode (), [x])
1059+     MOI. initialize (evaluator, [:Hess ])
1060+     H =  Float64[]
1061+     got, want =  0 , 1 
1062+     @test_throws (
1063+         ErrorException (
1064+             " Vector provided for Hessian storage has too few elements. Got "   * 
1065+             " $got , want $want ."  ,
1066+         ),
1067+         MOI. eval_hessian_lagrangian (evaluator, H, [1.0 ], 1.0 , [1.0 ]),
1068+     )
1069+     return 
1070+ end 
1071+ 
1072+ function  test_jacobian_length ()
1073+     x =  MOI. VariableIndex (1 )
1074+     model =  Nonlinear. Model ()
1075+     Nonlinear. add_constraint (model, :(sin ($ x)), MOI. LessThan (0.5 ))
1076+     evaluator =  Nonlinear. Evaluator (model, Nonlinear. SparseReverseMode (), [x])
1077+     MOI. initialize (evaluator, [:Jac ])
1078+     J =  Float64[]
1079+     @test_throws  BoundsError MOI. eval_constraint_jacobian (evaluator, J, [1.0 ])
1080+     return 
1081+ end 
1082+ 
10541083function  test_timers ()
10551084    x =  MOI. VariableIndex (1 )
10561085    model =  Nonlinear. Model ()
@@ -1064,10 +1093,14 @@ function test_timers()
10641093    MOI. eval_constraint (evaluator, g, y)
10651094    MOI. eval_objective_gradient (evaluator, g, y)
10661095    MOI. eval_constraint_gradient (evaluator, g, y, 1 )
1067-     MOI. eval_constraint_jacobian (evaluator, g, y)
1068-     MOI. eval_hessian_objective (evaluator, g, y)
1069-     MOI. eval_hessian_constraint (evaluator, g, y, 1 )
1070-     MOI. eval_hessian_lagrangian (evaluator, g, y, 1.0 , [1.0 ])
1096+     J =  zeros (length (MOI. jacobian_structure (evaluator)))
1097+     MOI. eval_constraint_jacobian (evaluator, J, y)
1098+     H =  zeros (length (MOI. hessian_objective_structure (evaluator)))
1099+     MOI. eval_hessian_objective (evaluator, H, y)
1100+     H =  zeros (length (MOI. hessian_constraint_structure (evaluator, 1 )))
1101+     MOI. eval_hessian_constraint (evaluator, H, y, 1 )
1102+     H =  zeros (length (MOI. hessian_lagrangian_structure (evaluator)))
1103+     MOI. eval_hessian_lagrangian (evaluator, H, y, 1.0 , [1.0 ])
10711104    timers =  [
10721105        evaluator. initialize_timer,
10731106        evaluator. eval_objective_timer,
0 commit comments