@@ -141,6 +141,28 @@ function test_maxcut()
141141 end
142142end
143143
144+ function test_factor ()
145+ model = MOI. instantiate (
146+ SDPLR. Optimizer,
147+ with_bridge_type = Float64,
148+ with_cache_type = Float64,
149+ )
150+ MOI. set (model, MOI. Silent (), true )
151+ set = MOI. PositiveSemidefiniteConeTriangle (2 )
152+ x, cX = MOI. add_constrained_variables (model, set)
153+ MOI. add_constraint (model, 1.0 * x[1 ] + 1.0 * x[2 ], MOI. EqualTo (1.0 ))
154+ y, cY = MOI. add_constrained_variables (model, MOI. Nonnegatives (1 ))
155+ MOI. add_constraint (model, 1.0 * x[2 ] - 1.0 * y[1 ], MOI. EqualTo (0.0 ))
156+ MOI. optimize! (model)
157+ @test MOI. get (model, MOI. TerminationStatus ()) == MOI. LOCALLY_SOLVED
158+ F_X = MOI. get (model, SDPLR. Factor (), cX)
159+ F_y = MOI. get (model, SDPLR. Factor (), cY)
160+ X = [x[1 ] x[2 ]; x[2 ] x[3 ]]
161+ @test F_X * F_X' ≈ MOI. get .(model, MOI. VariablePrimal (), X)
162+ @test F_y * F_y' ≈ MOI. get .(model, MOI. VariablePrimal (), y)
163+ return
164+ end
165+
144166function _build_simple_model ()
145167 model = SDPLR. Optimizer ()
146168 X, _ = MOI. add_constrained_variables (
0 commit comments