@@ -1066,4 +1066,67 @@ end
1066
1066
@test missing in x
1067
1067
end
1068
1068
1069
+ @testset " Missings.replace should work on CategoricalArrays" begin
1070
+ x = categorical ([" a" , " b" , missing , " a" ])
1071
+ y = [" a" , " b" , " " , " a" ]
1072
+ r = Missings. replace (x, " " )
1073
+ @test isa (r, Missings. EachReplaceMissing)
1074
+ a = collect (r)
1075
+ @test isa (a, CategoricalVector{String})
1076
+ @test y == a
1077
+ @test levels (x) == [" a" , " b" ]
1078
+ @test levels (a) == [" a" , " b" , " " ]
1079
+
1080
+ r = Missings. replace (x, " b" )
1081
+ y = [" a" , " b" , " b" , " a" ]
1082
+ @test isa (r, Missings. EachReplaceMissing)
1083
+ a = collect (r)
1084
+ @test isa (a, CategoricalVector{String})
1085
+ @test y == a
1086
+ @test levels (x) == [" a" , " b" ]
1087
+ @test levels (a) == [" a" , " b" ]
1088
+
1089
+ @test_throws MethodError Missings. replace (x, 1 )
1090
+ end
1091
+
1092
+ @testset " Missings.replace should work on CategoricalArrays without missing values" begin
1093
+ x = categorical ([" a" , " b" , " " , " a" ])
1094
+ y = [" a" , " b" , " " , " a" ]
1095
+ r = Missings. replace (x, " dummy" )
1096
+ @test isa (r, Missings. EachReplaceMissing)
1097
+ a = collect (r)
1098
+ @test isa (a, CategoricalVector{String})
1099
+ @test y == a
1100
+ @test levels (x) == [" " , " a" , " b" ]
1101
+ @test levels (a) == [" " , " a" , " b" , " dummy" ]
1102
+
1103
+ r = Missings. replace (x, " " )
1104
+ @test isa (r, Missings. EachReplaceMissing)
1105
+ a = collect (r)
1106
+ @test isa (a, CategoricalVector{String})
1107
+ @test y == a
1108
+ @test levels (x) == [" " , " a" , " b" ]
1109
+ @test levels (a) == [" " , " a" , " b" ]
1110
+ end
1111
+
1112
+ @testset " Missings.replace should work on CategoricalArrays with empty pools" begin
1113
+ x = categorical (Union{String,Missing}[missing ])
1114
+ y = [" " ]
1115
+ r = Missings. replace (x, " " )
1116
+ @test isa (r, Missings. EachReplaceMissing)
1117
+ a = collect (r)
1118
+ @test isa (a, CategoricalVector{String})
1119
+ @test y == a
1120
+ end
1121
+
1122
+ @testset " Missings.replace should work on empty CategoricalArrays" begin
1123
+ x = categorical (Union{String,Missing}[])
1124
+ y = String[]
1125
+ r = Missings. replace (x, " " )
1126
+ @test isa (r, Missings. EachReplaceMissing)
1127
+ a = collect (r)
1128
+ @test isa (a, CategoricalVector{String})
1129
+ @test y == a
1130
+ end
1131
+
1069
1132
end
0 commit comments