Skip to content

Commit

Permalink
Fix UnivariateFeature and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
giopaglia committed Aug 6, 2023
1 parent 71823e8 commit 40ce6fa
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
8 changes: 6 additions & 2 deletions src/logisets/scalar/dataset-bindings.jl
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,12 @@ function scalarlogiset(
conditions = naturalconditions(dataset, features, featvaltype)
features = unique(feature.(conditions))
else
error("Unexpected case (TODO)." *
"features = $(typeof(features)), conditions = $(typeof(conditions))")
if !all(f->f isa VarFeature, features) # or AbstractFeature
error("Unexpected case (TODO). " *
"features = $(typeof(features)), conditions = $(typeof(conditions)). " *
"Suspects: $(filter(f->!(f isa VarFeature), features))"
)
end
end
end

Expand Down
9 changes: 9 additions & 0 deletions src/logisets/scalar/var-features.jl
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,15 @@ See also [`Interval`](@ref),
struct UnivariateFeature{U} <: AbstractUnivariateFeature{U}
i_variable::Integer
f::Function
function UnivariateFeature{U}(feat::UnivariateFeature) where {U<:Real}
return new{U}(i_variable(f), feat.f)
end
function UnivariateFeature{U}(i_variable::Integer, f::Function) where {U<:Real}
return new{U}(i_variable, f)
end
function UnivariateFeature(i_variable::Integer, f::Function)
return UnivariateFeature{DEFAULT_VARFEATVALTYPE}(i_variable, f)
end
end
featurename(f::UnivariateFeature) = string(f.f)

Expand Down
6 changes: 3 additions & 3 deletions test/logisets/multilogisets.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ multilogiset = @test_nowarn scalarlogiset(multidataset)

generic_features = collect(Iterators.flatten([[UnivariateMax(i_var), UnivariateMin(i_var)] for i_var in 1:_nvars]))
metaconditions = [ScalarMetaCondition(feature, >) for feature in generic_features]
multilogiset = @test_logs (:warn,) scalarlogiset(multidataset; use_full_memoization = false, use_onestep_memoization = true, conditions = metaconditions, relations = multirelations)
multilogiset = @test_logs (:warn,) scalarlogiset(multidataset; use_full_memoization = true, use_onestep_memoization = true, conditions = metaconditions, relations = multirelations)
multilogiset = @test_logs min_level=Logging.Error scalarlogiset(multidataset; use_full_memoization = false, use_onestep_memoization = true, conditions = metaconditions, relations = multirelations)
multilogiset = @test_logs min_level=Logging.Error scalarlogiset(multidataset; use_full_memoization = true, use_onestep_memoization = true, conditions = metaconditions, relations = multirelations)

metaconditions = vcat([[ScalarMetaCondition(feature, >), ScalarMetaCondition(feature, <)] for feature in generic_features]...)
complete_supported_multilogiset = @test_logs (:warn,) scalarlogiset(multidataset; use_full_memoization = true, use_onestep_memoization = true, conditions = metaconditions, relations = multirelations)
complete_supported_multilogiset = @test_logs min_level=Logging.Error scalarlogiset(multidataset; use_full_memoization = true, use_onestep_memoization = true, conditions = metaconditions, relations = multirelations)


@test_nowarn slicedataset(multilogiset, [2,1])
Expand Down

0 comments on commit 40ce6fa

Please sign in to comment.