Skip to content

Commit 2349016

Browse files
committed
more tests to increase utilities.jl coverage
1 parent 118455c commit 2349016

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

src/arrays.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ function Base.Broadcast.broadcasted(
135135
u::UniFinArr{S,V,R,P,N},
136136
cv::CategoricalValue) where {S,V,R,P,N}
137137

138-
cv in classes(u) || _err_missing_class(cv)
138+
cv in classes(u) || throw(err_missing_class(cv))
139139

140140
f() = zeros(P, size(u)) #default caller function
141141

@@ -161,7 +161,7 @@ function Base.Broadcast.broadcasted(
161161
"Arrays could not be broadcast to a common size; "*
162162
"got a dimension with lengths $(length(u)) and $(length(v))"))
163163
for cv in v
164-
ismissing(cv) || cv in classes(u) || _err_missing_class(cv)
164+
ismissing(cv) || cv in classes(u) || throw(err_missing_class(cv))
165165
end
166166

167167
# will use linear indexing:

src/utilities.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,11 @@ decoder(x) = CategoricalDecoder(classes(x))
140140

141141
## TRANSFORMING BETWEEN CATEGORICAL ELEMENTS AND RAW VALUES
142142

143-
_err_missing_class(c) = throw(DomainError(
144-
"Value `$c` not in pool"))
143+
err_missing_class(c) = DomainError("Value `$c` not in pool")
145144

146145
function _transform(pool, x)
147146
ismissing(x) && return missing
148-
x in levels(pool) || _err_missing_class(x)
147+
x in levels(pool) || throw(err_missing_class(x))
149148
return pool[get(pool, x)]
150149
end
151150

test/utilities.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ end
6161
@test int(v) == 1:3
6262
levels!(v, ['c', 'a', 'b'])
6363
@test int(v) == [2, 3, 1]
64+
@test int(missing) |> ismissing
65+
v_int = int(categorical(['a', missing]))
66+
@test length(v_int) == 2
67+
@test v_int[1] == 1
68+
@test ismissing(v_int[2])
6469

6570
# Errors
6671
@test_throws DomainError int("g")
@@ -74,6 +79,10 @@ end
7479

7580
@test transform(element, missing) |> ismissing
7681

82+
# errors:
83+
@test_throws(CategoricalDistributions.err_missing_class("non-existent"),
84+
transform(element, "non-existent"))
85+
7786
raw = first(skipmissing(Xraw))
7887
c = transform(element, raw)
7988
@test Set(classes(c)) == Set(classes(X))
@@ -95,6 +104,11 @@ end
95104
@test Set(classes(C)) == Set(classes(X))
96105
@test identity.(skipmissing(C)) ==
97106
identity.(skipmissing(X[2:end-1,2:end-1]))
107+
108+
pool = CategoricalArrays.pool(element)
109+
a = transform(element, 'a')
110+
@test a == a
111+
@test a isa CategoricalValue
98112
end
99113

100114
end

0 commit comments

Comments
 (0)