@@ -88,6 +88,86 @@ function delete_variables(model::MOI.ModelLike, config::TestConfig)
8888end
8989unittests[" delete_variables" ] = delete_variable
9090
91+ """
92+ delete_nonnegative_variables(model::MOI.ModelLike, config::TestConfig)
93+
94+ Test adding, and then deleting, nonnegative variables.
95+ """
96+ function delete_nonnegative_variables (model:: MOI.ModelLike , config:: TestConfig )
97+ MOI. empty! (model)
98+ @test MOI. is_empty (model)
99+ @test MOI. get (model, MOI. NumberOfVariables ()) == 0
100+ v, cv = MOI. add_constrained_variables (model, MOI. Nonnegatives (2 ))
101+ @test MOI. get (model, MOI. NumberOfVariables ()) == 2
102+ MOI. delete (model, v)
103+ @test MOI. get (model, MOI. NumberOfVariables ()) == 0
104+ @test ! MOI. is_valid (model, v[1 ])
105+ @test_throws MOI. InvalidIndex (v[1 ]) MOI. delete (model, v[1 ])
106+ @test ! MOI. is_valid (model, v[2 ])
107+ @test_throws MOI. InvalidIndex (v[2 ]) MOI. delete (model, v[2 ])
108+ @test ! MOI. is_valid (model, cv)
109+ v, cv = MOI. add_constrained_variables (model, MOI. Nonnegatives (1 ))
110+ @test MOI. get (model, MOI. NumberOfVariables ()) == 1
111+ MOI. delete (model, v[1 ])
112+ @test ! MOI. is_valid (model, v[1 ])
113+ @test_throws MOI. InvalidIndex (v[1 ]) MOI. delete (model, v[1 ])
114+ @test ! MOI. is_valid (model, cv)
115+ @test MOI. get (model, MOI. NumberOfVariables ()) == 0
116+ end
117+ unittests[" delete_nonnegative_variables" ] = delete_nonnegative_variables
118+
119+ """
120+ update_dimension_nonnegative_variables(model::MOI.ModelLike, config::TestConfig)
121+
122+ Test adding, and then deleting one by one, nonnegative variables.
123+ """
124+ function update_dimension_nonnegative_variables (model:: MOI.ModelLike , config:: TestConfig )
125+ MOI. empty! (model)
126+ @test MOI. is_empty (model)
127+ @test MOI. get (model, MOI. NumberOfVariables ()) == 0
128+ v, cv = MOI. add_constrained_variables (model, MOI. Nonnegatives (2 ))
129+ @test MOI. get (model, MOI. NumberOfVariables ()) == 2
130+ MOI. delete (model, v[1 ])
131+ @test ! MOI. is_valid (model, v[1 ])
132+ @test_throws MOI. InvalidIndex (v[1 ]) MOI. delete (model, v[1 ])
133+ @test MOI. is_valid (model, cv)
134+ @test MOI. is_valid (model, v[2 ])
135+ @test MOI. get (model, MOI. ConstraintFunction (), cv) == MOI. VectorOfVariables ([v[2 ]])
136+ @test MOI. get (model, MOI. ConstraintSet (), cv) == MOI. Nonnegatives (1 )
137+ MOI. delete (model, v[2 ])
138+ @test MOI. get (model, MOI. NumberOfVariables ()) == 0
139+ @test ! MOI. is_valid (model, v[1 ])
140+ @test_throws MOI. InvalidIndex (v[1 ]) MOI. delete (model, v[1 ])
141+ @test ! MOI. is_valid (model, v[2 ])
142+ @test_throws MOI. InvalidIndex (v[2 ]) MOI. delete (model, v[2 ])
143+ @test ! MOI. is_valid (model, cv)
144+ end
145+ unittests[" update_dimension_nonnegative_variables" ] = update_dimension_nonnegative_variables
146+
147+ """
148+ delete_soc_variables(model::MOI.ModelLike, config::TestConfig)
149+
150+ Test adding, and then deleting, second-order cone variables.
151+ """
152+ function delete_soc_variables (model:: MOI.ModelLike , config:: TestConfig )
153+ MOI. empty! (model)
154+ @test MOI. is_empty (model)
155+ @test MOI. get (model, MOI. NumberOfVariables ()) == 0
156+ v, cv = MOI. add_constrained_variables (model, MOI. SecondOrderCone (3 ))
157+ @test MOI. get (model, MOI. NumberOfVariables ()) == 3
158+ MOI. delete (model, v)
159+ @test MOI. get (model, MOI. NumberOfVariables ()) == 0
160+ @test ! MOI. is_valid (model, v[1 ])
161+ @test_throws MOI. InvalidIndex (v[1 ]) MOI. delete (model, v[1 ])
162+ @test ! MOI. is_valid (model, v[2 ])
163+ @test_throws MOI. InvalidIndex (v[2 ]) MOI. delete (model, v[2 ])
164+ @test ! MOI. is_valid (model, cv)
165+ v, cv = MOI. add_constrained_variables (model, MOI. SecondOrderCone (3 ))
166+ @test MOI. get (model, MOI. NumberOfVariables ()) == 3
167+ @test_throws MOI. DeleteNotAllowed MOI. delete (model, v[1 ])
168+ end
169+ unittests[" delete_soc_variables" ] = delete_soc_variables
170+
91171"""
92172 getvariable(model::MOI.ModelLike, config::TestConfig)
93173
0 commit comments