diff --git a/test/test_ordered_dict.jl b/test/test_ordered_dict.jl index 3ff771d..e0d1fa9 100644 --- a/test/test_ordered_dict.jl +++ b/test/test_ordered_dict.jl @@ -3,12 +3,20 @@ using OrderedCollections, Test @testset "OrderedDict" begin @testset "Constructors" begin - @test isa(OrderedDict(), OrderedDict{Any,Any}) - @test isa(OrderedDict([(1,2.0)]), OrderedDict{Int,Float64}) - @test isa(OrderedDict([("a",1),("b",2)]), OrderedDict{String,Int}) - @test isa(OrderedDict(Pair(1, 1.0)), OrderedDict{Int,Float64}) - @test isa(OrderedDict(Pair(1, 1.0), Pair(2, 2.0)), OrderedDict{Int,Float64}) - @test isa(OrderedDict(Pair(1, 1.0), Pair(2, 2.0), Pair(3, 3.0)), OrderedDict{Int,Float64}) + @test isa(@inferred(OrderedDict()), OrderedDict{Any,Any}) + @test isa(@inferred(OrderedDict([(1,2.0)])), OrderedDict{Int,Float64}) + @test isa(@inferred(OrderedDict([("a",1),("b",2)])), OrderedDict{String,Int}) + @test isa(@inferred(OrderedDict(Pair(1, 1.0))), OrderedDict{Int,Float64}) + @test isa(@inferred(OrderedDict(Pair(1, 1.0), Pair(2, 2.0))), OrderedDict{Int,Float64}) + @test isa(@inferred(OrderedDict{Int,Float64}(Pair(1, 1), Pair(2, 2))), OrderedDict{Int,Float64}) + @test isa(@inferred(OrderedDict(Pair(1, 1.0), Pair(2, 2.0), Pair(3, 3.0))), OrderedDict{Int,Float64}) + @test OrderedDict(()) == OrderedDict{Any,Any}() + @test isa(@inferred(OrderedDict([Pair(1, 1.0), Pair(2, 2.0)])), OrderedDict{Int,Float64}) + @test_throws ArgumentError OrderedDict([1,2,3,4]) + iter = Iterators.filter(x->x.first>1, [Pair(1, 1.0), Pair(2, 2.0), Pair(3, 3.0)]) + @test @inferred(OrderedDict(iter)) == OrderedDict{Int,Float64}(2=>2.0, 3=>3.0) + iter = Iterators.drop(1:10, 1) + @test_throws ArgumentError OrderedDict(iter) end @testset "empty dictionary" begin @@ -32,6 +40,8 @@ using OrderedCollections, Test @test 'a' in keys(d) @test haskey(d, 'a') @test get(d, 'B', 0) == 0 + @test getkey(d, 'b', nothing) == 'b' + @test getkey(d, 'B', nothing) == nothing @test !('B' in keys(d)) @test !haskey(d, 'B') @test pop!(d, 'a') == 2 @@ -41,6 +51,17 @@ using OrderedCollections, Test @test collect(d) == [Pair(a,i) for (a,i) in zip('b':'z', 2:26)] end + @testset "convert" begin + d = OrderedDict{Int,Float32}(i=>Float32(i) for i = 1:10) + @test convert(OrderedDict{Int,Float32}, d) === d + dc = convert(OrderedDict{Int,Float64}, d) + @test dc !== d + @test keytype(dc) == Int + @test valtype(dc) == Float64 + @test keys(dc) == keys(d) + @test collect(values(dc)) == collect(values(d)) + end + @testset "Issue #60" begin od60 = OrderedDict{Int,Int}() od60[1] = 2 @@ -379,6 +400,7 @@ using OrderedCollections, Test sd = sort(d) @test collect(keys(sd)) == 1:10 @test collect(values(sd)) == collect('z':-1:'q') + @test sort(sd) == sd sdv = sort(d; byvalue=true) @test collect(keys(sdv)) == 10:-1:1 @test collect(values(sdv)) == collect('q':'z') diff --git a/test/test_ordered_set.jl b/test/test_ordered_set.jl index 537ca0f..152d8ff 100644 --- a/test/test_ordered_set.jl +++ b/test/test_ordered_set.jl @@ -143,7 +143,9 @@ using OrderedCollections, Test @testset "setdiff" begin @test isequal(setdiff(OrderedSet([1,2,3]), OrderedSet()), OrderedSet([1,2,3])) @test isequal(setdiff(OrderedSet([1,2,3]), OrderedSet([1])), OrderedSet([2,3])) + @test isequal(setdiff(OrderedSet([1,2,3]), Set([1])), OrderedSet([2,3])) @test isequal(setdiff(OrderedSet([1,2,3]), OrderedSet([1,2])), OrderedSet([3])) + @test isequal(setdiff(OrderedSet([1,2,3]), Set([1,2])), OrderedSet([3])) @test isequal(setdiff(OrderedSet([1,2,3]), OrderedSet([1,2,3])), OrderedSet()) @test isequal(setdiff(OrderedSet([1,2,3]), OrderedSet([4])), OrderedSet([1,2,3])) @test isequal(setdiff(OrderedSet([1,2,3]), OrderedSet([4,1])), OrderedSet([2,3]))