@@ -65,9 +65,10 @@ mutable struct MockOptimizer{MT<:MOI.ModelLike,T} <: MOI.AbstractOptimizer
6565 # Constraint conflicts
6666 compute_conflict_called:: Bool
6767 conflict_status:: MOI.ConflictStatusCode
68+ conflict_count:: Int
6869 constraint_conflict_status:: Dict {
6970 MOI. ConstraintIndex,
70- MOI. ConflictParticipationStatusCode,
71+ Dict{Int, MOI. ConflictParticipationStatusCode} ,
7172 }
7273 # Basis status
7374 constraint_basis_status:: Dict {
@@ -124,7 +125,8 @@ function MockOptimizer(
124125 #
125126 false ,
126127 MOI. COMPUTE_CONFLICT_NOT_CALLED,
127- Dict {MOI.ConstraintIndex,MOI.ConflictParticipationStatusCode} (),
128+ 0 ,
129+ Dict {MOI.ConstraintIndex,Dict{Int,MOI.ConflictParticipationStatusCode}} (),
128130 # Basis status
129131 Dict {MOI.ConstraintIndex,Dict{Int,MOI.BasisStatusCode}} (),
130132 Dict {MOI.VariableIndex,Dict{Int,MOI.BasisStatusCode}} (),
@@ -449,11 +451,12 @@ end
449451
450452function MOI. set (
451453 mock:: MockOptimizer ,
452- :: MOI.ConstraintConflictStatus ,
454+ attr :: MOI.ConstraintConflictStatus ,
453455 idx:: MOI.ConstraintIndex ,
454456 value,
455457)
456- mock. constraint_conflict_status[xor_index (idx)] = value
458+ _safe_set_result (mock. constraint_conflict_status, attr, idx, value)
459+ # mock.constraint_conflict_status[xor_index(idx)] = value
457460 return
458461end
459462
@@ -723,11 +726,18 @@ end
723726
724727function MOI. get (
725728 mock:: MockOptimizer ,
726- :: MOI.ConstraintConflictStatus ,
729+ attr :: MOI.ConstraintConflictStatus ,
727730 idx:: MOI.ConstraintIndex ,
728731)
732+ MOI. check_result_index_bounds (mock, attr)
729733 MOI. throw_if_not_valid (mock, idx)
730- return mock. constraint_conflict_status[xor_index (idx)]
734+ # return mock.constraint_conflict_status[xor_index(idx)]
735+ return _safe_get_result (
736+ mock. variable_basis_status,
737+ attr,
738+ idx,
739+ " conflict status" ,
740+ )
731741end
732742
733743function _safe_set_result (
@@ -996,10 +1006,10 @@ end
9961006 <:Vector,
9971007 }
9981008 dual_status::MOI.ResultStatusCode,
999- constraint_duals::Pair{Tuple{DataTypeDataType },<:Vector}...;
1000- constraint_basis_status = Pair{Tuple{DataTypeDataType },<:Vector}[],
1009+ constraint_duals::Pair{Tuple{DataType,DataType },<:Vector}...;
1010+ constraint_basis_status = Pair{Tuple{DataType,DataType },<:Vector}[],
10011011 variable_basis_status = MOI.BasisStatusCode[],
1002- constraint_conflict_status = Pair{Tuple{Type,Type },<:Vector}[],
1012+ constraint_conflict_status = Pair{Tuple{DataType,DataType },<:Vector}[],
10031013 )
10041014
10051015Fake the result of a call to `optimize!` in the mock optimizer by storing the
@@ -1053,15 +1063,14 @@ function mock_optimize!(
10531063 MOI. set (mock, MOI. ResultCount (), 1 )
10541064 _set_mock_primal (mock, primal)
10551065 _set_mock_dual (mock, dual_status_constraint_duals... )
1056- for con_basis_pair in constraint_basis_status
1057- F, S = con_basis_pair. first
1066+ for ((F, S), result) in constraint_basis_status
10581067 indices = MOI. get (mock, MOI. ListOfConstraintIndices {F,S} ())
10591068 for (i, ci) in enumerate (indices)
10601069 MOI. set (
10611070 mock,
10621071 MOI. ConstraintBasisStatus (),
10631072 ci,
1064- con_basis_pair . second[i] ,
1073+ result ,
10651074 )
10661075 end
10671076 end
0 commit comments