# Test on skipmissing failing but on collect(skipmissing) passing

**URL:** <https://discourse.julialang.org/t/test-on-skipmissing-failing-but-on-collect-skipmissing-passing/86140>\
**Category:** General Usage\
**Created:** [August 22, 2022, 3:15pm UTC](https://discourse.julialang.org/t/test-on-skipmissing-failing-but-on-collect-skipmissing-passing/86140 "2022-08-22T15:15:21Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [August 22, 2022, 3:15pm UTC](https://discourse.julialang.org/t/test-on-skipmissing-failing-but-on-collect-skipmissing-passing/86140/1 "2022-08-22T15:15:21Z")

</div>

This is odd. Why ?

```julia
julia> using Test

julia> y = [1.1 1.0 0.0 missing 8.0
             2.0 0.952381 1.0 1.0 2.0
             7.0 0.0 1.0 0.0 1.0]
3×5 Matrix{Union{Missing, Float64}}:
 1.1 1.0 0.0 missing 8.0
 2.0 0.952381 1.0 1.0 2.0
 7.0 0.0 1.0 0.0 1.0

julia> y1 = [1.1 1.0 0.0 missing 8.0
             2.0 0.952381 1.0 1.0 2.0
             7.0 0.0 1.0 0.0 1.0]
3×5 Matrix{Union{Missing, Float64}}:
 1.1 1.0 0.0 missing 8.0
 2.0 0.952381 1.0 1.0 2.0
 7.0 0.0 1.0 0.0 1.0

julia> @test skipmissing(y) == skipmissing(y1)
Test Failed at REPL[21]:1
  Expression: skipmissing(y) == skipmissing(y1)
   Evaluated: skipmissing(Union{Missing, Float64}[1.1 1.0 … missing 8.0; 2.0 0.952381 … 1.0 2.0; 7.0 0.0 … 0.0 1.0]) == skipmissing(Union{Missing, Float64}[1.1 1.0 … missing 8.0; 2.0 0.952381 … 1.0 2.0; 7.0 0.0 … 0.0 1.0])
ERROR: There was an error during testing

julia> @test collect(skipmissing(y)) == collect(skipmissing(y1))
Test Passed

```

---

<div class="post-metadata">

**Author:** ![halleysfifthinc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/halleysfifthinc/32/206280_2.png) [@halleysfifthinc](https://discourse.julialang.org/u/halleysfifthinc)\
**Post date:** [August 22, 2022, 4:09pm UTC](https://discourse.julialang.org/t/test-on-skipmissing-failing-but-on-collect-skipmissing-passing/86140/2 "2022-08-22T16:09:44Z")

</div>

```julia
julia> skipmiss_y = skipmissing(y);

julia> skipmiss_y2 = skipmissing(y2);

julia> @which skm_y == skm_y2
==(x, y) in Base at Base.jl:116
# ==(x, y) = x === y

# And also
julia> @which isequal(skm_y, skm_y2)
isequal(x, y) in Base at operators.jl:140
# isequal(x, y) = (x == y)::Bool # all `missing` cases are handled in missing.jl

```

There are no specific `==` or `isequal` methods for `SkipMissing`, so it is falling back to the default `===` which will return false since `skipmiss_y` and `skipmiss_y2` are different objects.
