@@ -7219,3 +7219,111 @@ function setup_test(
72197219end
72207220
72217221version_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