Skip to content

Commit 07bd0ef

Browse files
committed
[Test] add tests for add_constrained_variables of PSDConeTriangle
1 parent 6bfca94 commit 07bd0ef

File tree

2 files changed

+118
-6
lines changed

2 files changed

+118
-6
lines changed

src/Test/test_basic_constraint.jl

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ function _basic_constraint_test_helper(
219219
set = _set(T, UntypedS)
220220
N = MOI.dimension(set)
221221
x = add_variables_fn(model, N)
222-
223222
constraint_function = _function(T, UntypedF, x)
224223
@assert MOI.output_dimension(constraint_function) == N
225224
F, S = typeof(constraint_function), typeof(set)
@@ -235,9 +234,19 @@ function _basic_constraint_test_helper(
235234
@test MOI.get(model, MOI.NumberOfConstraints{F,S}()) == 1
236235
_test_attribute_value_type(model, MOI.NumberOfConstraints{F,S}())
237236
###
237+
### Test MOI.ListOfConstraintIndices
238+
###
239+
c_indices = MOI.get(model, MOI.ListOfConstraintIndices{F,S}())
240+
@test c_indices == [c]
241+
###
242+
### Test MOI.ListOfConstraintTypesPresent
243+
###
244+
@test (F, S) in MOI.get(model, MOI.ListOfConstraintTypesPresent())
245+
###
238246
### Test MOI.is_valid
239247
###
240248
@test MOI.is_valid(model, c)
249+
@test !MOI.is_valid(model, typeof(c)(c.value + 1))
241250
###
242251
### Test MOI.ConstraintName
243252
###
@@ -287,11 +296,6 @@ function _basic_constraint_test_helper(
287296
_test_attribute_value_type(model, MOI.ConstraintSet(), c)
288297
end
289298
###
290-
### Test MOI.ListOfConstraintIndices
291-
###
292-
c_indices = MOI.get(model, MOI.ListOfConstraintIndices{F,S}())
293-
@test length(c_indices) == 1
294-
###
295299
### Test MOI.add_constraints
296300
###
297301
if F != MOI.VariableIndex && F != MOI.VectorOfVariables

src/Test/test_conic.jl

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7219,3 +7219,111 @@ function setup_test(
72197219
end
72207220

72217221
version_added(::typeof(test_conic_NormCone)) = v"1.14.0"
7222+
7223+
function test_add_constrained_PositiveSemidefiniteConeTriangle(
7224+
model::MOI.ModelLike,
7225+
config::Config{T},
7226+
) where {T<:Real}
7227+
@requires MOI.supports_add_constrained_variables(
7228+
model,
7229+
MOI.PositiveSemidefiniteConeTriangle,
7230+
)
7231+
@requires _supports(config, MOI.delete)
7232+
# Add a scalar
7233+
x = MOI.add_variable(model)
7234+
@test MOI.get(model, MOI.ListOfVariableIndices()) == [x]
7235+
@test MOI.is_valid(model, x)
7236+
@test MOI.get(model, MOI.NumberOfVariables()) == 1
7237+
# Add a PSD matrix
7238+
set = MOI.PositiveSemidefiniteConeTriangle(2)
7239+
X, c = MOI.add_constrained_variables(model, set)
7240+
F, S = MOI.VectorOfVariables, MOI.PositiveSemidefiniteConeTriangle
7241+
@test (F, S) in MOI.get(model, MOI.ListOfConstraintTypesPresent())
7242+
@test MOI.get(model, MOI.ListOfConstraintIndices{F,S}()) == [c]
7243+
@test MOI.get(model, MOI.NumberOfConstraints{F,S}()) == 1
7244+
@test MOI.is_valid(model, c)
7245+
@test !MOI.is_valid(model, typeof(c)(c.value - 1))
7246+
@test !MOI.is_valid(model, typeof(c)(c.value + 1))
7247+
@test MOI.get(model, MOI.ListOfVariableIndices()) == [x; X]
7248+
@test all(MOI.is_valid.(model, [x; X]))
7249+
@test MOI.get(model, MOI.NumberOfVariables()) == 4
7250+
# Add and delete a scalar
7251+
y = MOI.add_variable(model)
7252+
@test MOI.get(model, MOI.ListOfVariableIndices()) == [x; X; y]
7253+
@test all(MOI.is_valid.(model, [x; X; y]))
7254+
@test MOI.get(model, MOI.NumberOfVariables()) == 5
7255+
MOI.delete(model, y)
7256+
@test !MOI.is_valid(model, y)
7257+
@test MOI.get(model, MOI.ListOfVariableIndices()) == [x; X]
7258+
@test all(MOI.is_valid.(model, [x; X]))
7259+
@test MOI.get(model, MOI.NumberOfVariables()) == 4
7260+
# Add and delete another scalar
7261+
z = MOI.add_variable(model)
7262+
@test MOI.get(model, MOI.ListOfVariableIndices()) == [x; X; z]
7263+
@test all(MOI.is_valid.(model, [x; X]))
7264+
@test MOI.is_valid(model, z)
7265+
@test MOI.get(model, MOI.NumberOfVariables()) == 5
7266+
MOI.delete(model, z)
7267+
@test !MOI.is_valid(model, y)
7268+
@test !MOI.is_valid(model, z)
7269+
@test MOI.get(model, MOI.ListOfVariableIndices()) == [x; X]
7270+
@test all(MOI.is_valid.(model, [x; X]))
7271+
@test MOI.get(model, MOI.NumberOfVariables()) == 4
7272+
MOI.delete(model, x)
7273+
@test !MOI.is_valid(model, x)
7274+
@test !MOI.is_valid(model, y)
7275+
@test !MOI.is_valid(model, z)
7276+
@test MOI.get(model, MOI.ListOfVariableIndices()) == X
7277+
@test all(MOI.is_valid.(model, X))
7278+
@test MOI.get(model, MOI.NumberOfVariables()) == 3
7279+
return
7280+
end
7281+
7282+
function version_added(
7283+
::typeof(test_add_constrained_PositiveSemidefiniteConeTriangle),
7284+
)
7285+
return v"1.38.1"
7286+
end
7287+
7288+
function test_add_constrained_PositiveSemidefiniteConeTriangle_VariableName(
7289+
model::MOI.ModelLike,
7290+
config::Config{T},
7291+
) where {T<:Real}
7292+
@requires MOI.supports_add_constrained_variables(
7293+
model,
7294+
MOI.PositiveSemidefiniteConeTriangle,
7295+
)
7296+
@requires MOI.supports(model, MOI.VariableName(), MOI.VariableIndex)
7297+
X, _ = MOI.add_constrained_variables(model, set)
7298+
MOI.set(model, MOI.VariableName(), X[1], "x")
7299+
@test MOI.get(model, MOI.VariablePrimalStart(), X[1]) == "x"
7300+
return
7301+
end
7302+
7303+
function version_added(
7304+
::typeof(test_add_constrained_PositiveSemidefiniteConeTriangle_VariableName),
7305+
)
7306+
return v"1.38.1"
7307+
end
7308+
7309+
function test_add_constrained_PositiveSemidefiniteConeTriangle_VariablePrimalStart(
7310+
model::MOI.ModelLike,
7311+
config::Config{T},
7312+
) where {T<:Real}
7313+
@requires MOI.supports_add_constrained_variables(
7314+
model,
7315+
MOI.PositiveSemidefiniteConeTriangle,
7316+
)
7317+
@requires MOI.supports(model, MOI.VariablePrimalStart(), MOI.VariableIndex)
7318+
X, _ = MOI.add_constrained_variables(model, set)
7319+
@test all(isnothing, MOI.get.(model, MOI.VariablePrimalStart(), X))
7320+
MOI.set.(model, MOI.VariablePrimalStart(), X, [1.0, 0.0, 1.0])
7321+
@test MOI.get.(model, MOI.VariablePrimalStart(), X) == [1.0, 0.0, 1.0]
7322+
return
7323+
end
7324+
7325+
function version_added(
7326+
::typeof(test_add_constrained_PositiveSemidefiniteConeTriangle_VariablePrimalStart),
7327+
)
7328+
return v"1.38.1"
7329+
end

0 commit comments

Comments
 (0)