Skip to content
This repository has been archived by the owner on May 23, 2022. It is now read-only.

deprecate obs_dim in favour of convert #24

Merged
merged 1 commit into from
Apr 6, 2017
Merged
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
21 changes: 11 additions & 10 deletions src/LearnBase.jl
Original file line number Diff line number Diff line change
Expand Up @@ -371,14 +371,13 @@ module ObsDim
const First = Constant{1}
end

# interval convenience function; not exported
obs_dim(dim) = throw(ArgumentError("Unknown way to specify a obsdim: $dim"))
obs_dim(dim::ObsDimension) = dim
obs_dim(::Void) = ObsDim.Undefined()
obs_dim(dim::Int) = ObsDim.Constant(dim)
obs_dim(dim::String) = obs_dim(Symbol(lowercase(dim)))
obs_dim(dims::Tuple) = map(obs_dim, dims)
function obs_dim(dim::Symbol)
Base.convert(::Type{ObsDimension}, dim) = throw(ArgumentError("Unknown way to specify a obsdim: $dim"))
Base.convert(::Type{ObsDimension}, dim::ObsDimension) = dim
Base.convert(::Type{ObsDimension}, ::Void) = ObsDim.Undefined()
Base.convert(::Type{ObsDimension}, dim::Int) = ObsDim.Constant(dim)
Base.convert(::Type{ObsDimension}, dim::String) = convert(ObsDimension, Symbol(lowercase(dim)))
Base.convert(::Type{ObsDimension}, dims::Tuple) = map(d->convert(ObsDimension, d), dims)
function Base.convert(::Type{ObsDimension}, dim::Symbol)
if dim == :first || dim == :begin
ObsDim.First()
elseif dim == Symbol("end") || dim == :last
Expand All @@ -390,8 +389,10 @@ function obs_dim(dim::Symbol)
end
end

@noinline default_obsdim(data) = ObsDim.Undefined()
@noinline default_obsdim(A::AbstractArray) = ObsDim.Last()
@deprecate obs_dim(dim) convert(ObsDimension, dim)

default_obsdim(data) = ObsDim.Undefined()
default_obsdim(A::AbstractArray) = ObsDim.Last()
default_obsdim(tup::Tuple) = map(default_obsdim, tup)


Expand Down
63 changes: 33 additions & 30 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -254,36 +254,39 @@ end
end

@testset "obs_dim helper constructor" begin
@test_throws ArgumentError LearnBase.obs_dim("test")
@test_throws ArgumentError LearnBase.obs_dim(1.0)

@test @inferred(LearnBase.obs_dim(ObsDim.First())) === ObsDim.First()
@test @inferred(LearnBase.obs_dim(ObsDim.First())) === ObsDim.Constant(1)
@test @inferred(LearnBase.obs_dim(ObsDim.Last())) === ObsDim.Last()
@test @inferred(LearnBase.obs_dim(ObsDim.Constant(2))) === ObsDim.Constant(2)

@test_throws ErrorException @inferred LearnBase.obs_dim(1)
@test_throws ErrorException @inferred LearnBase.obs_dim(6)
@test LearnBase.obs_dim(1) === ObsDim.First()
@test LearnBase.obs_dim(2) === ObsDim.Constant(2)
@test LearnBase.obs_dim(6) === ObsDim.Constant(6)
@test_throws ErrorException @inferred LearnBase.obs_dim(:first)
@test_throws ErrorException @inferred LearnBase.obs_dim("first")
@test LearnBase.obs_dim((:first,:last)) === (ObsDim.First(),ObsDim.Last())
@test LearnBase.obs_dim(:first) === ObsDim.First()
@test LearnBase.obs_dim(:begin) === ObsDim.First()
@test LearnBase.obs_dim("first") === ObsDim.First()
@test LearnBase.obs_dim("BEGIN") === ObsDim.First()
@test LearnBase.obs_dim(:end) === ObsDim.Last()
@test LearnBase.obs_dim(:last) === ObsDim.Last()
@test LearnBase.obs_dim("End") === ObsDim.Last()
@test LearnBase.obs_dim("LAST") === ObsDim.Last()
@test LearnBase.obs_dim(:nothing) === ObsDim.Undefined()
@test LearnBase.obs_dim(:none) === ObsDim.Undefined()
@test LearnBase.obs_dim(:na) === ObsDim.Undefined()
@test LearnBase.obs_dim(:null) === ObsDim.Undefined()
@test LearnBase.obs_dim(:undefined) === ObsDim.Undefined()
@test LearnBase.obs_dim(nothing) === ObsDim.Undefined()
@test_throws ArgumentError convert(LearnBase.ObsDimension, "test")
@test_throws ArgumentError convert(LearnBase.ObsDimension, 1.0)

@test @inferred(convert(LearnBase.ObsDimension, ObsDim.First())) === ObsDim.First()
@test @inferred(convert(LearnBase.ObsDimension, ObsDim.First())) === ObsDim.Constant(1)
@test @inferred(convert(LearnBase.ObsDimension, ObsDim.Last())) === ObsDim.Last()
@test @inferred(convert(LearnBase.ObsDimension, ObsDim.Constant(2))) === ObsDim.Constant(2)

@test_throws ErrorException @inferred convert(LearnBase.ObsDimension, 1)
@test_throws ErrorException @inferred convert(LearnBase.ObsDimension, 6)
@test convert(LearnBase.ObsDimension, 1) === ObsDim.First()
@test convert(LearnBase.ObsDimension, 2) === ObsDim.Constant(2)
@test convert(LearnBase.ObsDimension, 6) === ObsDim.Constant(6)
@test_throws ErrorException @inferred convert(LearnBase.ObsDimension, :first)
@test_throws ErrorException @inferred convert(LearnBase.ObsDimension, "first")
@test convert(LearnBase.ObsDimension, (:first,:last)) === (ObsDim.First(),ObsDim.Last())
@test convert(LearnBase.ObsDimension, :first) === ObsDim.First()
@test convert(LearnBase.ObsDimension, :begin) === ObsDim.First()
@test convert(LearnBase.ObsDimension, "first") === ObsDim.First()
@test convert(LearnBase.ObsDimension, "BEGIN") === ObsDim.First()
@test convert(LearnBase.ObsDimension, :end) === ObsDim.Last()
@test convert(LearnBase.ObsDimension, :last) === ObsDim.Last()
@test convert(LearnBase.ObsDimension, "End") === ObsDim.Last()
@test convert(LearnBase.ObsDimension, "LAST") === ObsDim.Last()
@test convert(LearnBase.ObsDimension, :nothing) === ObsDim.Undefined()
@test convert(LearnBase.ObsDimension, :none) === ObsDim.Undefined()
@test convert(LearnBase.ObsDimension, :na) === ObsDim.Undefined()
@test convert(LearnBase.ObsDimension, :null) === ObsDim.Undefined()
@test convert(LearnBase.ObsDimension, :undefined) === ObsDim.Undefined()
@test convert(LearnBase.ObsDimension, nothing) === ObsDim.Undefined()

# TODO: remove test after deprecation phase
@test LearnBase.obs_dim(:last) === ObsDim.Last()
end

immutable SomeType end
Expand Down