Skip to content

Commit edf8e48

Browse files
committed
Tests with reverse order
1 parent 32eb355 commit edf8e48

File tree

1 file changed

+47
-20
lines changed

1 file changed

+47
-20
lines changed

test/Utilities/copy.jl

Lines changed: 47 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -159,68 +159,95 @@ end
159159
end
160160

161161

162-
mutable struct OrderingConstrainedVariablesModel <: MOI.ModelLike
162+
abstract type AbstractConstrainedVariablesModel <: MOI.ModelLike end
163+
mutable struct OrderConstrainedVariablesModel <: AbstractConstrainedVariablesModel
163164
constraintIndices ::Array{MOI.ConstraintIndex}
164165
inner ::MOIU.Model{Float64}
165-
OrderingConstrainedVariablesModel() = new(MOI.ConstraintIndex[], MOIU.Model{Float64}())
166+
OrderConstrainedVariablesModel() = new(MOI.ConstraintIndex[], MOIU.Model{Float64}())
167+
end
168+
mutable struct ReverseOrderConstrainedVariablesModel <: AbstractConstrainedVariablesModel
169+
constraintIndices ::Array{MOI.ConstraintIndex}
170+
inner ::MOIU.Model{Float64}
171+
ReverseOrderConstrainedVariablesModel() = new(MOI.ConstraintIndex[], MOIU.Model{Float64}())
166172
end
167173

168174

169175

170-
MOI.add_variables(model::OrderingConstrainedVariablesModel, n) = MOI.add_variables(model.inner, n)
171-
MOI.add_variable(model::OrderingConstrainedVariablesModel) = MOI.add_variable(model.inner)
176+
MOI.add_variables(model::AbstractConstrainedVariablesModel, n) = MOI.add_variables(model.inner, n)
177+
MOI.add_variable(model::AbstractConstrainedVariablesModel) = MOI.add_variable(model.inner)
172178

173-
function MOI.add_constraint(model::OrderingConstrainedVariablesModel, f::F, s::S) where {F<:MOI.AbstractFunction, S<:MOI.AbstractSet}
179+
function MOI.add_constraint(model::AbstractConstrainedVariablesModel, f::F, s::S) where {F<:MOI.AbstractFunction, S<:MOI.AbstractSet}
174180
ci = MOI.add_constraint(model.inner, f, s)
175181
push!(model.constraintIndices, ci)
176182
return ci
177183
end
178184

179-
function MOI.copy_to(dest::OrderingConstrainedVariablesModel, src::MOI.ModelLike; kws...)
185+
function MOI.copy_to(dest::AbstractConstrainedVariablesModel, src::MOI.ModelLike; kws...)
180186
MOIU.automatic_copy_to(dest, src; kws...)
181187
end
182188

183-
MOIU.supports_default_copy_to(model::OrderingConstrainedVariablesModel, ::Bool) = true
189+
MOIU.supports_default_copy_to(model::AbstractConstrainedVariablesModel, ::Bool) = true
184190

185-
function MOI.empty!(model::OrderingConstrainedVariablesModel)
191+
function MOI.empty!(model::AbstractConstrainedVariablesModel)
186192
model.constraintIndices = MOI.ConstraintIndex[]
187193
MOI.empty!(model.inner)
188194
end
189195

190196

191-
MOI.supports_constraint(::OrderingConstrainedVariablesModel, ::Type{MOI.VectorOfVariables}, ::Type{MOI.Nonnegatives}) = false
192-
MOI.supports_add_constrained_variables(::OrderingConstrainedVariablesModel, ::Type{MOI.Nonnegatives}) = true
197+
MOI.supports_constraint(::OrderConstrainedVariablesModel, ::Type{MOI.VectorOfVariables}, ::Type{MOI.Nonnegatives}) = false
198+
MOI.supports_add_constrained_variables(::OrderConstrainedVariablesModel, ::Type{MOI.Nonnegatives}) = true
199+
MOI.supports_constraint(::OrderConstrainedVariablesModel, ::Type{MOI.VectorOfVariables}, ::Type{MOI.Nonnegatives}) = true
200+
MOI.supports_add_constrained_variables(::OrderConstrainedVariablesModel, ::Type{MOI.Nonpositives}) = false
201+
202+
MOI.supports_constraint(::ReverseOrderConstrainedVariablesModel, ::Type{MOI.VectorOfVariables}, ::Type{MOI.Nonnegatives}) = true
203+
MOI.supports_add_constrained_variables(::ReverseOrderConstrainedVariablesModel, ::Type{MOI.Nonnegatives}) = false
204+
MOI.supports_constraint(::ReverseOrderConstrainedVariablesModel, ::Type{MOI.VectorOfVariables}, ::Type{MOI.Nonnegatives}) = false
205+
MOI.supports_add_constrained_variables(::ReverseOrderConstrainedVariablesModel, ::Type{MOI.Nonpositives}) = true
193206

194-
MOI.supports_constraint(::OrderingConstrainedVariablesModel, ::Type{MOI.VectorOfVariables}, ::Type{MOI.Nonnegatives}) = true
195-
MOI.supports_add_constrained_variables(::OrderingConstrainedVariablesModel, ::Type{MOI.Nonpositives}) = false
196207

197-
MOI.supports_constraint(::OrderingConstrainedVariablesModel, ::Type{MOI.SingleVariable}, ::Type{<:MOI.GreaterThan}) = true
198-
MOI.supports_add_constrained_variable(::OrderingConstrainedVariablesModel, ::Type{<:MOI.GreaterThan}) = false
208+
MOI.supports_constraint(::OrderConstrainedVariablesModel, ::Type{MOI.SingleVariable}, ::Type{<:MOI.GreaterThan}) = true
209+
MOI.supports_add_constrained_variable(::OrderConstrainedVariablesModel, ::Type{<:MOI.GreaterThan}) = false
210+
MOI.supports_constraint(::OrderConstrainedVariablesModel, ::Type{MOI.SingleVariable}, ::Type{<:MOI.LessThan}) = false
211+
MOI.supports_add_constrained_variable(::OrderConstrainedVariablesModel, ::Type{<:MOI.LessThan}) = true
199212

200-
MOI.supports_constraint(::OrderingConstrainedVariablesModel, ::Type{MOI.SingleVariable}, ::Type{<:MOI.LessThan}) = false
201-
MOI.supports_add_constrained_variable(::OrderingConstrainedVariablesModel, ::Type{<:MOI.LessThan}) = true
213+
MOI.supports_constraint(::ReverseOrderConstrainedVariablesModel, ::Type{MOI.SingleVariable}, ::Type{<:MOI.GreaterThan}) = false
214+
MOI.supports_add_constrained_variable(::ReverseOrderConstrainedVariablesModel, ::Type{<:MOI.GreaterThan}) = true
215+
MOI.supports_constraint(::ReverseOrderConstrainedVariablesModel, ::Type{MOI.SingleVariable}, ::Type{<:MOI.LessThan}) = true
216+
MOI.supports_add_constrained_variable(::ReverseOrderConstrainedVariablesModel, ::Type{<:MOI.LessThan}) = false
202217

203218

204219
@testset "Create variables using supports_add_constrained_variable(s) (#987)" begin
205220
# With vectors
206221
src = MOIU.Model{Float64}()
207222
a, c1 = MOI.add_constrained_variables(src, MOI.Nonpositives(3))
208223
c2 = MOI.add_constraint(src, a, MOI.Nonnegatives(3))
209-
dest = OrderingConstrainedVariablesModel()
210224

211-
index_map = MOI.copy_to(dest, src)
212225

226+
dest = OrderConstrainedVariablesModel()
227+
index_map = MOI.copy_to(dest, src)
213228
@test typeof(c1) == typeof(dest.constraintIndices[2])
214229
@test typeof(c2) == typeof(dest.constraintIndices[1])
215230

231+
dest = ReverseOrderConstrainedVariablesModel()
232+
index_map = MOI.copy_to(dest, src)
233+
@test typeof(c1) == typeof(dest.constraintIndices[1])
234+
@test typeof(c2) == typeof(dest.constraintIndices[2])
235+
236+
237+
216238
# With single variables
217239
src = MOIU.Model{Float64}()
218240
a, c1 = MOI.add_constrained_variable(src, MOI.GreaterThan{Float64}(5.0))
219241
c2 = MOI.add_constraint(src, a, MOI.LessThan{Float64}(1.0))
220-
dest = OrderingConstrainedVariablesModel()
221242

222-
index_map = MOI.copy_to(dest, src)
223243

244+
dest = OrderConstrainedVariablesModel()
245+
index_map = MOI.copy_to(dest, src)
224246
@test typeof(c1) == typeof(dest.constraintIndices[2])
225247
@test typeof(c2) == typeof(dest.constraintIndices[1])
248+
249+
dest = ReverseOrderConstrainedVariablesModel()
250+
index_map = MOI.copy_to(dest, src)
251+
@test typeof(c1) == typeof(dest.constraintIndices[1])
252+
@test typeof(c2) == typeof(dest.constraintIndices[2])
226253
end

0 commit comments

Comments
 (0)