@@ -638,6 +638,35 @@ function test_parse_header_integrality_both_int()
638638 return
639639end
640640
641+ function test_hs071_free_constraint_nlexpr ()
642+ model = NL. Model (; use_nlp_block = false )
643+ open (joinpath (@__DIR__ , " data" , " hs071_free_constraint.nl" ), " r" ) do io
644+ return read! (io, model)
645+ end
646+ @test MOI. get (model, MOI. ListOfConstraintTypesPresent ()) == [
647+ (MOI. ScalarNonlinearFunction, MOI. GreaterThan{Float64}),
648+ (MOI. ScalarNonlinearFunction, MOI. Interval{Float64}),
649+ ]
650+ for (F, S) in MOI. get (model, MOI. ListOfConstraintTypesPresent ())
651+ @test MOI. get (model, MOI. NumberOfConstraints {F,S} ()) == 1
652+ end
653+ F, S = MOI. ScalarNonlinearFunction, MOI. Interval{Float64}
654+ ci = first (MOI. get (model, MOI. ListOfConstraintIndices {F,S} ()))
655+ @test MOI. get (model, MOI. ConstraintSet (), ci) == MOI. Interval (- Inf , Inf )
656+ return
657+ end
658+
659+ function test_hs071_free_constraint ()
660+ model = NL. Model ()
661+ open (joinpath (@__DIR__ , " data" , " hs071_free_constraint.nl" ), " r" ) do io
662+ return read! (io, model)
663+ end
664+ block = MOI. get (model, MOI. NLPBlock ())
665+ @test block. constraint_bounds ==
666+ [MOI. NLPBoundsPair (25.0 , Inf ), MOI. NLPBoundsPair (- Inf , Inf )]
667+ return
668+ end
669+
641670function test_no_objective ()
642671 model = NL. Model ()
643672 open (joinpath (@__DIR__ , " data" , " hs071_no_objective.nl" ), " r" ) do io
0 commit comments