Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -112,5 +112,6 @@ pmap(test_one_problem, list_problems)

include("test-scalable.jl")
include("test-meta-fields.jl")
include("test-generate-meta.jl")

rmprocs()
60 changes: 60 additions & 0 deletions test/test-generate-meta.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using Distributed, NLPModels, NLPModelsJuMP, OptimizationProblems, Test
import ADNLPModels

include(joinpath(@__DIR__, "utils.jl"))

Comment on lines +1 to +5
# All 22 keys that every meta Dict must contain.
const _ALL_META_KEYS = [
":nvar",
":variable_nvar",
":ncon",
":variable_ncon",
":minimize",
":name",
":has_equalities_only",
":has_inequalities_only",
":has_bounds",
":has_fixed_variables",
":objtype",
":contype",
":best_known_lower_bound",
":best_known_upper_bound",
":is_feasible",
":defined_everywhere",
":origin",
":url",
":notes",
":origin_notes",
":reference",
":lib",
]

@testset "generate_meta: all 22 meta keys are emitted" begin
nlp = OptimizationProblems.ADNLPProblems.arwhead()
str = generate_meta(nlp, "arwhead")
for key in _ALL_META_KEYS
@test occursin(key, str)
end
Comment on lines +35 to +37
end

@testset "generate_meta: six getter functions are emitted" begin
nlp = OptimizationProblems.ADNLPProblems.arwhead()
str = generate_meta(nlp, "arwhead")
for suffix in ("nvar", "ncon", "nlin", "nnln", "nequ", "nineq")
@test occursin("get_arwhead_$suffix", str)
end
end

@testset "generate_meta: output is parseable Julia" begin
nlp = OptimizationProblems.ADNLPProblems.arwhead()
str = generate_meta(nlp, "arwhead")
@test Meta.parse("begin\n$str\nend") isa Expr
end

@testset "generate_meta: constrained problem emits all 22 keys" begin
nlp = OptimizationProblems.ADNLPProblems.hs7()
str = generate_meta(nlp, "hs7")
for key in _ALL_META_KEYS
@test occursin(key, str)
end
Comment on lines +57 to +59
end
7 changes: 6 additions & 1 deletion test/utils.jl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using ADNLPModels, Distributed, NLPModels, NLPModelsJuMP, OptimizationProblems, Test

path = dirname(@__FILE__)
include(joinpath(path, "test-utils.jl"))
@isdefined(ndef) || include(joinpath(path, "test-utils.jl"))

# create_meta_files(String["catmix", "gasoil", "glider", "methanol", "pinene", "rocket", "steering"])
function create_meta_files(pb_names::Vector{String}; kwargs...)
Expand Down Expand Up @@ -106,6 +106,11 @@ function generate_meta(
:is_feasible => $(feasible),
:defined_everywhere => $(missing),
:origin => :$(origin),
:url => \"\",
:notes => raw\"\"\"\"\"\",
:origin_notes => raw\"\"\"\"\"\",
:reference => raw\"\"\"\"\"\",
:lib => \"\",
)
get_$(name)_nvar(; n::Integer = default_nvar, kwargs...) = $nvar_formula
get_$(name)_ncon(; n::Integer = default_nvar, kwargs...) = $ncon_formula
Expand Down
Loading