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

Commit

Permalink
Merge pull request #24 from JuliaML/obsdim
Browse files Browse the repository at this point in the history
deprecate obs_dim in favour of convert
  • Loading branch information
Evizero committed Apr 6, 2017
2 parents a14b4e6 + 0ba08eb commit 984724e
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 40 deletions.
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

0 comments on commit 984724e

Please sign in to comment.