diff --git a/src/Test/Test.jl b/src/Test/Test.jl index 6a980c4ec8..11449bd297 100644 --- a/src/Test/Test.jl +++ b/src/Test/Test.jl @@ -440,6 +440,107 @@ function _test_attribute_value_type( return end +function _test_variablenames_equal(model, variable_names) + seen_name = Dict(name => false for name in variable_names) + for index in MOI.get(model, MOI.ListOfVariableIndices()) + name = MOI.get(model, MOI.VariableName(), index) + @test haskey(seen_name, name) + @test seen_name[name] == false + seen_name[name] = true + end + @test all(values(seen_name)) + return +end + +function _test_constraintnames_equal(model, constraint_names) + seen_name = Dict(name => false for name in constraint_names) + for (F, S) in MOI.get(model, MOI.ListOfConstraintTypesPresent()) + if F == MOI.SingleVariable + continue + end + for index in MOI.get(model, MOI.ListOfConstraintIndices{F,S}()) + name = MOI.get(model, MOI.ConstraintName(), index) + @test haskey(seen_name, name) + @test seen_name[name] == false + seen_name[name] = true + end + end + @test all(values(seen_name)) + return +end + +""" + util_test_models_equal( + model1::ModelLike, + model2::ModelLike, + variable_names::Vector{String}, + constraint_names::Vector{String}, + single_variable_constraints::Vector{Tuple{String,<:MOI.AbstractScalarSet}} + ) + +Test that `model1` and `model2` are identical using `variable_names` as keys for +the variable names and `constraint_names` as keys for the constraint names. + +In addition, it checks that there is a SingleVariable-in-Set constraint for each +`(name, set)` tuple in `single_variable_constraints`, where `name` is the name +of the corresponding variable. + +!!! warning + This is not a generic function that works in all cases. It is mainly + intended for writing tests in which all variables and constraints have + unique names. +""" +function util_test_models_equal( + model1::MOI.ModelLike, + model2::MOI.ModelLike, + variable_names::Vector{String}, + constraint_names::Vector{String}, + single_variable_constraints::Vector{<:Tuple} = Tuple[], +) + for (name, set) in single_variable_constraints + x1 = MOI.get(model1, MOI.VariableIndex, name) + ci1 = MOI.ConstraintIndex{MOI.SingleVariable,typeof(set)}(x1.value) + @test MOI.is_valid(model1, ci1) + @test MOI.get(model1, MOI.ConstraintSet(), ci1) == set + x2 = MOI.get(model2, MOI.VariableIndex, name) + ci2 = MOI.ConstraintIndex{MOI.SingleVariable,typeof(set)}(x2.value) + @test MOI.is_valid(model2, ci2) + @test MOI.get(model2, MOI.ConstraintSet(), ci2) == set + end + _test_variablenames_equal(model1, variable_names) + _test_variablenames_equal(model2, variable_names) + _test_constraintnames_equal(model1, constraint_names) + _test_constraintnames_equal(model2, constraint_names) + map_2to1 = Dict{MOI.VariableIndex,MOI.VariableIndex}() + for name in variable_names + index2 = MOI.get(model2, MOI.VariableIndex, name) + map_2to1[index2] = MOI.get(model1, MOI.VariableIndex, name) + end + for name in constraint_names + c1 = MOI.get(model1, MOI.ConstraintIndex, name) + c2 = MOI.get(model2, MOI.ConstraintIndex, name) + f1 = MOI.get(model1, MOI.ConstraintFunction(), c1) + f2 = MOI.get(model2, MOI.ConstraintFunction(), c2) + @test isapprox(f1, MOI.Utilities.map_indices(map_2to1, f2)) + @test MOI.get(model1, MOI.ConstraintSet(), c1) == + MOI.get(model2, MOI.ConstraintSet(), c2) + end + attrs1 = MOI.get(model1, MOI.ListOfModelAttributesSet()) + attrs2 = MOI.get(model2, MOI.ListOfModelAttributesSet()) + for attr in union(attrs1, attrs2) + value1 = MOI.get(model1, attr) + value2 = MOI.get(model2, attr) + if value1 isa MOI.AbstractFunction + @test value2 isa MOI.AbstractFunction + @test isapprox(value1, MOI.Utilities.map_indices(map_2to1, value2)) + else + @test !(value2 isa MOI.AbstractFunction) + @test value1 == value2 + end + end + return +end + ### ### Include all the test files! ### diff --git a/src/Utilities/functions.jl b/src/Utilities/functions.jl index 2603c899ad..423f091304 100644 --- a/src/Utilities/functions.jl +++ b/src/Utilities/functions.jl @@ -1,4 +1,11 @@ -using Test +function test_models_equal(args...) + @warn( + "`Utilities.test_models_equal` has been moved to " * + "`Test.util_test_models_equal`", + maxlog = 1, + ) + return MOI.Test.util_test_models_equal(args...) +end variable_function_type(::Type{<:MOI.AbstractScalarSet}) = MOI.SingleVariable variable_function_type(::Type{<:MOI.AbstractVectorSet}) = MOI.VectorOfVariables @@ -862,56 +869,6 @@ function sort_and_compress!(x::AbstractVector, by, keep, combine) return x end -function test_variablenames_equal(model, variablenames) - seen_name = Dict(name => false for name in variablenames) - for index in MOI.get(model, MOI.ListOfVariableIndices()) - vname = MOI.get(model, MOI.VariableName(), index) - if !haskey(seen_name, vname) - error( - "Variable with name $vname present in model but not expected list of variable names.", - ) - end - if seen_name[vname] - error( - "Variable with name $vname present twice in model (shouldn't happen!)", - ) - end - seen_name[vname] = true - end - for (vname, seen) in seen_name - if !seen - error("Did not find variable with name $vname in instance.") - end - end -end -function test_constraintnames_equal(model, constraintnames) - seen_name = Dict(name => false for name in constraintnames) - for (F, S) in MOI.get(model, MOI.ListOfConstraintTypesPresent()) - if F == MOI.SingleVariable - continue - end - for index in MOI.get(model, MOI.ListOfConstraintIndices{F,S}()) - cname = MOI.get(model, MOI.ConstraintName(), index) - if !haskey(seen_name, cname) - error( - "Constraint with name $cname present in model but not expected list of constraint names.", - ) - end - if seen_name[cname] - error( - "Constraint with name $cname present twice in model (shouldn't happen!)", - ) - end - seen_name[cname] = true - end - end - for (cname, seen) in seen_name - if !seen - error("Did not find constraint with name $cname in instance.") - end - end -end - """ all_coefficients(p::Function, f::MOI.AbstractFunction) @@ -980,81 +937,6 @@ function Base.isone( return isone(MOI.constant(f)) && _is_constant(canonical(f)) end -""" - test_models_equal( - model1::ModelLike, - model2::ModelLike, - variablenames::Vector{String}, - constraintnames::Vector{String}, - single_variable_constraints::Vector{Tuple{String,<:MOI.AbstractScalarSet}} - ) - -Test that `model1` and `model2` are identical using `variablenames` as as keys -for the variable names and `constraintnames` as keys for the constraint names. - -In addition, it checks that there is a SingleVariable-in-Set constraint for each -`(name, set)` tuple in `single_variable_constraints`, where `name` is the name -of the corresponding variable. - -Uses `Base.Test` macros. -""" -function test_models_equal( - model1::MOI.ModelLike, - model2::MOI.ModelLike, - variablenames::Vector{String}, - constraintnames::Vector{String}, - single_variable_constraints::Vector{<:Tuple} = Tuple[], -) - for (x_name, set) in single_variable_constraints - x1 = MOI.get(model1, MOI.VariableIndex, x_name) - ci1 = MOI.ConstraintIndex{MOI.SingleVariable,typeof(set)}(x1.value) - @test MOI.is_valid(model1, ci1) - @test MOI.get(model1, MOI.ConstraintSet(), ci1) == set - x2 = MOI.get(model2, MOI.VariableIndex, x_name) - ci2 = MOI.ConstraintIndex{MOI.SingleVariable,typeof(set)}(x2.value) - @test MOI.is_valid(model2, ci2) - @test MOI.get(model2, MOI.ConstraintSet(), ci2) == set - end - # TODO: give test-friendly feedback instead of errors? - test_variablenames_equal(model1, variablenames) - test_variablenames_equal(model2, variablenames) - test_constraintnames_equal(model1, constraintnames) - test_constraintnames_equal(model2, constraintnames) - - variablemap_2to1 = Dict{VI,VI}() - for vname in variablenames - index1 = MOI.get(model1, VI, vname) - index2 = MOI.get(model2, VI, vname) - variablemap_2to1[index2] = index1 - end - - for cname in constraintnames - index1 = MOI.get(model1, CI, cname) - index2 = MOI.get(model2, CI, cname) - f1 = MOI.get(model1, MOI.ConstraintFunction(), index1) - f2 = MOI.get(model2, MOI.ConstraintFunction(), index2) - s1 = MOI.get(model1, MOI.ConstraintSet(), index1) - s2 = MOI.get(model2, MOI.ConstraintSet(), index2) - @test isapprox(f1, map_indices(variablemap_2to1, f2)) - @test s1 == s2 - end - attrs1 = MOI.get(model1, MOI.ListOfModelAttributesSet()) - attrs2 = MOI.get(model2, MOI.ListOfModelAttributesSet()) - attr_list = attrs1 ∪ attrs2 - for attr in attr_list - value1 = MOI.get(model1, attr) - value2 = MOI.get(model2, attr) - if value1 isa MOI.AbstractFunction - @test value2 isa MOI.AbstractFunction - @test isapprox(value1, map_indices(variablemap_2to1, value2)) - else - @test !(value2 isa MOI.AbstractFunction) - @test value1 == value2 - end - end - return -end - _keep_all(keep::Function, v::MOI.VariableIndex) = keep(v) function _keep_all(keep::Function, t::MOI.ScalarAffineTerm) diff --git a/test/Bridges/Constraint/geomean.jl b/test/Bridges/Constraint/geomean.jl index a562275201..2154768924 100644 --- a/test/Bridges/Constraint/geomean.jl +++ b/test/Bridges/Constraint/geomean.jl @@ -96,7 +96,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -135,7 +135,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -273,7 +273,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_2() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -322,7 +322,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_2() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -416,7 +416,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_3() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, ["t", "x"], @@ -455,7 +455,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_3() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["t", "x"], diff --git a/test/Bridges/Constraint/geomean_to_relentr.jl b/test/Bridges/Constraint/geomean_to_relentr.jl index 04c8a80a67..aa56490362 100644 --- a/test/Bridges/Constraint/geomean_to_relentr.jl +++ b/test/Bridges/Constraint/geomean_to_relentr.jl @@ -106,7 +106,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, vcat(var_names, "aux"), @@ -139,7 +139,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -258,7 +258,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_2() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, vcat(var_names, "aux"), @@ -300,7 +300,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_2() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -409,7 +409,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_3() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, vcat(var_names, "aux"), @@ -442,7 +442,7 @@ function test_conic_GeometricMeanCone_VectorAffineFunction_3() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, diff --git a/test/Bridges/Constraint/indicator_sos.jl b/test/Bridges/Constraint/indicator_sos.jl index 1495a0e497..6eaca02550 100644 --- a/test/Bridges/Constraint/indicator_sos.jl +++ b/test/Bridges/Constraint/indicator_sos.jl @@ -263,7 +263,7 @@ function test_model_equality() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -292,7 +292,7 @@ function test_model_equality() maxobjective: z """ MOI.Utilities.loadfromstring!(model, sbridged) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["z", "x"], diff --git a/test/Bridges/Constraint/norm_spec_nuc_to_psd.jl b/test/Bridges/Constraint/norm_spec_nuc_to_psd.jl index f5e554177d..928e558823 100644 --- a/test/Bridges/Constraint/norm_spec_nuc_to_psd.jl +++ b/test/Bridges/Constraint/norm_spec_nuc_to_psd.jl @@ -88,7 +88,7 @@ function test_NormSpectral() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, var_names, ["psd"]) + MOI.Test.util_test_models_equal(mock, model, var_names, ["psd"]) spec = MOI.get( bridged_mock, MOI.ListOfConstraintIndices{ @@ -106,7 +106,7 @@ function test_NormSpectral() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(bridged_mock, model, var_names, ["spec"]) + MOI.Test.util_test_models_equal(bridged_mock, model, var_names, ["spec"]) ci = first( MOI.get( bridged_mock, @@ -234,7 +234,7 @@ function test_NormNuclear() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, var_names, ["greater", "psd"]) + MOI.Test.util_test_models_equal(mock, model, var_names, ["greater", "psd"]) MOI.set( bridged_mock, MOI.VariableName(), @@ -258,7 +258,7 @@ function test_NormNuclear() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(bridged_mock, model, ["t"], ["nuc"]) + MOI.Test.util_test_models_equal(bridged_mock, model, ["t"], ["nuc"]) ci = first( MOI.get( bridged_mock, diff --git a/test/Bridges/Constraint/norm_to_lp.jl b/test/Bridges/Constraint/norm_to_lp.jl index fb18f5a4b6..4515700e34 100644 --- a/test/Bridges/Constraint/norm_to_lp.jl +++ b/test/Bridges/Constraint/norm_to_lp.jl @@ -92,7 +92,7 @@ function test_NormInfinity_1() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -133,7 +133,7 @@ function test_NormInfinity_1() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -216,7 +216,7 @@ function test_conic_NormInfinityCone_3() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -255,7 +255,7 @@ function test_conic_NormInfinityCone_3() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -372,7 +372,7 @@ function test_conic_NormOneCone_VectorOfVariables() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, [var_names; "u"; "v"], @@ -407,7 +407,7 @@ function test_conic_NormOneCone_VectorOfVariables() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -484,7 +484,7 @@ function test_conic_NormOneCone() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names_all, @@ -522,7 +522,7 @@ function test_conic_NormOneCone() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, diff --git a/test/Bridges/Constraint/relentr_to_exp.jl b/test/Bridges/Constraint/relentr_to_exp.jl index 49bb24b680..f2ca0adf5d 100644 --- a/test/Bridges/Constraint/relentr_to_exp.jl +++ b/test/Bridges/Constraint/relentr_to_exp.jl @@ -93,7 +93,7 @@ function test_RelativeEntropy() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, vcat(var_names, "y1", "y2"), @@ -116,7 +116,7 @@ function test_RelativeEntropy() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(bridged_mock, model, var_names, ["relentr"]) + MOI.Test.util_test_models_equal(bridged_mock, model, var_names, ["relentr"]) ci = first( MOI.get( bridged_mock, diff --git a/test/Bridges/Constraint/semi_to_binary.jl b/test/Bridges/Constraint/semi_to_binary.jl index 88e8eb0028..5d53db8f28 100644 --- a/test/Bridges/Constraint/semi_to_binary.jl +++ b/test/Bridges/Constraint/semi_to_binary.jl @@ -176,7 +176,7 @@ function test_SemiToBinary() MOI.empty!(bridged_mock) @test MOI.is_empty(bridged_mock) MOI.Utilities.loadfromstring!(bridged_mock, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["x", "y"], @@ -221,7 +221,7 @@ function test_SemiToBinary() ), ) MOI.set(mock, MOI.ConstraintName(), ci, "cup") - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, modelb, ["x", "y", "z"], diff --git a/test/Bridges/Constraint/zero_one.jl b/test/Bridges/Constraint/zero_one.jl index ee9a28682d..b34f50de98 100644 --- a/test/Bridges/Constraint/zero_one.jl +++ b/test/Bridges/Constraint/zero_one.jl @@ -107,14 +107,14 @@ function test_ZeroOne() MOI.empty!(bridged_mock) @test MOI.is_empty(bridged_mock) MOI.Utilities.loadfromstring!(bridged_mock, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["x", "y"], String[], [("y", MOI.EqualTo{Float64}(1.0)), ("x", MOI.ZeroOne())], ) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, modelb, ["x", "y"], diff --git a/test/Bridges/Objective/slack.jl b/test/Bridges/Objective/slack.jl index c4bdb0c986..8d29df1b1d 100644 --- a/test/Bridges/Objective/slack.jl +++ b/test/Bridges/Objective/slack.jl @@ -266,7 +266,7 @@ function test_original() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, [var_names; "s"], @@ -285,7 +285,7 @@ function test_original() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -338,7 +338,7 @@ function test_original() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, [var_names; "s"], @@ -356,7 +356,7 @@ function test_original() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, diff --git a/test/Bridges/Variable/flip_sign.jl b/test/Bridges/Variable/flip_sign.jl index 1a78f6bc92..512e92ff63 100644 --- a/test/Bridges/Variable/flip_sign.jl +++ b/test/Bridges/Variable/flip_sign.jl @@ -112,7 +112,7 @@ function test_NonposToNonneg() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -128,7 +128,7 @@ function test_NonposToNonneg() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["x", "z", "w", "v"], diff --git a/test/Bridges/Variable/free.jl b/test/Bridges/Variable/free.jl index ef850a7af1..6c397cc8f7 100644 --- a/test/Bridges/Variable/free.jl +++ b/test/Bridges/Variable/free.jl @@ -85,7 +85,7 @@ function test_modification_multirow_vectoraffine_nonpos() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, var_names, ["nonneg", "c"]) + MOI.Test.util_test_models_equal(mock, model, var_names, ["nonneg", "c"]) s = """ variables: x c: [4.0x + -1.0, 3.0x + -1.0] in MathOptInterface.Nonpositives(2) @@ -93,7 +93,7 @@ function test_modification_multirow_vectoraffine_nonpos() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(bridged_mock, model, ["x"], ["c"]) + MOI.Test.util_test_models_equal(bridged_mock, model, ["x"], ["c"]) return end @@ -282,7 +282,7 @@ function test_linear_transform() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -298,7 +298,7 @@ function test_linear_transform() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, diff --git a/test/Bridges/Variable/rsoc_to_psd.jl b/test/Bridges/Variable/rsoc_to_psd.jl index 31eb970ef0..084939a0e3 100644 --- a/test/Bridges/Variable/rsoc_to_psd.jl +++ b/test/Bridges/Variable/rsoc_to_psd.jl @@ -71,7 +71,7 @@ function test_RSOC_of_dimension_2() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, var_names, ["cab", "c"]) + MOI.Test.util_test_models_equal(mock, model, var_names, ["cab", "c"]) var_names = ["x", "y"] MOI.set( bridged_mock, @@ -88,7 +88,7 @@ function test_RSOC_of_dimension_2() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, @@ -181,7 +181,7 @@ function test_RSOC4() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, var_names, @@ -223,7 +223,7 @@ function test_RSOC4() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, diff --git a/test/Bridges/Variable/rsoc_to_soc.jl b/test/Bridges/Variable/rsoc_to_soc.jl index 2cc5ee97ec..7d5b87a852 100644 --- a/test/Bridges/Variable/rsoc_to_soc.jl +++ b/test/Bridges/Variable/rsoc_to_soc.jl @@ -66,7 +66,7 @@ function test_rotatedsoc4() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, var_names, ["soc", "c"]) + MOI.Test.util_test_models_equal(mock, model, var_names, ["soc", "c"]) var_names = ["t", "u", "x", "y"] MOI.set( bridged_mock, @@ -92,7 +92,7 @@ function test_rotatedsoc4() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, diff --git a/test/Bridges/Variable/soc_to_rsoc.jl b/test/Bridges/Variable/soc_to_rsoc.jl index 2c2eb61721..fc10f86049 100644 --- a/test/Bridges/Variable/soc_to_rsoc.jl +++ b/test/Bridges/Variable/soc_to_rsoc.jl @@ -67,7 +67,7 @@ function test_soc1v() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, var_names, ["rsoc", "ceq"]) + MOI.Test.util_test_models_equal(mock, model, var_names, ["rsoc", "ceq"]) var_names = ["x", "y", "z"] MOI.set( bridged_mock, @@ -90,7 +90,7 @@ function test_soc1v() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, var_names, diff --git a/test/Bridges/Variable/vectorize.jl b/test/Bridges/Variable/vectorize.jl index 1e58e1e84a..2a5b31c4d3 100644 --- a/test/Bridges/Variable/vectorize.jl +++ b/test/Bridges/Variable/vectorize.jl @@ -62,7 +62,7 @@ function test_get_scalar_constraint() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, ["y"], ["cy", "c"]) + MOI.Test.util_test_models_equal(mock, model, ["y"], ["cy", "c"]) end @testset "Bridged model" begin MOI.set(bridged_mock, MOI.VariableName(), x, "x") @@ -73,7 +73,7 @@ function test_get_scalar_constraint() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["x"], @@ -203,7 +203,7 @@ function test_exp3_with_add_constrained_variable_y() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal(mock, model, ["x", "z"], ["zc", "xc", "ec"]) + MOI.Test.util_test_models_equal(mock, model, ["x", "z"], ["zc", "xc", "ec"]) MOI.set(bridged_mock, MOI.VariableName(), y, "y") s = """ @@ -214,7 +214,7 @@ function test_exp3_with_add_constrained_variable_y() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["x", "y"], diff --git a/test/Bridges/Variable/zeros.jl b/test/Bridges/Variable/zeros.jl index fddc12b412..aa2aac8d23 100644 --- a/test/Bridges/Variable/zeros.jl +++ b/test/Bridges/Variable/zeros.jl @@ -46,7 +46,7 @@ function test_zeros() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( bridged_mock, model, ["x", "y", "z"], @@ -165,7 +165,7 @@ function test_zeros() """ model = MOI.Utilities.Model{Float64}() MOI.Utilities.loadfromstring!(model, s) - MOI.Utilities.test_models_equal( + MOI.Test.util_test_models_equal( mock, model, ["x"], diff --git a/test/FileFormats/CBF/CBF.jl b/test/FileFormats/CBF/CBF.jl index b01eec48fd..3612ba75a8 100644 --- a/test/FileFormats/CBF/CBF.jl +++ b/test/FileFormats/CBF/CBF.jl @@ -72,7 +72,7 @@ function _test_write_then_read(model_string::String) MOI.read_from_file(model2, CBF_TEST_FILE) _set_var_and_con_names(model2) - return MOIU.test_models_equal(model1, model2, args...) + return MOI.Test.util_test_models_equal(model1, model2, args...) end function _test_read(filename::String, model_string::String) @@ -84,7 +84,7 @@ function _test_read(filename::String, model_string::String) MOI.read_from_file(model2, filename) _set_var_and_con_names(model2) - return MOIU.test_models_equal(model1, model2, args...) + return MOI.Test.util_test_models_equal(model1, model2, args...) end function test_show() diff --git a/test/FileFormats/MOF/MOF.jl b/test/FileFormats/MOF/MOF.jl index 9d8e5f4718..fb50c0e66b 100644 --- a/test/FileFormats/MOF/MOF.jl +++ b/test/FileFormats/MOF/MOF.jl @@ -41,7 +41,7 @@ function _test_model_equality(model_string, variables, constraints; suffix = "") MOI.write_to_file(model, TEST_MOF_FILE * suffix) model_2 = MOF.Model() MOI.read_from_file(model_2, TEST_MOF_FILE * suffix) - MOIU.test_models_equal(model, model_2, variables, constraints) + MOI.Test.util_test_models_equal(model, model_2, variables, constraints) return _validate(TEST_MOF_FILE * suffix) end @@ -319,7 +319,7 @@ function test_empty_model() MOI.write_to_file(model, TEST_MOF_FILE) model_2 = MOF.Model() MOI.read_from_file(model_2, TEST_MOF_FILE) - return MOIU.test_models_equal(model, model_2, String[], String[]) + return MOI.Test.util_test_models_equal(model, model_2, String[], String[]) end function test_FEASIBILITY_SENSE() @@ -330,7 +330,7 @@ function test_FEASIBILITY_SENSE() MOI.write_to_file(model, TEST_MOF_FILE) model_2 = MOF.Model() MOI.read_from_file(model_2, TEST_MOF_FILE) - return MOIU.test_models_equal(model, model_2, ["x"], String[]) + return MOI.Test.util_test_models_equal(model, model_2, ["x"], String[]) end function test_empty_function_term() @@ -346,7 +346,7 @@ function test_empty_function_term() MOI.write_to_file(model, TEST_MOF_FILE) model_2 = MOF.Model() MOI.read_from_file(model_2, TEST_MOF_FILE) - return MOIU.test_models_equal(model, model_2, ["x"], ["c"]) + return MOI.Test.util_test_models_equal(model, model_2, ["x"], ["c"]) end function test_min_objective() diff --git a/test/FileFormats/MPS/MPS.jl b/test/FileFormats/MPS/MPS.jl index 923b012a3d..5ddf39ff71 100644 --- a/test/FileFormats/MPS/MPS.jl +++ b/test/FileFormats/MPS/MPS.jl @@ -14,7 +14,12 @@ function _test_model_equality(model_string, variables, constraints) MOI.write_to_file(model, MPS_TEST_FILE) model_2 = MPS.Model() MOI.read_from_file(model_2, MPS_TEST_FILE) - return MOIU.test_models_equal(model, model_2, variables, constraints) + return MOI.Test.util_test_models_equal( + model, + model_2, + variables, + constraints, + ) end function test_show() @@ -136,7 +141,7 @@ z in ZeroOne() """, ) MOI.set(model_2, MOI.Name(), "stacked_data") - return MOIU.test_models_equal( + return MOI.Test.util_test_models_equal( model, model_2, ["x", "y", "z"], @@ -162,7 +167,7 @@ con1: 1.0 * x >= 1.0 x in Integer() """, ) - return MOIU.test_models_equal( + return MOI.Test.util_test_models_equal( model, model_2, ["x"], @@ -316,7 +321,7 @@ x >= 1.0 MOI.write_to_file(model, MPS_TEST_FILE) model_2 = MPS.Model() MOI.read_from_file(model_2, MPS_TEST_FILE) - return MOIU.test_models_equal( + return MOI.Test.util_test_models_equal( model, model_2, ["x", "y", "z"], @@ -343,7 +348,7 @@ y <= 0.0 MOI.write_to_file(model, MPS_TEST_FILE) model_2 = MPS.Model() MOI.read_from_file(model_2, MPS_TEST_FILE) - return MOIU.test_models_equal( + return MOI.Test.util_test_models_equal( model, model_2, ["x", "y", "z"], @@ -371,7 +376,7 @@ w in Interval(4.0, 5.0) MOI.write_to_file(model, MPS_TEST_FILE) model_2 = MPS.Model() MOI.read_from_file(model_2, MPS_TEST_FILE) - return MOIU.test_models_equal( + return MOI.Test.util_test_models_equal( model, model_2, ["w", "x", "y", "z"], diff --git a/test/FileFormats/SDPA/SDPA.jl b/test/FileFormats/SDPA/SDPA.jl index cc556acf9b..cf7bc82c8d 100644 --- a/test/FileFormats/SDPA/SDPA.jl +++ b/test/FileFormats/SDPA/SDPA.jl @@ -69,7 +69,7 @@ function _test_write_then_read(model_string::String) MOI.set(model2, attr, MOIU.operate(-, Float64, obj)) end - return MOIU.test_models_equal(model1, model2, args...) + return MOI.Test.util_test_models_equal(model1, model2, args...) end function _test_read(filename::String, model_string::String) @@ -79,7 +79,7 @@ function _test_read(filename::String, model_string::String) model2 = SDPA.Model() MOI.read_from_file(model2, filename) _set_var_and_con_names(model2) - return MOIU.test_models_equal(model1, model2, args...) + return MOI.Test.util_test_models_equal(model1, model2, args...) end function test_show() diff --git a/test/Utilities/parser.jl b/test/Utilities/parser.jl index a3a8096e1d..2e284cdf93 100644 --- a/test/Utilities/parser.jl +++ b/test/Utilities/parser.jl @@ -111,7 +111,7 @@ function test_one_variable() model2 = MOIU.Model{Float64}() MOIU.loadfromstring!(model2, s) - MOIU.test_models_equal( + MOI.Test.util_test_models_equal( model, model2, ["x"], @@ -163,7 +163,7 @@ function test_linear_constraints() model2 = MOIU.Model{Float64}() MOIU.loadfromstring!(model2, s) - MOIU.test_models_equal( + MOI.Test.util_test_models_equal( model, model2, ["x", "y"], @@ -194,7 +194,7 @@ function test_minimization_linear_objective() model2 = MOIU.Model{Float64}() MOIU.loadfromstring!(model2, s) - MOIU.test_models_equal(model, model2, ["x", "y"], String[]) + MOI.Test.util_test_models_equal(model, model2, ["x", "y"], String[]) return end @@ -220,7 +220,7 @@ function test_maximization_linear_objective() model2 = MOIU.Model{Float64}() MOIU.loadfromstring!(model2, s) - MOIU.test_models_equal(model, model2, ["x", "y"], String[]) + MOI.Test.util_test_models_equal(model, model2, ["x", "y"], String[]) return end @@ -268,7 +268,7 @@ function test_SecondOrderCone_constraints() model2 = MOIU.Model{Float64}() MOIU.loadfromstring!(model2, s) - MOIU.test_models_equal( + MOI.Test.util_test_models_equal( model, model2, ["x", "y", "z"], diff --git a/test/deprecate.jl b/test/deprecate.jl index 68d0d9729a..8785264cc8 100644 --- a/test/deprecate.jl +++ b/test/deprecate.jl @@ -84,6 +84,16 @@ function test_copy_to_copy_names() return end +function test_test_models_equal() + dest = MOI.Utilities.Model{Float64}() + src = MOI.Utilities.Model{Float64}() + @test_logs( + (:warn,), + MOI.Utilities.test_models_equal(dest, src, String[], String[]), + ) + return +end + function test_IndexMap() @test_logs (:warn,) MOI.IndexMap(1) return