@@ -1051,6 +1051,43 @@ function test_constraint_gradient()
10511051 return
10521052end
10531053
1054+ function test_timers ()
1055+ x = MOI. VariableIndex (1 )
1056+ model = Nonlinear. Model ()
1057+ Nonlinear. set_objective (model, :(log ($ x)))
1058+ Nonlinear. add_constraint (model, :(sin ($ x)), MOI. LessThan (0.5 ))
1059+ evaluator = Nonlinear. Evaluator (model, Nonlinear. SparseReverseMode (), [x])
1060+ y = [1.2 ]
1061+ g = [NaN ]
1062+ MOI. initialize (evaluator, [:Grad , :Jac , :Hess ])
1063+ MOI. eval_objective (evaluator, y)
1064+ MOI. eval_constraint (evaluator, g, y)
1065+ MOI. eval_objective_gradient (evaluator, g, y)
1066+ 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 ])
1071+ timers = [
1072+ evaluator. initialize_timer,
1073+ evaluator. eval_objective_timer,
1074+ evaluator. eval_constraint_timer,
1075+ evaluator. eval_objective_gradient_timer,
1076+ evaluator. eval_constraint_gradient_timer,
1077+ evaluator. eval_constraint_jacobian_timer,
1078+ evaluator. eval_hessian_objective_timer,
1079+ evaluator. eval_hessian_constraint_timer,
1080+ evaluator. eval_hessian_lagrangian_timer,
1081+ ]
1082+ @test all (>= (0.0 ), timers)
1083+ if ! Sys. iswindows ()
1084+ # Windows times only in milliseconds, which can be too coarse to
1085+ # accurately measure and test.
1086+ @test sum (timers) > 0.0
1087+ end
1088+ return
1089+ end
1090+
10541091end # module
10551092
10561093TestReverseAD. runtests ()
0 commit comments